summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYuya Kusakabe <yuya.kusakabe@gmail.com>2022-03-17 21:19:57 +0900
committerGitHub <noreply@github.com>2022-03-17 21:19:57 +0900
commit862d362d0ab6abbb6b01fd3055c513cd6d395fbb (patch)
treeda56ae369b36114afcbf847f03b780f44bc18e02
parentaf02e37a4701480393c233c272be5b11074db345 (diff)
parentdb1b4f2079aaa99e486b6bb935e546db7016dc2c (diff)
downloadvyos-vm-images-862d362d0ab6abbb6b01fd3055c513cd6d395fbb.tar.gz
vyos-vm-images-862d362d0ab6abbb6b01fd3055c513cd6d395fbb.zip
Merge pull request #25 from higebu/fix-vagrant-libvirt
T4278: Fix vagrant box for libvirt provider
-rw-r--r--roles/download-iso/tasks/main.yml30
-rw-r--r--roles/install-config/templates/config.boot.j211
-rw-r--r--roles/install-grub/tasks/main.yml2
-rw-r--r--roles/install-packages/tasks/main.yml5
-rw-r--r--roles/mount-iso/tasks/main.yml2
-rw-r--r--roles/mount-root-fs/tasks/main.yml32
-rw-r--r--roles/release-vagrant-box/tasks/main.yml25
-rw-r--r--roles/release-vagrant-libvirt-box/tasks/main.yml21
-rw-r--r--roles/setup-root-partition/tasks/main.yml1
-rw-r--r--roles/vagrant-libvirt-box/files/Vagrantfile4
-rw-r--r--roles/vagrant-libvirt-box/files/metadata.json6
-rw-r--r--roles/vagrant-libvirt-box/tasks/main.yml6
-rw-r--r--roles/vagrant-libvirt-box/vars/main.yml7
-rw-r--r--vagrant-libvirt.yml10
14 files changed, 95 insertions, 67 deletions
diff --git a/roles/download-iso/tasks/main.yml b/roles/download-iso/tasks/main.yml
index 198a86b..c38e49d 100644
--- a/roles/download-iso/tasks/main.yml
+++ b/roles/download-iso/tasks/main.yml
@@ -3,33 +3,3 @@
url: "{{ vyos_iso_url }}"
dest: "{{ vyos_iso_local }}"
force: no
-
-- name: Fetch VyOS ISO GPG signature
- uri:
- url: "{{ vyos_iso_url }}.asc"
- dest: "{{ vyos_iso_local }}.asc"
- status_code: 200,404,403
- tags: verify
- register: gpg_uri_iso
-
-- name: Fetch the VyOS release GPG key
- uri:
- url: "{{ vyos_key_url}}"
- dest: "{{ vyos_key_local }}"
- status_code: 200,404,403
- tags: verify
- register: gpg_uri_release_key
-
-- name: Install the VyOS release GPG key
- command: gpg --import {{ vyos_key_local }}
- when:
- - gpg_uri_iso.status == 200
- - gpg_uri_release_key.status == 200
- tags: verify
-
-- name: Validate ISO GPG signature
- command: gpg --verify {{ vyos_iso_local }}.asc {{ vyos_iso_local }}
- when:
- - gpg_uri_iso.status == 200
- - gpg_uri_release_key.status == 200
- tags: verify
diff --git a/roles/install-config/templates/config.boot.j2 b/roles/install-config/templates/config.boot.j2
index b02c07e..c0c5e80 100644
--- a/roles/install-config/templates/config.boot.j2
+++ b/roles/install-config/templates/config.boot.j2
@@ -35,6 +35,17 @@ system {
}
}
interfaces {
+{% if enable_dhcp %}
+ ethernet eth0 {
+ address dhcp
+ }
+{% endif %}
loopback lo {
}
}
+{% if enable_ssh %}
+service {
+ ssh {
+ }
+}
+{% endif %}
diff --git a/roles/install-grub/tasks/main.yml b/roles/install-grub/tasks/main.yml
index 608d002..75de819 100644
--- a/roles/install-grub/tasks/main.yml
+++ b/roles/install-grub/tasks/main.yml
@@ -31,6 +31,7 @@
path: "{{ vyos_install_root }}/boot/efi"
fstype: vfat
state: mounted
+ boot: no
when: partition_num_efi is defined
- name: Install GRUB in the boot sector of {{ vyos_target_drive }}
@@ -60,4 +61,5 @@
path: "{{ vyos_install_root }}/boot/efi"
fstype: vfat
state: absent
+ boot: no
when: partition_num_efi is defined
diff --git a/roles/install-packages/tasks/main.yml b/roles/install-packages/tasks/main.yml
index deaf215..6e157dd 100644
--- a/roles/install-packages/tasks/main.yml
+++ b/roles/install-packages/tasks/main.yml
@@ -9,13 +9,12 @@
- e2fsprogs
- gnupg
- qemu-utils
- - python-lxml
- - aufs-tools
+ - python3-lxml
- grub-efi-amd64
- grub-efi-amd64-bin
- grub-common
- isolinux
- - python-requests
+ - python3-requests
- rsync
- unzip
- zlib1g-dev
diff --git a/roles/mount-iso/tasks/main.yml b/roles/mount-iso/tasks/main.yml
index 6e6b09d..6439b15 100644
--- a/roles/mount-iso/tasks/main.yml
+++ b/roles/mount-iso/tasks/main.yml
@@ -6,6 +6,7 @@
fstype: iso9660
opts: loop,ro
state: mounted
+ boot: no
- name: Verify checksums of all the files in the ISO image
command: md5sum -c md5sum.txt
@@ -21,3 +22,4 @@
fstype: squashfs
opts: loop,ro
state: mounted
+ boot: no
diff --git a/roles/mount-root-fs/tasks/main.yml b/roles/mount-root-fs/tasks/main.yml
index 67d036d..a29dead 100644
--- a/roles/mount-root-fs/tasks/main.yml
+++ b/roles/mount-root-fs/tasks/main.yml
@@ -1,17 +1,39 @@
- name: Mount squashfs image from root partition
become: true
mount:
- name: "{{ vyos_read_root }}"
+ path: "{{ vyos_read_root }}"
src: "{{ vyos_write_root }}/boot/{{ vyos_version }}/{{ vyos_version }}.squashfs"
fstype: squashfs
opts: loop,ro
state: mounted
+ boot: no
+
+- name: Set rw directory for overlayfs
+ set_fact:
+ vyos_rw_dir: "{{ vyos_write_root }}/boot/{{ vyos_version }}/rw"
+
+- name: Create a rw directory if it does not exist
+ file:
+ path: "{{ vyos_rw_dir }}"
+ state: directory
+ mode: '0755'
+
+- name: Set work directory for overlayfs
+ set_fact:
+ vyos_work_dir: "{{ vyos_write_root }}/boot/{{ vyos_version }}/work"
+
+- name: Create a work directory if it does not exist
+ file:
+ path: "{{ vyos_work_dir }}"
+ state: directory
+ mode: '0755'
- name: Set up union root for post installation tasks
become: true
mount:
- name: "{{ vyos_install_root }}"
- src: none
- fstype: aufs
- opts: "noatime,dirs={{ vyos_write_root }}/boot/{{ vyos_version }}/rw=rw:{{ vyos_read_root }}=rr"
+ path: "{{ vyos_install_root }}"
+ src: overlay
+ fstype: overlay
+ opts: "noatime,upperdir={{ vyos_rw_dir }},lowerdir={{ vyos_read_root }},workdir={{ vyos_work_dir }}"
state: mounted
+ boot: no
diff --git a/roles/release-vagrant-box/tasks/main.yml b/roles/release-vagrant-box/tasks/main.yml
new file mode 100644
index 0000000..9dcb1de
--- /dev/null
+++ b/roles/release-vagrant-box/tasks/main.yml
@@ -0,0 +1,25 @@
+- name: Relase Vagrant Box
+ when: release
+ block:
+ - name: Check Vagrant Cloud login
+ become: no
+ command: "vagrant cloud auth login --check"
+
+ - name: Set box version for rolling release
+ set_fact:
+ box_version: "{{ vyos_version.split('-')[2][0:8] }}.{{ vyos_version.split('-')[2][8:10] }}.{{ vyos_version.split('-')[2][10:12] }}"
+ when: vyos_version.split("-") | length == 3
+
+ - name: Set box version for epa and rc
+ set_fact:
+ box_version: "{{ vyos_version.split('-')[0] }}"
+ when: vyos_version.split("-") | length == 2
+
+ - name: Set box version for LTS release
+ set_fact:
+ box_version: "{{ vyos_version }}"
+ when: vyos_version.split("-") | length == 1
+
+ - name: Publish the Vagrant box
+ become: no
+ command: "vagrant cloud publish {{ vyos_vagrant_box_name }} {{ box_version }} {{ vagrant_provider }} {{ vyos_output_img }} --version-description \"VyOS {{ vyos_version }}\" --release --force"
diff --git a/roles/release-vagrant-libvirt-box/tasks/main.yml b/roles/release-vagrant-libvirt-box/tasks/main.yml
deleted file mode 100644
index 567aea5..0000000
--- a/roles/release-vagrant-libvirt-box/tasks/main.yml
+++ /dev/null
@@ -1,21 +0,0 @@
-- name: Set box version
- set_fact:
- box_version: "{{ vyos_version.split('-')[2][0:8] }}.{{ vyos_version.split('-')[2][8:10] }}.{{ vyos_version.split('-')[2][10:12] }}"
- when: vyos_images_dir is defined and vyos_vagrant_box_base_url is defined
-- name: Create the box version
- uri:
- url: "https://app.vagrantup.com/api/v1/box/{{ vyos_vagrant_box_name }}/versions?access_token={{ vyos_vagrant_cloud_access_token }}"
- method: POST
- body: "version[version]={{ box_version }}"
- when: vyos_images_dir is defined and vyos_vagrant_box_base_url is defined and vyos_vagrant_cloud_access_token is defined
-- name: Create the box provider
- uri:
- url: "https://app.vagrantup.com/api/v1/box/{{ vyos_vagrant_box_name }}/version/{{ box_version }}/providers?access_token={{ vyos_vagrant_cloud_access_token }}"
- method: POST
- body: "provider[name]=libvirt&provider[url]={{ vyos_vagrant_box_base_url }}/vyos-{{ vyos_version }}-vagrant-libvirt.box"
- when: vyos_images_dir is defined and vyos_vagrant_box_base_url is defined and vyos_vagrant_cloud_access_token is defined
-- name: Release the box
- uri:
- url: "https://app.vagrantup.com/api/v1/box/{{ vyos_vagrant_box_name }}/version/{{ box_version }}/release?access_token={{ vyos_vagrant_cloud_access_token }}"
- method: PUT
- when: vyos_images_dir is defined and vyos_vagrant_box_base_url is defined and vyos_vagrant_cloud_access_token is defined
diff --git a/roles/setup-root-partition/tasks/main.yml b/roles/setup-root-partition/tasks/main.yml
index 436b2c5..cc832e7 100644
--- a/roles/setup-root-partition/tasks/main.yml
+++ b/roles/setup-root-partition/tasks/main.yml
@@ -71,3 +71,4 @@
fstype: "{{ vyos_root_fstype }}"
state: mounted
opts: discard
+ boot: no
diff --git a/roles/vagrant-libvirt-box/files/Vagrantfile b/roles/vagrant-libvirt-box/files/Vagrantfile
index 7c89422..7a720d0 100644
--- a/roles/vagrant-libvirt-box/files/Vagrantfile
+++ b/roles/vagrant-libvirt-box/files/Vagrantfile
@@ -1,4 +1,5 @@
Vagrant.configure("2") do |config|
+ config.vm.post_up_message = "VyOS box. See https://app.vagrantup.com/vyos for help and bug reports"
config.vm.synced_folder './', '/vagrant',
type: "rsync",
owner: 'vyos',
@@ -8,5 +9,8 @@ Vagrant.configure("2") do |config|
config.ssh.password = "vyos"
config.vm.provider :libvirt do |libvirt|
libvirt.driver = "kvm"
+ libvirt.connect_via_ssh = false
+ libvirt.username = "root"
+ libvirt.storage_pool_name = "default"
end
end
diff --git a/roles/vagrant-libvirt-box/files/metadata.json b/roles/vagrant-libvirt-box/files/metadata.json
index a502c63..e2e3fef 100644
--- a/roles/vagrant-libvirt-box/files/metadata.json
+++ b/roles/vagrant-libvirt-box/files/metadata.json
@@ -1 +1,5 @@
-{"format":"qcow2","provider":"libvirt","virtual_size":1}
+{
+ "provider" : "libvirt",
+ "format" : "qcow2",
+ "virtual_size" : 10
+}
diff --git a/roles/vagrant-libvirt-box/tasks/main.yml b/roles/vagrant-libvirt-box/tasks/main.yml
index ede229a..1dc6207 100644
--- a/roles/vagrant-libvirt-box/tasks/main.yml
+++ b/roles/vagrant-libvirt-box/tasks/main.yml
@@ -1,3 +1,9 @@
+- name: Create output directory if it does not exist
+ file:
+ path: "{{ vyos_vagrant_libvirt_dir }}"
+ state: directory
+ mode: '0777'
+
- name: Convert raw to qcow2
command: qemu-img convert -f raw "{{ vyos_raw_img }}" -O qcow2 "{{ vyos_vagrant_libvirt_box_img }}"
- name: Copy metadata.json
diff --git a/roles/vagrant-libvirt-box/vars/main.yml b/roles/vagrant-libvirt-box/vars/main.yml
index b262127..490437f 100644
--- a/roles/vagrant-libvirt-box/vars/main.yml
+++ b/roles/vagrant-libvirt-box/vars/main.yml
@@ -1,6 +1,7 @@
-vyos_vagrant_libvirt_box_img: /tmp/box.img
+vyos_vagrant_libvirt_dir: "/tmp/vyos_vagrant_libvirt"
+vyos_vagrant_libvirt_box_img: "{{ vyos_vagrant_libvirt_dir }}/box.img"
vyos_vagrant_libvirt_metadata: files/metadata.json
vyos_vagrant_libvirt_vagrantfile: files/Vagrantfile
-vyos_vagrant_libvirt_tmp_metadata: /tmp/metadata.json
-vyos_vagrant_libvirt_tmp_vagrantfile: /tmp/Vagrantfile
+vyos_vagrant_libvirt_tmp_metadata: "{{ vyos_vagrant_libvirt_dir }}/metadata.json"
+vyos_vagrant_libvirt_tmp_vagrantfile: "{{ vyos_vagrant_libvirt_dir }}/Vagrantfile"
vyos_vagrant_box_name: vyos/current
diff --git a/vagrant-libvirt.yml b/vagrant-libvirt.yml
index 954af6f..55449da 100644
--- a/vagrant-libvirt.yml
+++ b/vagrant-libvirt.yml
@@ -6,11 +6,14 @@
vars:
vyos_platform: vagrant-libvirt
vyos_format: box
- vyos_vagrant_libvirt_box: /tmp/vyos_vagrant_libvirt_image.box
+ vyos_vagrant_libvirt_box: "vyos_vagrant_libvirt_image.box"
vyos_output_img: "{{ vyos_vagrant_libvirt_box }}"
+ cloud_init: False
+ enable_dhcp: True
+ enable_ssh: True
+ vagrant_provider: libvirt
roles:
- install-packages
- - load-modules
- download-iso
- mount-iso
- get-version
@@ -24,5 +27,4 @@
- unmount-pre
- unmount-all
- vagrant-libvirt-box
- - release
- - release-vagrant-libvirt-box
+ - release-vagrant-box