diff options
| author | Yuya Kusakabe <yuya.kusakabe@gmail.com> | 2022-03-17 21:19:57 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-03-17 21:19:57 +0900 |
| commit | 862d362d0ab6abbb6b01fd3055c513cd6d395fbb (patch) | |
| tree | da56ae369b36114afcbf847f03b780f44bc18e02 | |
| parent | af02e37a4701480393c233c272be5b11074db345 (diff) | |
| parent | db1b4f2079aaa99e486b6bb935e546db7016dc2c (diff) | |
| download | vyos-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.yml | 30 | ||||
| -rw-r--r-- | roles/install-config/templates/config.boot.j2 | 11 | ||||
| -rw-r--r-- | roles/install-grub/tasks/main.yml | 2 | ||||
| -rw-r--r-- | roles/install-packages/tasks/main.yml | 5 | ||||
| -rw-r--r-- | roles/mount-iso/tasks/main.yml | 2 | ||||
| -rw-r--r-- | roles/mount-root-fs/tasks/main.yml | 32 | ||||
| -rw-r--r-- | roles/release-vagrant-box/tasks/main.yml | 25 | ||||
| -rw-r--r-- | roles/release-vagrant-libvirt-box/tasks/main.yml | 21 | ||||
| -rw-r--r-- | roles/setup-root-partition/tasks/main.yml | 1 | ||||
| -rw-r--r-- | roles/vagrant-libvirt-box/files/Vagrantfile | 4 | ||||
| -rw-r--r-- | roles/vagrant-libvirt-box/files/metadata.json | 6 | ||||
| -rw-r--r-- | roles/vagrant-libvirt-box/tasks/main.yml | 6 | ||||
| -rw-r--r-- | roles/vagrant-libvirt-box/vars/main.yml | 7 | ||||
| -rw-r--r-- | vagrant-libvirt.yml | 10 |
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 |
