bifrost/playbooks/test-bifrost.yaml

120 lines
3.5 KiB
YAML

# Example command line to use:
# Create a VM:
# ansible-playbook -vvvv -i inventory/localhost test-bifrost-create-vm.yaml
# Set BIFROST_INVENTORY_SOURCE
# export BIFROST_INVENTORY_SOURCE=/tmp/baremetal.json
# Execute the installation and VM startup test.
# ansible-playbook -vvvv -i inventory/bifrost_inventory.py test-bifrost.yaml -e use_cirros=true -e testing_user=cirros
---
- hosts: localhost
connection: local
name: "Prepare testing environment"
become: no
gather_facts: yes
tasks:
- name: "Set testing to true"
set_fact:
testing: true
- block:
- name: "Set variables if running in the CI"
set_fact:
cirros_deploy_image_upstream_url: file:///opt/cache/files/cirros-0.5.1-x86_64-disk.img
copy_from_local_path: true
git_url_root: "{{ lookup('env', 'WORKSPACE') }}"
- name: "Check if openstacksdk is cloned"
stat:
path: "{{ git_url_root }}/openstack/openstacksdk"
register: sdk_path
- name: "Use openstacksdk from source if it's cloned"
set_fact:
openstacksdk_source_install: true
when: sdk_path.stat.exists
when: lookup('env', 'ZUUL_BRANCH') | length > 0
- import_playbook: install.yaml
- import_playbook: enroll-dynamic.yaml
- hosts: baremetal
name: "Test introspection data"
become: no
connection: local
roles:
- role: bifrost-test-inspection
when: inspect_nodes | default(false) | bool
- import_playbook: deploy-dynamic.yaml
- hosts: baremetal
name: "Prepare for deployment verification"
become: no
connection: local
serial: 1
roles:
- role: bifrost-prepare-for-test-dynamic
# The testvm Host group is added by bifrost-prepare-for-test based
# on the contents of the JSON file.
- hosts: test
name: "Tests connectivity to the VM"
become: no
gather_facts: no
remote_user: "{{ testing_user }}"
serial: 1
any_errors_fatal: yes
max_fail_percentage: 0
roles:
- role: bifrost-test-vm
- import_playbook: redeploy-dynamic.yaml
when: redeploy_nodes | default(false) | bool
- hosts: baremetal
connection: local
name: "Unprovisions the test node"
become: no
gather_facts: no
roles:
- role: bifrost-unprovision-node-dynamic
wait_for_node_undeploy: true
- role: ironic-delete-dynamic
# The following tasks are intended to test DHCP functionality
- hosts: localhost
connection: local
name: "Start VMs that were not enrolled to ironic"
become: yes
vars:
not_enrolled_data_file: /tmp/baremetal.json.rest
tasks:
# NOTE(TheJulia): Moved the power ON of the excess VMs until after
# the other test VMs have been shutdown, in order to explicitly
# validate that the dhcp config is working as expected and not
# serving these requests.
- name: Power on remaining test VMs
virt:
name: "{{ item.key }}"
state: running
with_dict: "{{ lookup('file', not_enrolled_data_file) | from_json }}"
ignore_errors: yes
when: inventory_dhcp | bool
- name: Wait 30 seconds
pause:
seconds: 30
when: inventory_dhcp | bool
- hosts: localhost
connection: local
name: "Executes DHCP test script"
become: yes
gather_facts: yes
vars:
inventory_dhcp: "{{ inventory_dhcp | bool }}"
inventory_dhcp_static_ip: "{{ inventory_dhcp_static_ip | bool }}"
roles:
- { role: bifrost-test-dhcp, when: inventory_dhcp | bool }
environment:
http_proxy: "{{ lookup('env','http_proxy') }}"
https_proxy: "{{ lookup('env','https_proxy') }}"