summaryrefslogtreecommitdiff
path: root/roles
diff options
context:
space:
mode:
authorzsdc <taras@vyos.io>2021-03-18 17:51:00 +0200
committerzsdc <taras@vyos.io>2021-03-18 17:51:00 +0200
commitc3cd4a20671b5a1313b5eb8e534fd8d1cf67db9f (patch)
tree577c07b3d85f531ce6704e367c4a29f6e9a2427e /roles
parentc084415cff751d488d1460e58203ade538aea754 (diff)
downloadvyos-vm-images-c3cd4a20671b5a1313b5eb8e534fd8d1cf67db9f.tar.gz
vyos-vm-images-c3cd4a20671b5a1313b5eb8e534fd8d1cf67db9f.zip
Multiple build improvements
- Removed `empty_config` option. The config should be now always empty because Cloud-init adds required parts dynamically at the first boot. - Added ability to include any additional packages to the image, from list or deb files. - Moved common resources for multiple tasks from tasks folder to `files` and `templates` on the root folder. - Make `trim` actually works. Before this, it actually was a no-op, because RAW image mounted without the `discard` option cannot be trimmed. This significantly reduced the size of images with any additional packages inside, for example with Cloud-init. - Fixed APT repository paths, according to the new structure of `dev.packages.vyos.net`. - Added proper build repository for VyOS 1.3. It used the wrong `current` repo when should be `equuleus` now. - Removed unused `boot/grub/device.map.j2` template. - Deleted a secondary console option from the `grub.cfg.j2` template. According to testing an active console is only the latest listed, so it seems that there is no sense to keep there two items.
Diffstat (limited to 'roles')
-rw-r--r--roles/fstrim/tasks/main.yml4
-rw-r--r--roles/install-cloud-init/files/debian.list.buster7
-rw-r--r--roles/install-cloud-init/files/debian.list.jessie8
-rw-r--r--roles/install-cloud-init/files/resolv.conf1
-rw-r--r--roles/install-cloud-init/tasks/main.yml12
-rw-r--r--roles/install-config/templates/config.boot.j214
-rw-r--r--roles/install-custom-packages-wrapper/tasks/main.yml4
-rw-r--r--roles/install-custom-packages-wrapper/tests/inventory2
-rw-r--r--roles/install-custom-packages-wrapper/tests/test.yml4
-rw-r--r--roles/install-custom-packages/tasks/main.yml60
-rw-r--r--roles/install-custom-packages/tests/inventory2
-rw-r--r--roles/install-custom-packages/tests/test.yml4
-rw-r--r--roles/install-grub/templates/boot/grub/device.map.j21
-rw-r--r--roles/install-grub/templates/boot/grub/grub.cfg.j28
-rw-r--r--roles/install-guest-agent/files/debian.list.buster4
-rw-r--r--roles/install-guest-agent/files/debian.list.jessie5
-rw-r--r--roles/install-guest-agent/files/resolv.conf1
-rw-r--r--roles/install-guest-agent/tasks/main.yml8
-rw-r--r--roles/setup-root-partition/tasks/main.yml1
19 files changed, 95 insertions, 55 deletions
diff --git a/roles/fstrim/tasks/main.yml b/roles/fstrim/tasks/main.yml
index e7230a7..c0b9b19 100644
--- a/roles/fstrim/tasks/main.yml
+++ b/roles/fstrim/tasks/main.yml
@@ -1,8 +1,4 @@
# Trim filesystems to minimize resulted image
-- name: Trim {{ vyos_install_root }}/boot
- become: true
- command: fstrim {{ vyos_install_root }}/boot
-
- name: Trim {{ vyos_write_root }}
become: true
command: fstrim {{ vyos_write_root }}
diff --git a/roles/install-cloud-init/files/debian.list.buster b/roles/install-cloud-init/files/debian.list.buster
deleted file mode 100644
index fd5a770..0000000
--- a/roles/install-cloud-init/files/debian.list.buster
+++ /dev/null
@@ -1,7 +0,0 @@
-deb http://deb.debian.org/debian buster main contrib non-free
-deb-src http://deb.debian.org/debian buster main contrib non-free
-deb http://security.debian.org/debian-security/ buster/updates main contrib non-free
-deb-src http://security.debian.org/debian-security/ buster/updates main contrib non-free
-deb http://deb.debian.org/debian buster-updates main contrib non-free
-deb-src http://deb.debian.org/debian buster-updates main contrib non-free
-deb http://dev.packages.vyos.net/repositories/current current main
diff --git a/roles/install-cloud-init/files/debian.list.jessie b/roles/install-cloud-init/files/debian.list.jessie
deleted file mode 100644
index 0750699..0000000
--- a/roles/install-cloud-init/files/debian.list.jessie
+++ /dev/null
@@ -1,8 +0,0 @@
-deb http://deb.debian.org/debian jessie main contrib non-free
-deb-src http://deb.debian.org/debian jessie main contrib non-free
-deb http://security.debian.org/debian-security/ jessie/updates main contrib non-free
-deb-src http://security.debian.org/debian-security/ jessie/updates main contrib non-free
-deb http://deb.debian.org/debian jessie-updates main contrib non-free
-deb-src http://deb.debian.org/debian jessie-updates main contrib non-free
-deb http://dev.packages.vyos.net/repositories/crux/vyos crux main
-deb http://dev.packages.vyos.net/repositories/crux/debian crux main
diff --git a/roles/install-cloud-init/files/resolv.conf b/roles/install-cloud-init/files/resolv.conf
deleted file mode 100644
index 81027f8..0000000
--- a/roles/install-cloud-init/files/resolv.conf
+++ /dev/null
@@ -1 +0,0 @@
-nameserver 1.1.1.1 \ No newline at end of file
diff --git a/roles/install-cloud-init/tasks/main.yml b/roles/install-cloud-init/tasks/main.yml
index 2ae314b..ae6f67b 100644
--- a/roles/install-cloud-init/tasks/main.yml
+++ b/roles/install-cloud-init/tasks/main.yml
@@ -6,10 +6,14 @@
set_fact:
vyos_branch: "crux"
when: vyos_version is regex("^1\.2.*$")
+- name: Set VyOS branch name equuleus
+ set_fact:
+ vyos_branch: "equuleus"
+ when: vyos_version is regex("^1\.3.*$")
- name: Put debian.list
become: true
- copy:
- src: "files/debian.list.{{ debian_version.stdout }}"
+ template:
+ src: "templates/debian.list.j2"
dest: "{{ vyos_install_root }}/etc/apt/sources.list.d/debian.list"
- name: backup resolv.conf
become: true
@@ -61,7 +65,3 @@
- name: restore original resolv.conf
become: true
command: mv /tmp/resolv.conf {{ vyos_install_root }}/etc/resolv.conf
-- name: change /etc/network/interfaces to include config from Cloud-Init
- become: true
- command: chroot {{ vyos_install_root }} sed -i 's/source-directory \/etc\/network\/interfaces.d/source \/etc\/network\/interfaces.d\/*/g' /etc/network/interfaces
- when: vyos_version is regex("^1\.2.*$")
diff --git a/roles/install-config/templates/config.boot.j2 b/roles/install-config/templates/config.boot.j2
index 30506f8..852905e 100644
--- a/roles/install-config/templates/config.boot.j2
+++ b/roles/install-config/templates/config.boot.j2
@@ -10,7 +10,9 @@ system {
{% endif %}
plaintext-password ""
}
+{% if vyos_version | regex_search('(^1\.2)') %}
level admin
+{% endif %}
}
}
syslog {
@@ -33,18 +35,6 @@ system {
}
}
interfaces {
-{% if cloud_init == "true" and not ( empty_config is defined and empty_config == "true" ) %}
- ethernet eth0 {
- address dhcp
- }
-{% endif %}
loopback lo {
}
}
-{% if cloud_init == "true" and not ( empty_config is defined and empty_config == "true" ) %}
-service {
- ssh {
- port 22
- }
-}
-{% endif %}
diff --git a/roles/install-custom-packages-wrapper/tasks/main.yml b/roles/install-custom-packages-wrapper/tasks/main.yml
new file mode 100644
index 0000000..b67f73c
--- /dev/null
+++ b/roles/install-custom-packages-wrapper/tasks/main.yml
@@ -0,0 +1,4 @@
+- name: Check if we need to install custom packages
+ include_role:
+ name: install-custom-packages
+ when: custom_packages is defined
diff --git a/roles/install-custom-packages-wrapper/tests/inventory b/roles/install-custom-packages-wrapper/tests/inventory
new file mode 100644
index 0000000..878877b
--- /dev/null
+++ b/roles/install-custom-packages-wrapper/tests/inventory
@@ -0,0 +1,2 @@
+localhost
+
diff --git a/roles/install-custom-packages-wrapper/tests/test.yml b/roles/install-custom-packages-wrapper/tests/test.yml
new file mode 100644
index 0000000..085b15c
--- /dev/null
+++ b/roles/install-custom-packages-wrapper/tests/test.yml
@@ -0,0 +1,4 @@
+---
+- hosts: localhost
+ roles:
+ - install-custom-packages-wrapper
diff --git a/roles/install-custom-packages/tasks/main.yml b/roles/install-custom-packages/tasks/main.yml
new file mode 100644
index 0000000..1d8cd47
--- /dev/null
+++ b/roles/install-custom-packages/tasks/main.yml
@@ -0,0 +1,60 @@
+- name: Get Debian version
+ become: true
+ command: chroot {{ vyos_install_root }} awk 'match($0, /VERSION=.*\((\w+)\)/, version) { print version[1] }' /etc/os-release
+ register: debian_version
+- name: Set VyOS branch name crux
+ set_fact:
+ vyos_branch: "crux"
+ when: vyos_version is regex("^1\.2.*$")
+- name: Set VyOS branch name equuleus
+ set_fact:
+ vyos_branch: "equuleus"
+ when: vyos_version is regex("^1\.3.*$")
+- name: Put debian.list
+ become: true
+ template:
+ src: "templates/debian.list.j2"
+ dest: "{{ vyos_install_root }}/etc/apt/sources.list.d/debian.list"
+- name: backup resolv.conf
+ become: true
+ command: mv {{ vyos_install_root }}/etc/resolv.conf /tmp/resolv.conf
+- name: add nameserver settings to chroot
+ become: true
+ copy:
+ src: "files/resolv.conf"
+ dest: "{{ vyos_install_root }}/etc/resolv.conf"
+- name: apt-get update
+ become: true
+ command: chroot {{ vyos_install_root }} apt-get update
+- name: Copy packages to a temporary directory
+ become: true
+ copy:
+ src: "files/custom_debs/"
+ dest: "{{ vyos_install_root }}/tmp/custom_debs/"
+- name: Install custom packages from a list
+ command: chroot {{ vyos_install_root }} apt-get -t {{ vyos_branch | default('current') }} install -y --no-install-recommends {{ lookup('file', 'files/custom_packages_list.txt') }}
+- name: Check if custom debs directory exists
+ stat:
+ path: "{{ vyos_install_root }}/tmp/custom_debs/"
+ register: custom_debs_dir
+- name: Install custom packages from deb files
+ command: chroot {{ vyos_install_root }} dpkg -i --force-depends -R /tmp/custom_debs/
+ when: custom_debs_dir.stat.exists
+- name: Install missed dependencies
+ command: chroot {{ vyos_install_root }} apt-get -f -y install
+- name: Delete DEB packages
+ command: chroot {{ vyos_install_root }} rm -rf /tmp/custom_debs/
+- name: apt-get clean
+ become: true
+ command: chroot {{ vyos_install_root }} apt-get clean
+- name: delete apt lists from cache
+ become: true
+ command: chroot {{ vyos_install_root }} rm -rf /var/lib/apt/lists/
+- name: Delete debian.list
+ become: true
+ file:
+ path: "{{ vyos_install_root }}/etc/apt/sources.list.d/debian.list"
+ state: absent
+- name: restore original resolv.conf
+ become: true
+ command: mv /tmp/resolv.conf {{ vyos_install_root }}/etc/resolv.conf
diff --git a/roles/install-custom-packages/tests/inventory b/roles/install-custom-packages/tests/inventory
new file mode 100644
index 0000000..878877b
--- /dev/null
+++ b/roles/install-custom-packages/tests/inventory
@@ -0,0 +1,2 @@
+localhost
+
diff --git a/roles/install-custom-packages/tests/test.yml b/roles/install-custom-packages/tests/test.yml
new file mode 100644
index 0000000..9522565
--- /dev/null
+++ b/roles/install-custom-packages/tests/test.yml
@@ -0,0 +1,4 @@
+---
+- hosts: localhost
+ roles:
+ - install-custom-packages
diff --git a/roles/install-grub/templates/boot/grub/device.map.j2 b/roles/install-grub/templates/boot/grub/device.map.j2
deleted file mode 100644
index e14205e..0000000
--- a/roles/install-grub/templates/boot/grub/device.map.j2
+++ /dev/null
@@ -1 +0,0 @@
-(hd0) /dev/sda
diff --git a/roles/install-grub/templates/boot/grub/grub.cfg.j2 b/roles/install-grub/templates/boot/grub/grub.cfg.j2
index 45aec3b..e16194d 100644
--- a/roles/install-grub/templates/boot/grub/grub.cfg.j2
+++ b/roles/install-grub/templates/boot/grub/grub.cfg.j2
@@ -11,21 +11,21 @@ insmod efi_gop
insmod efi_uga
menuentry "VyOS {{ vyos_version }} for {{ vyos_platform }} (KVM console)" {
- linux /boot/{{ vyos_version }}/vmlinuz boot=live rootdelay=5 noautologin net.ifnames=0 biosdevname=0 vyos-union=/boot/{{ vyos_version }} console=ttyS0 console=tty0
+ linux /boot/{{ vyos_version }}/vmlinuz boot=live rootdelay=5 noautologin net.ifnames=0 biosdevname=0 vyos-union=/boot/{{ vyos_version }} console=tty0
initrd /boot/{{ vyos_version }}/initrd.img
}
menuentry "VyOS {{ vyos_version }} for {{ vyos_platform }} (Serial console)" {
- linux /boot/{{ vyos_version }}/vmlinuz boot=live rootdelay=5 noautologin net.ifnames=0 biosdevname=0 vyos-union=/boot/{{ vyos_version }} console=tty0 console=ttyS0
+ linux /boot/{{ vyos_version }}/vmlinuz boot=live rootdelay=5 noautologin net.ifnames=0 biosdevname=0 vyos-union=/boot/{{ vyos_version }} console=ttyS0
initrd /boot/{{ vyos_version }}/initrd.img
}
menuentry "VyOS {{ vyos_version }} for {{ vyos_platform }} - password reset (KVM console)" {
- linux /boot/{{ vyos_version }}/vmlinuz boot=live rootdelay=5 noautologin net.ifnames=0 biosdevname=0 vyos-union=/boot/{{ vyos_version }} console=ttyS0 console=tty0 init=/opt/vyatta/sbin/standalone_root_pw_reset
+ linux /boot/{{ vyos_version }}/vmlinuz boot=live rootdelay=5 noautologin net.ifnames=0 biosdevname=0 vyos-union=/boot/{{ vyos_version }} console=tty0 init=/opt/vyatta/sbin/standalone_root_pw_reset
initrd /boot/{{ vyos_version }}/initrd.img
}
menuentry "VyOS {{ vyos_version }} for {{ vyos_platform }} - password reset (Serial console)" {
- linux /boot/{{ vyos_version }}/vmlinuz boot=live rootdelay=5 noautologin net.ifnames=0 biosdevname=0 vyos-union=/boot/{{ vyos_version }} console=tty0 console=ttyS0 init=/opt/vyatta/sbin/standalone_root_pw_reset
+ linux /boot/{{ vyos_version }}/vmlinuz boot=live rootdelay=5 noautologin net.ifnames=0 biosdevname=0 vyos-union=/boot/{{ vyos_version }} console=ttyS0 init=/opt/vyatta/sbin/standalone_root_pw_reset
initrd /boot/{{ vyos_version }}/initrd.img
}
diff --git a/roles/install-guest-agent/files/debian.list.buster b/roles/install-guest-agent/files/debian.list.buster
deleted file mode 100644
index 4950c4e..0000000
--- a/roles/install-guest-agent/files/debian.list.buster
+++ /dev/null
@@ -1,4 +0,0 @@
-deb http://deb.debian.org/debian buster main contrib non-free
-deb http://security.debian.org/debian-security/ buster/updates main contrib non-free
-deb http://deb.debian.org/debian buster-updates main contrib non-free
-deb http://dev.packages.vyos.net/repositories/current current main
diff --git a/roles/install-guest-agent/files/debian.list.jessie b/roles/install-guest-agent/files/debian.list.jessie
deleted file mode 100644
index 885e26b..0000000
--- a/roles/install-guest-agent/files/debian.list.jessie
+++ /dev/null
@@ -1,5 +0,0 @@
-deb http://deb.debian.org/debian jessie main contrib non-free
-deb http://security.debian.org/debian-security/ jessie/updates main contrib non-free
-deb http://deb.debian.org/debian jessie-updates main contrib non-free
-deb http://dev.packages.vyos.net/repositories/crux/vyos crux main
-deb http://dev.packages.vyos.net/repositories/crux/debian crux main
diff --git a/roles/install-guest-agent/files/resolv.conf b/roles/install-guest-agent/files/resolv.conf
deleted file mode 100644
index 81027f8..0000000
--- a/roles/install-guest-agent/files/resolv.conf
+++ /dev/null
@@ -1 +0,0 @@
-nameserver 1.1.1.1 \ No newline at end of file
diff --git a/roles/install-guest-agent/tasks/main.yml b/roles/install-guest-agent/tasks/main.yml
index f636f53..3c0985c 100644
--- a/roles/install-guest-agent/tasks/main.yml
+++ b/roles/install-guest-agent/tasks/main.yml
@@ -6,10 +6,14 @@
set_fact:
vyos_branch: "crux"
when: vyos_version is regex("^1\.2.*$")
+- name: Set VyOS branch name equuleus
+ set_fact:
+ vyos_branch: "equuleus"
+ when: vyos_version is regex("^1\.3.*$")
- name: Put debian.list
become: true
- copy:
- src: "files/debian.list.{{ debian_version.stdout }}"
+ template:
+ src: "templates/debian.list.j2"
dest: "{{ vyos_install_root }}/etc/apt/sources.list.d/debian.list"
- name: backup resolv.conf
become: true
diff --git a/roles/setup-root-partition/tasks/main.yml b/roles/setup-root-partition/tasks/main.yml
index bf183f3..ff1a81b 100644
--- a/roles/setup-root-partition/tasks/main.yml
+++ b/roles/setup-root-partition/tasks/main.yml
@@ -70,3 +70,4 @@
src: "{{ vyos_target_drive }}p{{ partition_num_root }}"
fstype: "{{ vyos_root_fstype }}"
state: mounted
+ opts: discard