Unify test playbooks
We currently use fairly similar playbooks for the regular test vs the dhcp test. Consolidate these into one playbook to make things easier to maintain in the future. Add a deprecation warning indicating that the existing test playbooks will be removed in the Ocata cycle. Change-Id: Ib78821d4ebfe4125405e301b5f19b31b1e3cdbc8
This commit is contained in:
parent
a2635a4e75
commit
2e0ff6322a
21
README.rst
21
README.rst
@ -374,18 +374,17 @@ Testing with a single command
|
||||
|
||||
A simple ``scripts/test-bifrost.sh`` script can be utilized to install
|
||||
pre-requisite software packages, Ansible, and then execute the
|
||||
test-bifrost.yaml playbook in order to provide a single step testing
|
||||
mechanism.
|
||||
``test-bifrost-create-vm.yaml`` and ``test-bifrost.yaml`` playbooks in order
|
||||
to provide a single step testing mechanism.
|
||||
|
||||
The playbook utilized by the script,
|
||||
``playbooks/test-bifrost-dynamic.yaml``, is a single playbook that
|
||||
will create a local virtual machine, save a baremetal.csv file out,
|
||||
and then utilize it to execute the remaining roles. Two additional
|
||||
roles are invoked by this playbook which enables Ansible to connect to
|
||||
the new nodes by adding them to the inventory, and then logging into
|
||||
the remote machine via the user's ssh host key. Once that has
|
||||
successfully occurred, additional roles will unprovision the host(s)
|
||||
and delete them from ironic.
|
||||
``playbooks/test-bifrost-create-vm.yaml`` creates one or more VMs for
|
||||
testing and saves out a baremetal.csv file which is used by
|
||||
``playbooks/test-bifrost.yaml`` to execute the remaining roles. Two
|
||||
additional roles are invoked by this playbook which enables Ansible to
|
||||
connect to the new nodes by adding them to the inventory, and then
|
||||
logging into the remote machine via the user's ssh host key. Once
|
||||
that has successfully occurred, additional roles will unprovision the
|
||||
host(s) and delete them from ironic.
|
||||
|
||||
Command::
|
||||
|
||||
|
@ -1,2 +1,3 @@
|
||||
---
|
||||
# defaults file for bifrost-test-vm
|
||||
deprecated_test_playbook: false
|
||||
|
@ -12,6 +12,12 @@
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
---
|
||||
- name: >
|
||||
"WARNING - This playbook will be removed in the Ocata
|
||||
release. Please use test-bifrost.yaml."
|
||||
set_fact:
|
||||
deprecated: true
|
||||
when: deprecated_test_playbook | bool == true
|
||||
- name: >
|
||||
"Execute ping step to verify connectivity and login to the host.
|
||||
If this fails, the configdrive may not have loaded."
|
||||
|
@ -105,7 +105,7 @@
|
||||
any_errors_fatal: yes
|
||||
max_fail_percentage: 0
|
||||
roles:
|
||||
- role: bifrost-test-vm
|
||||
- { role: bifrost-test-vm, deprecated_test_playbook: true }
|
||||
- hosts: baremetal
|
||||
connection: local
|
||||
name: "Unprovisions the test node"
|
||||
|
@ -12,6 +12,7 @@
|
||||
become: no
|
||||
gather_facts: yes
|
||||
pre_tasks:
|
||||
- debug: msg="WARNING - This playbook will be deprecated in a future release. Please use test-bifrost.yaml."
|
||||
- name: "Set ci_testing_zuul if it appears we are running in upstream OpenStack CI"
|
||||
set_fact:
|
||||
ci_testing: true
|
||||
@ -85,7 +86,7 @@
|
||||
gather_facts: no
|
||||
remote_user: "{{ testing_user }}"
|
||||
roles:
|
||||
- role: bifrost-test-vm
|
||||
- { role: bifrost-test-vm, deprecated_test_playbook: true }
|
||||
- hosts: baremetal
|
||||
connection: local
|
||||
name: "Unprovisions the test node"
|
||||
|
155
playbooks/test-bifrost.yaml
Normal file
155
playbooks/test-bifrost.yaml
Normal file
@ -0,0 +1,155 @@
|
||||
# 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.csv
|
||||
# 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: "Setting pre-test conditions"
|
||||
become: yes
|
||||
ignore_errors: yes
|
||||
tasks:
|
||||
# NOTE(TheJulia): While the test was created to run with five VMs,
|
||||
# in the interest of keeping the active memory footprint small,
|
||||
# should stop all of the VMs in advance, so we can proceed with
|
||||
# install and initial deploy.
|
||||
- name: Attempt to stop all test VMs
|
||||
virt:
|
||||
name: "testvm{{ item }}"
|
||||
command: "stop"
|
||||
state: shutdown
|
||||
with_sequence: start=1 end={{ test_vm_num_nodes | default('5') }}
|
||||
ignore_errors: yes
|
||||
- name: Remove pre-existing leases file
|
||||
file: path=/var/lib/misc/dnsmasq.leases state=absent
|
||||
- hosts: localhost
|
||||
connection: local
|
||||
name: "Executes install, enrollment, and testing in one playbook"
|
||||
become: no
|
||||
gather_facts: yes
|
||||
pre_tasks:
|
||||
- name: "Set ci_testing_zuul if it appears we are running in upstream OpenStack CI"
|
||||
set_fact:
|
||||
ci_testing: true
|
||||
ci_testing_zuul: true
|
||||
ironic_git_url: "{{ lookup('env', 'WORKSPACE') }}/openstack/ironic"
|
||||
ironicclient_git_url: "{{ lookup('env', 'WORKSPACE') }}/openstack/python-ironicclient"
|
||||
shade_git_url: "{{ lookup('env', 'WORKSPACE') }}/openstack-infra/shade"
|
||||
dib_git_url: "/opt/git/openstack/diskimage-builder"
|
||||
# TODO(TheJulia) Fix the above paths to be consistent, because the NV job gets the dib
|
||||
# folder cloned, while the gate job does not. Likely need to work out a semi-hybrid
|
||||
# solution.
|
||||
when: lookup('env', 'ZUUL_BRANCH') | length > 0
|
||||
- name: "Set ci_testing_zuul_changes if ZUUL_CHANGES is set"
|
||||
set_fact:
|
||||
ci_testing_zuul_changes: true
|
||||
when: lookup('env', 'ZUUL_CHANGES') | length > 0
|
||||
- name: "Override the ipv4_gateway setting"
|
||||
set_fact:
|
||||
ipv4_gateway: "192.168.122.1"
|
||||
roles:
|
||||
- { role: bifrost-prep-for-install, when: skip_install is not defined }
|
||||
- { role: bifrost-openstack-ci-prep, when: ci_testing_zuul is defined }
|
||||
environment:
|
||||
http_proxy: "{{ lookup('env','http_proxy') }}"
|
||||
https_proxy: "{{ lookup('env','https_proxy') }}"
|
||||
- hosts: localhost
|
||||
connection: local
|
||||
name: "Executes install, enrollment, and testing in one playbook"
|
||||
become: yes
|
||||
gather_facts: yes
|
||||
pre_tasks:
|
||||
- name: "Collect process list if running in a CI System"
|
||||
command: ps aux
|
||||
when: ci_testing is defined
|
||||
- name: "Collect list of listening network sockets if running in a CI system"
|
||||
shell: netstat -apn|grep LISTEN
|
||||
when: ci_testing is defined
|
||||
roles:
|
||||
- role: bifrost-ironic-install
|
||||
cleaning: false
|
||||
testing: true
|
||||
# NOTE(TheJulia): While the next step creates a ramdisk, some elements
|
||||
# do not support ramdisk-image-create as they invoke steps to cleanup
|
||||
# the ramdisk which causes ramdisk-image-create to believe it failed.
|
||||
- { role: bifrost-create-dib-image, dib_imagename: "{{ http_boot_folder }}/ipa", build_ramdisk: false, dib_os_element: "{{ ipa_dib_os_element|default('debian') }}", dib_os_release: "jessie", dib_elements: "ironic-agent {{ ipa_extra_dib_elements | default('') }}", when: create_ipa_image | bool == true }
|
||||
- { role: bifrost-create-dib-image, dib_imagetype: "qcow2", dib_imagename: "{{deploy_image}}", dib_os_element: "debian", dib_os_release: "jessie", dib_elements: "vm serial-console simple-init {{ extra_dib_elements|default('') }}", when: create_image_via_dib | bool == true and transform_boot_image | bool == false }
|
||||
environment:
|
||||
http_proxy: "{{ lookup('env','http_proxy') }}"
|
||||
https_proxy: "{{ lookup('env','https_proxy') }}"
|
||||
- hosts: baremetal
|
||||
name: "Enroll node with Ironic"
|
||||
become: no
|
||||
connection: local
|
||||
roles:
|
||||
- role: ironic-enroll-dynamic
|
||||
- { role: ironic-inspect-node, when: inspect_nodes | default('false') | bool == true }
|
||||
- hosts: baremetal
|
||||
vars:
|
||||
multinode_testing: "{{ inventory_dhcp | bool == true }}"
|
||||
name: "Create configuration drive files and deploy machines."
|
||||
become: no
|
||||
connection: local
|
||||
roles:
|
||||
- role: bifrost-configdrives-dynamic
|
||||
- role: bifrost-deploy-nodes-dynamic
|
||||
- role: bifrost-prepare-for-test-dynamic
|
||||
serial: 1
|
||||
# The testvm Host group is added by bifrost-prepare-for-test based
|
||||
# on the contents of the CSV 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
|
||||
- hosts: baremetal
|
||||
connection: local
|
||||
name: "Unprovisions the test node"
|
||||
become: no
|
||||
gather_facts: no
|
||||
roles:
|
||||
- role: bifrost-unprovision-node-dynamic
|
||||
- role: ironic-delete-dynamic
|
||||
# The following tasks are intended to test DHCP functionality
|
||||
- hosts: localhost
|
||||
connection: local
|
||||
name: "Executes DHCP test script"
|
||||
become: yes
|
||||
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: "testvm{{ item }}"
|
||||
command: "start"
|
||||
with_sequence: start=4 end={{ test_vm_num_nodes | default('5') }}
|
||||
ignore_errors: yes
|
||||
when: inventory_dhcp | bool == true
|
||||
- name: Wait 30 seconds
|
||||
pause:
|
||||
seconds: 30
|
||||
when: inventory_dhcp | bool == true
|
||||
- hosts: localhost
|
||||
connection: local
|
||||
name: "Executes DHCP test script"
|
||||
become: yes
|
||||
gather_facts: yes
|
||||
vars:
|
||||
inventory_dhcp: "{{ inventory_dhcp | bool == true }}"
|
||||
inventory_dhcp_static_ip: "{{ inventory_dhcp_static_ip | bool == true }}"
|
||||
roles:
|
||||
- { role: bifrost-test-dhcp, when: inventory_dhcp | bool == true }
|
||||
environment:
|
||||
http_proxy: "{{ lookup('env','http_proxy') }}"
|
||||
https_proxy: "{{ lookup('env','https_proxy') }}"
|
||||
|
@ -0,0 +1,12 @@
|
||||
---
|
||||
|
||||
upgrade:
|
||||
- A new test playbook, test-bifrost.yaml, has been added.
|
||||
This playbook merges the functionality of the existing
|
||||
test-bifrost-dynamic.yaml and test-bifrost-dhcp.yaml
|
||||
playbooks.
|
||||
|
||||
deprecations:
|
||||
- test-bifrost-dynamic.yaml and test-bifrost-dhcp.yaml
|
||||
have been superseded by test-bifrost.yaml and will be
|
||||
removed in the Ocata release.
|
@ -26,7 +26,7 @@ VM_MEMORY_SIZE="3072"
|
||||
TEST_VM_NUM_NODES=1
|
||||
USE_CIRROS=true
|
||||
TESTING_USER=cirros
|
||||
TEST_PLAYBOOK="test-bifrost-dynamic.yaml"
|
||||
TEST_PLAYBOOK="test-bifrost.yaml"
|
||||
USE_INSPECTOR=true
|
||||
INSPECT_NODES=true
|
||||
INVENTORY_DHCP=false
|
||||
@ -70,7 +70,6 @@ if [ ${USE_DHCP} = "true" ]; then
|
||||
VM_MEMORY_SIZE="1024"
|
||||
ENABLE_INSPECTOR=false
|
||||
INSPECT_NODES=false
|
||||
TEST_PLAYBOOK="test-bifrost-dhcp.yaml"
|
||||
TEST_VM_NUM_NODES=5
|
||||
INVENTORY_DHCP=true
|
||||
INVENTORY_DHCP_STATIC_IP=true
|
||||
|
Loading…
Reference in New Issue
Block a user