summaryrefslogtreecommitdiffstats
path: root/xci/infra
diff options
context:
space:
mode:
Diffstat (limited to 'xci/infra')
-rw-r--r--xci/infra/bifrost/infra-provision.sh14
-rw-r--r--xci/infra/bifrost/playbooks/opnfv-virtual.yml4
-rw-r--r--xci/infra/bifrost/playbooks/wait-for-baremetal.yml17
-rw-r--r--xci/infra/bifrost/playbooks/xci-setup-nodes.yml9
-rwxr-xr-xxci/infra/bifrost/scripts/bifrost-env.sh10
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"