summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README.md12
-rw-r--r--hyperv.yml1
-rw-r--r--qemu.yml2
-rw-r--r--roles/cleanup-ending/tasks/main.yml8
-rw-r--r--roles/create-pxe-archive/tasks/main.yml38
-rw-r--r--roles/install-cloud-init/tasks/main.yml2
-rw-r--r--roles/install-config/templates/config.boot.j22
-rw-r--r--roles/install-packages/tasks/main.yml1
-rw-r--r--roles/unmount-all/tasks/main.yml18
-rw-r--r--roles/unmount-pre/tasks/main.yml18
-rw-r--r--roles/unmount-pre/tests/inventory2
-rw-r--r--roles/unmount-pre/tests/test.yml4
-rw-r--r--vagrant-libvirt.yml1
-rw-r--r--vmware.yml1
14 files changed, 90 insertions, 20 deletions
diff --git a/README.md b/README.md
index 677cf8a..cfc119f 100644
--- a/README.md
+++ b/README.md
@@ -87,3 +87,15 @@ You need to copy the ISO image with VyOS to /tmp/vyos.iso before running ansible
```
-e cloud_init_ds=NoCloud,ConfigDrive,None
```
+
+- Create an archive with files required to PXE boot (default: false):
+
+ ```
+ -e pxe=true
+ ```
+
+- Keep default `vyos` user with password `vyos` in configuration when building an image with Cloud-init (default: false):
+
+ ```
+ -e keep_user=true
+ ```
diff --git a/hyperv.yml b/hyperv.yml
index 75871fb..6fb699c 100644
--- a/hyperv.yml
+++ b/hyperv.yml
@@ -26,6 +26,7 @@
- install-grub
- install-persistence-conf
- install-cloud-init-wrapper
+ - unmount-pre
- unmount-all
- hyperv-vhd
- release
diff --git a/qemu.yml b/qemu.yml
index f5f79b5..86a9e60 100644
--- a/qemu.yml
+++ b/qemu.yml
@@ -26,6 +26,8 @@
- install-persistence-conf
- install-cloud-init-wrapper
- fstrim
+ - unmount-pre
+ - create-pxe-archive
- unmount-all
- qemu-qcow2
- cleanup-ending
diff --git a/roles/cleanup-ending/tasks/main.yml b/roles/cleanup-ending/tasks/main.yml
index 1b2715b..18cea29 100644
--- a/roles/cleanup-ending/tasks/main.yml
+++ b/roles/cleanup-ending/tasks/main.yml
@@ -2,3 +2,11 @@
file:
path: "{{ vyos_raw_img }}"
state: absent
+
+- name: Delete PXE folder
+ file:
+ path: "/tmp/vyos-pxe-{{ vyos_version }}{{ ci_tag | default() }}"
+ state: absent
+ when:
+ - pxe is defined
+ - pxe == "true"
diff --git a/roles/create-pxe-archive/tasks/main.yml b/roles/create-pxe-archive/tasks/main.yml
new file mode 100644
index 0000000..11dc454
--- /dev/null
+++ b/roles/create-pxe-archive/tasks/main.yml
@@ -0,0 +1,38 @@
+# Create an archive with files, required for PXE
+- name: Create directory for PXE files
+ become: true
+ file:
+ path: "/tmp/vyos-pxe-{{ vyos_version }}{{ ci_tag | default() }}"
+ state: directory
+ when:
+ - pxe is defined
+ - pxe == "true"
+
+- name: Save files required for PXE boot
+ become: true
+ copy:
+ src: "{{ vyos_write_root }}/boot/{{ vyos_version }}/{{ item }}"
+ dest: "/tmp/vyos-pxe-{{ vyos_version }}{{ ci_tag | default() }}/{{ item }}"
+ with_items:
+ - initrd.img
+ - vmlinuz
+ when:
+ - pxe is defined
+ - pxe == "true"
+
+- name: Create new squashfs image
+ become: true
+ command: "mksquashfs {{ vyos_install_root }} /tmp/vyos-pxe-{{ vyos_version }}{{ ci_tag | default() }}/filesystem.squashfs -comp gzip -no-progress -Xcompression-level 9 -e {{ vyos_install_root }}/boot -e {{ vyos_install_root }}/usr/lib/python3/dist-packages/cloudinit/config/cc_vyos.py"
+ when:
+ - pxe is defined
+ - pxe == "true"
+
+- name: Create an archive with files for PXE
+ become: true
+ archive:
+ path: "/tmp/vyos-pxe-{{ vyos_version }}{{ ci_tag | default() }}"
+ format: gz
+ dest: "/tmp/vyos-pxe-{{ vyos_version }}{{ ci_tag | default() }}.tgz"
+ when:
+ - pxe is defined
+ - pxe == "true"
diff --git a/roles/install-cloud-init/tasks/main.yml b/roles/install-cloud-init/tasks/main.yml
index d894750..39f7293 100644
--- a/roles/install-cloud-init/tasks/main.yml
+++ b/roles/install-cloud-init/tasks/main.yml
@@ -30,7 +30,7 @@
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/*
+ command: chroot {{ vyos_install_root }} rm -rf /var/lib/apt/lists/
- name: Delete debian.list
become: true
file:
diff --git a/roles/install-config/templates/config.boot.j2 b/roles/install-config/templates/config.boot.j2
index 9b3e8ec..51e95b9 100644
--- a/roles/install-config/templates/config.boot.j2
+++ b/roles/install-config/templates/config.boot.j2
@@ -3,7 +3,7 @@ system {
login {
user vyos {
authentication {
-{% if cloud_init == "true" %}
+{% if cloud_init == "true" and not ( keep_user is defined and keep_user == "true" ) %}
encrypted-password "*"
{% else %}
encrypted-password "$6$MjV2YvKQ56q$QbL562qhRoyUu8OaqrXagicvcsNpF1HssCY06ZxxghDJkBCfSfTE/4FlFB41xZcd/HqYyVBuRt8Zyq3ozJ0dc."
diff --git a/roles/install-packages/tasks/main.yml b/roles/install-packages/tasks/main.yml
index 9a143ef..8d526b5 100644
--- a/roles/install-packages/tasks/main.yml
+++ b/roles/install-packages/tasks/main.yml
@@ -13,4 +13,5 @@
- python-requests
- unzip
- zlib1g-dev
+ - squashfs-tools
state: present
diff --git a/roles/unmount-all/tasks/main.yml b/roles/unmount-all/tasks/main.yml
index e097b2b..253ffe9 100644
--- a/roles/unmount-all/tasks/main.yml
+++ b/roles/unmount-all/tasks/main.yml
@@ -16,24 +16,6 @@
fstype: none
state: absent
-- name: Unmount {{ vyos_install_root }}/sys, {{ vyos_install_root }}/proc, {{ vyos_install_root }}/dev
- become: true
- mount:
- name: "{{ vyos_install_root }}/{{ item }}"
- src: "/{{ item }}"
- fstype: none
- state: unmounted
- with_items: [ 'sys', 'proc', 'dev' ]
-
-- name: Unmount {{ vyos_install_root }}/sys, {{ vyos_install_root }}/proc, {{ vyos_install_root }}/dev
- become: true
- mount:
- name: "{{ vyos_install_root }}/{{ item }}"
- src: "/{{ item }}"
- fstype: none
- state: absent
- with_items: [ 'sys', 'proc', 'dev' ]
-
- name: Unmount {{ vyos_install_root }}
become: true
mount:
diff --git a/roles/unmount-pre/tasks/main.yml b/roles/unmount-pre/tasks/main.yml
new file mode 100644
index 0000000..12c9ae7
--- /dev/null
+++ b/roles/unmount-pre/tasks/main.yml
@@ -0,0 +1,18 @@
+# Unmount /sys /proc /dev
+- name: Unmount {{ vyos_install_root }}/sys, {{ vyos_install_root }}/proc, {{ vyos_install_root }}/dev
+ become: true
+ mount:
+ name: "{{ vyos_install_root }}/{{ item }}"
+ src: "/{{ item }}"
+ fstype: none
+ state: unmounted
+ with_items: [ 'sys', 'proc', 'dev' ]
+
+- name: Unmount {{ vyos_install_root }}/sys, {{ vyos_install_root }}/proc, {{ vyos_install_root }}/dev
+ become: true
+ mount:
+ name: "{{ vyos_install_root }}/{{ item }}"
+ src: "/{{ item }}"
+ fstype: none
+ state: absent
+ with_items: [ 'sys', 'proc', 'dev' ]
diff --git a/roles/unmount-pre/tests/inventory b/roles/unmount-pre/tests/inventory
new file mode 100644
index 0000000..878877b
--- /dev/null
+++ b/roles/unmount-pre/tests/inventory
@@ -0,0 +1,2 @@
+localhost
+
diff --git a/roles/unmount-pre/tests/test.yml b/roles/unmount-pre/tests/test.yml
new file mode 100644
index 0000000..105c5e6
--- /dev/null
+++ b/roles/unmount-pre/tests/test.yml
@@ -0,0 +1,4 @@
+---
+- hosts: localhost
+ roles:
+ - unmount-pre
diff --git a/vagrant-libvirt.yml b/vagrant-libvirt.yml
index 81d8e53..e5b9f8a 100644
--- a/vagrant-libvirt.yml
+++ b/vagrant-libvirt.yml
@@ -22,6 +22,7 @@
- install-config
- install-grub
- install-persistence-conf
+ - unmount-pre
- unmount-all
- vagrant-libvirt-box
- release
diff --git a/vmware.yml b/vmware.yml
index 6c6b8b9..3372b49 100644
--- a/vmware.yml
+++ b/vmware.yml
@@ -26,6 +26,7 @@
- install-grub
- install-persistence-conf
- install-cloud-init-wrapper
+ - unmount-pre
- unmount-all
- install-open-vmdk
- vmware-ova