diff options
Diffstat (limited to 'xci/infra')
-rw-r--r-- | xci/infra/bifrost/infra-provision.sh | 14 | ||||
-rw-r--r-- | xci/infra/bifrost/playbooks/opnfv-virtual.yml | 4 | ||||
-rw-r--r-- | xci/infra/bifrost/playbooks/wait-for-baremetal.yml | 17 | ||||
-rw-r--r-- | xci/infra/bifrost/playbooks/xci-setup-nodes.yml | 9 | ||||
-rwxr-xr-x | xci/infra/bifrost/scripts/bifrost-env.sh | 10 |
5 files changed, 49 insertions, 5 deletions
diff --git a/xci/infra/bifrost/infra-provision.sh b/xci/infra/bifrost/infra-provision.sh index 0b25f258..e60e9de0 100644 --- a/xci/infra/bifrost/infra-provision.sh +++ b/xci/infra/bifrost/infra-provision.sh @@ -54,12 +54,12 @@ ansible-playbook ${XCI_ANSIBLE_PARAMS} \ -e testing_user=root \ -e test_vm_num_nodes=${NUM_NODES} \ -e test_vm_cpu='host-model' \ - -e inventory_dhcp=false \ + -e inventory_dhcp=${BIFROST_INVENTORY_DHCP} \ -e inventory_dhcp_static_ip=false \ -e enable_inspector=true \ -e inspect_nodes=true \ - -e download_ipa=true \ - -e create_ipa_image=false \ + -e download_ipa=${BIFROST_DOWNLOAD_IPA} \ + -e create_ipa_image=${BIFROST_CREATE_IPA} \ -e write_interfaces_file=true \ -e ipv4_gateway=192.168.122.1 \ -e wait_timeout=3600 \ @@ -76,6 +76,14 @@ ansible-playbook ${XCI_ANSIBLE_PARAMS} \ -e ironic_url="http://192.168.122.2:6385/" \ ${BIFROST_ROOT_DIR}/playbooks/opnfv-virtual.yml + +if [ "${BAREMETAL}" = true ]; then + ansible-playbook ${XCI_ANSIBLE_PARAMS} \ + --user=devuser -i ${XCI_PATH}/xci/playbooks/dynamic_inventory.py \ + -i ${XCI_CACHE}/repos/bifrost/playbooks/inventory/bifrost_inventory.py \ + ${BIFROST_ROOT_DIR}/playbooks/wait-for-baremetal.yml +fi + echo "-----------------------------------------------------------------------" echo "Info: VM nodes are provisioned!" echo "-----------------------------------------------------------------------" diff --git a/xci/infra/bifrost/playbooks/opnfv-virtual.yml b/xci/infra/bifrost/playbooks/opnfv-virtual.yml index 8dfd9db7..313919ba 100644 --- a/xci/infra/bifrost/playbooks/opnfv-virtual.yml +++ b/xci/infra/bifrost/playbooks/opnfv-virtual.yml @@ -77,11 +77,11 @@ enabled_hardware_types: ipmi network_interface: "{{ ansible_default_ipv4.interface }}" # Create the IPA image for ironic to boot the nodes and write the final distro in the hard drive + # fedora is used because it is the only one working with ericsson-pod2 (it has support for newer hardware) - 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_os_element: "{{ ipa_dib_os_element|default('fedora') }}" dib_elements: "ironic-agent {{ ipa_extra_dib_elements | default('') }}" dib_notmpfs: true when: diff --git a/xci/infra/bifrost/playbooks/wait-for-baremetal.yml b/xci/infra/bifrost/playbooks/wait-for-baremetal.yml new file mode 100644 index 00000000..cb42cc49 --- /dev/null +++ b/xci/infra/bifrost/playbooks/wait-for-baremetal.yml @@ -0,0 +1,17 @@ +# ironic needs to boot the server again to install the OS in the hard drive +# we are currently modifying opnfv vm networking config while ironic is +# doing that and it sometimes fail because of networking glitches. We should +# wait until the OS is installed to do the opnfv config + +- hosts: baremetal + name: "Wait for baremetal blades to be ready" + become: no + gather_facts: False + tasks: + - name: "Wait for nodes to reboot." + wait_for: state=stopped port=22 host={{ ipv4_address }} timeout=240 + delegate_to: opnfv + - name: "Wait for nodes to become available." + wait_for: state=started port=22 host={{ ipv4_address }} timeout=3600 + delegate_to: opnfv + diff --git a/xci/infra/bifrost/playbooks/xci-setup-nodes.yml b/xci/infra/bifrost/playbooks/xci-setup-nodes.yml index 9c9c1016..aaa50997 100644 --- a/xci/infra/bifrost/playbooks/xci-setup-nodes.yml +++ b/xci/infra/bifrost/playbooks/xci-setup-nodes.yml @@ -39,6 +39,15 @@ port: 22 connect_timeout: 10 timeout: 180 + # No ansible module for brctl found + - name: Add pxe interface to the bridge + shell: "brctl addif {{ item.bridge }} {{ item.interface }}" + become: true + when: baremetal | bool == true + with_items: + - { bridge: "{{ network_bridge_admin }}", interface: "{{ network_interface_admin }}" } + - { bridge: "{{ network_bridge_mgmt }}", interface: "{{ network_interface_mgmt }}" } + - name: Load distribution variables include_vars: file: "{{ xci_path }}/xci/var/{{ ansible_os_family }}.yml" diff --git a/xci/infra/bifrost/scripts/bifrost-env.sh b/xci/infra/bifrost/scripts/bifrost-env.sh index 72d1dafe..7d882125 100755 --- a/xci/infra/bifrost/scripts/bifrost-env.sh +++ b/xci/infra/bifrost/scripts/bifrost-env.sh @@ -30,4 +30,14 @@ esac export BIFROST_INVENTORY_SOURCE=/tmp/baremetal.json +if [ "${BAREMETAL}" = true ]; then + export BIFROST_INVENTORY_DHCP=true + export BIFROST_DOWNLOAD_IPA=false + export BIFROST_CREATE_IPA=true +else + export BIFROST_INVENTORY_DHCP=false + export BIFROST_DOWNLOAD_IPA=true + export BIFROST_CREATE_IPA=false +fi + pip install -q --upgrade -r "${XCI_CACHE}/repos/bifrost/requirements.txt" |