Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions tasks/config.yml
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
---
- name: Prepare the configuration directory
file:
ansible.builtin.file:
path: ~/.config/virt-lightning
state: directory

- name: Write the configuration file
template:
ansible.builtin.template:
src: config.ini.j2
dest: ~/.config/virt-lightning/config.ini
15 changes: 8 additions & 7 deletions tasks/image.yml
Original file line number Diff line number Diff line change
@@ -1,22 +1,23 @@
---
- name: Install Ansible's virt dependencies
package:
become: true
ansible.builtin.package:
name:
- python-libvirt
- python-lxml
become: true

- name: Record the storage pool location
shell: |
~/.local/bin/vl storage_dir
environment:
PATH: "{{ ansible_env.PATH }}:{{ ansible_env.HOME }}/.local/bin"
register: storage_dir
ansible.builtin.shell: |
~/.local/bin/vl storage_dir

- name: Build the images
shell: |
cd ~/virt-lightning/images
MIRROR_URL=http://192.168.123.1 ./image centos-7 download
environment:
PATH: "{{ ansible_env.PATH }}:{{ ansible_env.HOME }}/.local/bin"
args:
creates: "{{ storage_dir.stdout }}/upstream/centos-7.qcow2"
ansible.builtin.shell: |
cd ~/virt-lightning/images
MIRROR_URL=http://192.168.123.1 ./image centos-7 download
25 changes: 14 additions & 11 deletions tasks/install.yml
Original file line number Diff line number Diff line change
@@ -1,27 +1,30 @@
---
- name: Install the virt-lightning dependencies
package:
name: "{{ virt_lightning_packages }}"
become: true
ansible.builtin.package:
name: "{{ virt_lightning_packages }}"

- name: Install git, setup.py needs it
package:
name: git
become: true
ansible.builtin.package:
name: git

- name: Install the dependencies of the Ansible modules
package:
become: true
ansible.builtin.package:
name:
- python-libvirt
- python-lxml
- rsync
become: true

- name: Start libvirt
service:
become: true
ansible.builtin.service:
name: libvirtd
state: started
become: true

- name: Add the fine users to the current users
user:
name: "{{ansible_user_id}}"
groups: "{{ virt_lightning_groups }}"
become: true
ansible.builtin.user:
name: "{{ ansible_user_id }}"
groups: "{{ virt_lightning_groups }}"
41 changes: 24 additions & 17 deletions tasks/main.yml
Original file line number Diff line number Diff line change
@@ -1,22 +1,29 @@
---
- name: gather os specific variables
include_vars: "{{ item }}"
- name: Gather os specific variables
with_first_found:
- "{{ ansible_distribution }}-{{ ansible_distribution_version}}.yml"
- "{{ ansible_distribution }}-{{ ansible_distribution_major_version}}.yml"
- "{{ ansible_distribution }}-{{ ansible_distribution_version }}.yml"
- "{{ ansible_distribution }}-{{ ansible_distribution_major_version }}.yml"
- "{{ ansible_distribution }}.yml"
- name: install
import_tasks: install.yml
- name: reset ssh connection to reload the groups
meta: reset_connection
ansible.builtin.include_vars: "{{ item }}"

- name: Install
ansible.builtin.import_tasks: install.yml

- name: Reset ssh connection to reload the groups
ansible.builtin.meta: reset_connection

- name: Prepare for qemu:///system
import_tasks: prepare_system.yml
- name: venv
import_tasks: venv.yml
- name: config
import_tasks: config.yml
- name: prepare an image
import_tasks: image.yml
- name: test
import_tasks: test.yml
ansible.builtin.import_tasks: prepare_system.yml

- name: Venv
ansible.builtin.import_tasks: venv.yml

- name: Config
ansible.builtin.import_tasks: config.yml

- name: Prepare an image
ansible.builtin.import_tasks: image.yml

- name: Test
when: virt_lightning_run_tests
ansible.builtin.import_tasks: test.yml
13 changes: 7 additions & 6 deletions tasks/prepare_system.yml
Original file line number Diff line number Diff line change
@@ -1,19 +1,20 @@
---
- name: Write the polkit configuration
template:
src: polkit.rules.j2
dest: /etc/polkit-1/rules.d/80-libvirt.rules
become: true
when:
- ansible_distribution == "Fedora"
ansible.builtin.template:
src: polkit.rules.j2
dest: /etc/polkit-1/rules.d/80-libvirt.rules

- name: Create the pool directory
file:
become: true
ansible.builtin.file:
path: "{{ item }}"
state: directory
owner: "{{ virt_lightning_qemu_owner }}"
group: "{{ virt_lightning_qemu_group }}"
mode: "0775"
with_items:
loop:
- /var/lib/virt-lightning/pool
- /var/lib/virt-lightning/pool/upstream
become: true
35 changes: 21 additions & 14 deletions tasks/test.yml
Original file line number Diff line number Diff line change
@@ -1,42 +1,49 @@
---
- name: Generate a SSH key
command: ssh-keygen -q -t rsa -C "" -N "" -f ~/.ssh/id_rsa
args:
creates: ~/.ssh/id_rsa
ansible.builtin.command: ssh-keygen -q -t rsa -C "" -N "" -f ~/.ssh/id_rsa

- name: Start the environment
shell: |
environment:
PATH: "{{ ansible_env.PATH }}:{{ ansible_env.HOME }}/.local/bin"
ansible.builtin.shell: |
set -eux
echo $PATH
vl distro_list > virt-lightning.yaml
vl up
vl ansible_inventory > inventory
environment:
PATH: "{{ ansible_env.PATH }}:{{ ansible_env.HOME }}/.local/bin"

- name: Install Ansible
package:
name: ansible
become: true
ansible.builtin.package:
name: ansible

- name: Test the new VM
shell: |
ansible all -m shell -a "ping -c 1 google.ca" -i inventory
environment:
PATH: "{{ ansible_env.PATH }}:{{ ansible_env.HOME }}/.local/bin"
ansible.builtin.shell: |
ansible all -m shell -a "ping -c 1 google.ca" -i inventory

- name: List the VM
command: virsh -c {{ virt_lightning_qemu_uri }} list
register: list_vm
ansible.builtin.command: virsh -c {{ virt_lightning_qemu_uri }} list

- name: Assert the VM is in the list
assert:
ansible.builtin.assert:
that:
- "'centos' in list_vm.stdout"

- name: Destroy the environment
shell: |
vl down
environment:
PATH: "{{ ansible_env.PATH }}:{{ ansible_env.HOME }}/.local/bin"
ansible.builtin.shell: |
vl down

- name: List the VM
command: virsh -c {{ virt_lightning_qemu_uri }} list
ansible.builtin.command: virsh -c {{ virt_lightning_qemu_uri }} list
register: list_vm
- name: Assert the VM is not in the list
assert:
ansible.builtin.assert:
that:
- "'centos' not in list_vm.stdout"
12 changes: 7 additions & 5 deletions tasks/venv.yml
Original file line number Diff line number Diff line change
@@ -1,15 +1,17 @@
---
- name: Push the working directory
synchronize:
when: dev_mode is defined
ansible.posix.synchronize:
src: ../../virt-lightning
dest: ~/
when: dev_mode is defined

- name: Fetch virt-lightning master branch
git:
when: dev_mode is not defined
ansible.builtin.git:
repo: https://github.com/virt-lightning/virt-lightning
dest: ~/virt-lightning
when: dev_mode is not defined

- name: Pip install
# --no-deps because of Ubuntu: https://github.com/pypa/pip/issues/4222
shell: |
ansible.builtin.command: |-
pip3 install --no-deps --user ~/virt-lightning