summaryrefslogtreecommitdiffstats
path: root/playbooks/roles/jump-vm
diff options
context:
space:
mode:
authorMichael S. Pedersen <michaelx.pedersen@intel.com>2020-10-23 12:24:43 +0000
committerRihab Banday <rihab.banday@ericsson.com>2020-11-13 16:24:54 +0000
commit5d28b70edce08ee912c433386599424f8202f303 (patch)
tree98c1246797f5a03f9417d6e1e6843f5bd90e8e09 /playbooks/roles/jump-vm
parente34b4d93d5e288bdbb5ec798602ea5e8f1bc3985 (diff)
Add support for deploying to Equinix Metal bare-metal servers
Adds an additional hw_config which is simplified (equinix-metal). Adds support for skipping HW provisioning (pre-provisioned through EM). Usage: deploy.sh [k8s] Adds a few new helper functions, and updates existing to support changes. Signed-off-by: Michael S. Pedersen <michaelx.pedersen@intel.com> Signed-off-by: Victor Morales <v.morales@samsung.com> Change-Id: I2f84c662d183ba224e0edd8a218abe8b46c1fe45 Signed-off-by: Victor Morales <v.morales@samsung.com> Reviewed-on: https://gerrit.opnfv.org/gerrit/c/kuberef/+/71301 Tested-by: jenkins-ci <jenkins-opnfv-ci@opnfv.org> Reviewed-by: Rihab Banday <rihab.banday@ericsson.com> Reviewed-by: Victor Morales <chipahuac@hotmail.com>
Diffstat (limited to 'playbooks/roles/jump-vm')
-rw-r--r--playbooks/roles/jump-vm/tasks/main.yaml32
-rw-r--r--playbooks/roles/jump-vm/templates/network-config.j22
-rw-r--r--playbooks/roles/jump-vm/templates/user-data.j227
3 files changed, 44 insertions, 17 deletions
diff --git a/playbooks/roles/jump-vm/tasks/main.yaml b/playbooks/roles/jump-vm/tasks/main.yaml
index 2c0cc37..c5738c3 100644
--- a/playbooks/roles/jump-vm/tasks/main.yaml
+++ b/playbooks/roles/jump-vm/tasks/main.yaml
@@ -33,6 +33,16 @@
when:
jumphost.name in shutdown_vms.list_vms
+- name: remove dhcp leases
+ shell: |
+ jq 'del( .[] | select(.domain == "{{ jumphost.name }}" or .hostname == "{{ jumphost.name }}"))' /var/lib/libvirt/dnsmasq/virbr0.{{ item }} > /tmp/{{ item }}.tmp
+ mv /tmp/{{ item }}.tmp /var/lib/libvirt/dnsmasq/virbr0.{{ item }}
+ with_items:
+ - status
+ - macs
+ become: true
+ when: deployment_type == 'k8s'
+
- name: clean workspace
file:
path: "{{ workspace }}"
@@ -71,8 +81,9 @@
- meta-data
- name: create config drive
- command: "genisoimage -output {{ workspace }}/{{ jumphost.name }}-cidata.iso -volid cidata -joliet -rock \
- {{ workspace }}/user-data {{ workspace }}/meta-data {{ workspace }}/network-config"
+ command: "genisoimage -output {{ workspace }}/{{ jumphost.name }}-cidata.iso -volid cidata -joliet -rock \
+ {{ workspace }}/user-data {{ workspace }}/meta-data \
+ {{ workspace + '/network-config' if deployment_type == 'full' else '' }}"
# currently commented out because of portability issues between Centos and Ubuntu
# - name: setting root password for debugging
@@ -85,7 +96,7 @@
--disk path={{ workspace }}/kuberef-jump.qcow2,format=qcow2 \
--disk {{ workspace }}/kuberef-jump-cidata.iso,device=cdrom \
--network network=default,model=virtio,mac='{{ jumphost.interfaces[engine.net_config[engine.public_network].interface].mac_address }}' \
- --network bridge=pxebr,model=rtl8139,mac='{{ jumphost.interfaces[engine.net_config[engine.pxe_network].interface].mac_address }}' \
+ {{ '--network bridge=pxebr,model=rtl8139,mac=' + jumphost.interfaces[engine.net_config[engine.pxe_network].interface].mac_address if deployment_type == 'full' else '' }} \
--import --noautoconsole"
- name: start jump VM
@@ -93,7 +104,20 @@
name: "{{ jumphost.name }}"
state: running
+- name: wait for ip to be visible
+ shell: virsh domifaddr "{{ jumphost.name }}" --full | grep "{{ jumphost.interfaces[engine.net_config[engine.public_network].interface].mac_address }}" | awk '{print $4}' | tail -n 1
+ register: ipblock
+ retries: 30
+ delay: 1
+ until: ipblock.stdout != ""
+ when: deployment_type == 'k8s'
+
+- name: store ip
+ set_fact:
+ vm_ip: "{{ ipblock.stdout.split('/') }}"
+ when: deployment_type == 'k8s'
+
- name: wait for VM to be reachable
wait_for:
- host: "{{ jumphost.interfaces[idf.net_config[engine.pxe_network].interface].address }}"
+ host: "{{ ( vm_ip is defined and vm_ip.0 or '' ) if 'k8s' in deployment_type else jumphost.interfaces[idf.net_config[engine.pxe_network].interface].address | default('') }}"
port: 22
diff --git a/playbooks/roles/jump-vm/templates/network-config.j2 b/playbooks/roles/jump-vm/templates/network-config.j2
index ceded54..8587a10 100644
--- a/playbooks/roles/jump-vm/templates/network-config.j2
+++ b/playbooks/roles/jump-vm/templates/network-config.j2
@@ -1,3 +1,4 @@
+{% if deployment_type == 'full' %}
version: 1
config:
- type: physical
@@ -12,3 +13,4 @@ config:
- type: static
address: "{{ jumphost.interfaces[idf.net_config[engine.pxe_network].interface].address }}"
netmask: "{{ idf.net_config[engine.pxe_network].mask }}"
+{% endif %}
diff --git a/playbooks/roles/jump-vm/templates/user-data.j2 b/playbooks/roles/jump-vm/templates/user-data.j2
index 648f8d1..2fad2e3 100644
--- a/playbooks/roles/jump-vm/templates/user-data.j2
+++ b/playbooks/roles/jump-vm/templates/user-data.j2
@@ -1,13 +1,14 @@
- #cloud-config
- users:
- - name: ubuntu
- ssh-authorized-keys:
- - {{ lookup('file', pub_key ) }}
- sudo: ['ALL=(ALL) NOPASSWD:ALL']
- groups: sudo
- shell: /bin/bash
- runcmd:
- # this is requried in labs where the PXE network is different from
- # the public network. Without internet connectivity, the installation
- # of BMRA fails
- - [ iptables, -t, nat, -A, POSTROUTING, -o, ens3, -j, MASQUERADE ]
+#jinja2:lstrip_blocks: True
+#cloud-config
+users:
+ - name: {{ lookup('env', 'USERNAME') }}
+ ssh-authorized-keys:
+ - {{ lookup('file', pub_key ) }}
+ sudo: ['ALL=(ALL) NOPASSWD:ALL']
+ groups: sudo
+ shell: /bin/bash
+runcmd:
+ # this is requried in labs where the PXE network is different from
+ # the public network. Without internet connectivity, the installation
+ # of BMRA fails
+ - [ iptables, -t, nat, -A, POSTROUTING, -o, ens3, -j, MASQUERADE ]