tripleo-heat-templates/ci/common/vbmc_setup.yaml

59 lines
2.4 KiB
YAML

heat_template_version: rocky
parameters:
servers:
type: json
EndpointMap:
default: {}
description: Mapping of service endpoint -> protocol. Typically set
via parameter_defaults in the resource registry.
type: json
resources:
ExtraConfig:
type: OS::Heat::SoftwareConfig
properties:
group: script
config: |
#!/bin/bash
cd /etc/yum.repos.d
echo 'nameserver 1.1.1.1' > /etc/resolv.conf
curl https://opendev.org/openstack/tripleo-repos/raw/branch/master/tripleo_repos/main.py | python - current-tripleo
yum install -y python2-virtualbmc epel-release libvirt-client libvirt-daemon libvirt qemu-kvm-ev
yum install -y qemu-system-x86 # <-- needs epel
yum remove -y epel-release
systemctl start libvirtd
git clone https://opendev.org/openstack/ironic /tmp/ironic
mkdir -p /var/log/bmlogs
chmod 777 /var/log/bmlogs
# Create a ssh keypair and place the private key somewhere ansible inside the
# neutron_api container can read it.
ssh-keygen -P "" -f /etc/puppet/ci-key
chmod 644 /etc/puppet/ci-key
cat /etc/puppet/ci-key.pub >> /root/.ssh/authorized_keys
# neutron_api workaround for https://github.com/ansible/ansible/issues/42108
# remove when ansible v2.5.8+ is in the container image
cat << EOF | docker exec -i -u 0 neutron_api /bin/bash -x
yum install -y epel-release
yum update -y ansible
EOF
docker restart neutron_api
# nohup needed as vbmc seems to keep stdin open
nohup /tmp/ironic/devstack/tools/ironic/scripts/create-node.sh -n node1 -c 1 -m 3072 -d 10 -b br-ex -p 1161 -M 1350 -f qcow2 -a x86_64 -E qemu -e /usr/bin/qemu-system-x86_64 -l /var/log/bmlogs -A 66:0d:1d:d8:0b:11 > ~zuul/create-node-1.log 2>&1 < /dev/null
nohup /tmp/ironic/devstack/tools/ironic/scripts/create-node.sh -n node2 -c 1 -m 3072 -d 10 -b br-ex -p 1162 -M 1350 -f qcow2 -a x86_64 -E qemu -e /usr/bin/qemu-system-x86_64 -l /var/log/bmlogs -A 66:0d:1d:d8:0b:22 > ~zuul/create-node-2.log 2>&1 < /dev/null &
disown -a
ExtraDeployments:
type: OS::Heat::SoftwareDeploymentGroup
properties:
servers: {get_param: servers}
config: {get_resource: ExtraConfig}
actions: ['CREATE'] # Only do this on CREATE
name: VirtNodeExtraConfig