diff options
Diffstat (limited to 'mcp/scripts')
-rw-r--r-- | mcp/scripts/lib.sh | 38 | ||||
-rwxr-xr-x | mcp/scripts/salt.sh | 12 | ||||
-rw-r--r-- | mcp/scripts/user-data.template | 8 |
3 files changed, 36 insertions, 22 deletions
diff --git a/mcp/scripts/lib.sh b/mcp/scripts/lib.sh index 3f740589d..1812663d3 100644 --- a/mcp/scripts/lib.sh +++ b/mcp/scripts/lib.sh @@ -4,25 +4,28 @@ # generate_ssh_key() { + # shellcheck disable=SC2155 + local mcp_ssh_key=$(basename "${SSH_KEY}") local user=${USER} if [ -n "${SUDO_USER}" ] && [ "${SUDO_USER}" != 'root' ]; then user=${SUDO_USER} fi - if [ -f "/tmp/${SSH_KEY}" ]; then - cp "/tmp/${SSH_KEY}" . - ssh-keygen -f "${SSH_KEY}" -y > "${SSH_KEY}.pub" + if [ -f "${SSH_KEY}" ]; then + cp "${SSH_KEY}" . + ssh-keygen -f "${mcp_ssh_key}" -y > "${mcp_ssh_key}.pub" fi - [ -f "${SSH_KEY}" ] || ssh-keygen -f "${SSH_KEY}" -N '' - install -o "${user}" -m 0600 "${SSH_KEY}" /tmp/ + [ -f "${mcp_ssh_key}" ] || ssh-keygen -f "${mcp_ssh_key}" -N '' + install -D -o "${user}" -m 0600 "${mcp_ssh_key}" "${SSH_KEY}" } get_base_image() { local base_image=$1 + local image_dir=$2 - mkdir -p images - wget -P /tmp -N "${base_image}" + mkdir -p "${image_dir}" + wget -P "${image_dir}" -N "${base_image}" } cleanup_vms() { @@ -38,17 +41,19 @@ cleanup_vms() { prepare_vms() { local -n vnodes=$1 local base_image=$2 + local image_dir=$3 cleanup_vms - get_base_image "${base_image}" - envsubst < user-data.template > user-data.sh + get_base_image "${base_image}" "${image_dir}" + envsubst '${SALT_MASTER},${CLUSTER_DOMAIN}' < \ + user-data.template > user-data.sh for node in "${vnodes[@]}"; do # create/prepare images - ./create-config-drive.sh -k "${SSH_KEY}.pub" -u user-data.sh \ - -h "${node}" "images/mcp_${node}.iso" - cp "/tmp/${base_image/*\/}" "images/mcp_${node}.qcow2" - qemu-img resize "images/mcp_${node}.qcow2" 100G + ./create-config-drive.sh -k "$(basename "${SSH_KEY}").pub" -u user-data.sh \ + -h "${node}" "${image_dir}/mcp_${node}.iso" + cp "${image_dir}/${base_image/*\/}" "${image_dir}/mcp_${node}.qcow2" + qemu-img resize "${image_dir}/mcp_${node}.qcow2" 100G done } @@ -76,6 +81,7 @@ create_vms() { local -n vnodes_ram=$2 local -n vnodes_vcpus=$3 local -n vnode_networks=$4 + local image_dir=$5 # AArch64: prepare arch specific arguments local virt_extra_args="" @@ -105,10 +111,10 @@ create_vms() { virt-install --name "${node}" \ --ram "${vnodes_ram[$node]}" --vcpus "${vnodes_vcpus[$node]}" \ --cpu host-passthrough --accelerate ${net_args} \ - --disk path="$(pwd)/images/mcp_${node}.qcow2",format=qcow2,bus=virtio,cache=none,io=native \ + --disk path="${image_dir}/mcp_${node}.qcow2",format=qcow2,bus=virtio,cache=none,io=native \ --os-type linux --os-variant none \ --boot hd --vnc --console pty --autostart --noreboot \ - --disk path="$(pwd)/images/mcp_${node}.iso",device=cdrom \ + --disk path="${image_dir}/mcp_${node}.iso",device=cdrom \ --noautoconsole \ ${virt_extra_args} done @@ -116,7 +122,9 @@ create_vms() { update_mcpcontrol_network() { # set static ip address for salt master node, MaaS node + # shellcheck disable=SC2155 local cmac=$(virsh domiflist cfg01 2>&1| awk '/mcpcontrol/ {print $5; exit}') + # shellcheck disable=SC2155 local amac=$(virsh domiflist mas01 2>&1| awk '/mcpcontrol/ {print $5; exit}') virsh net-update "mcpcontrol" add ip-dhcp-host \ "<host mac='${cmac}' name='cfg01' ip='${SALT_MASTER}'/>" --live diff --git a/mcp/scripts/salt.sh b/mcp/scripts/salt.sh index 9f88f1c77..4fa54ab1c 100755 --- a/mcp/scripts/salt.sh +++ b/mcp/scripts/salt.sh @@ -17,7 +17,7 @@ OPNFV_TMP_DIR="/home/${SALT_MASTER_USER}/fuel" OPNFV_FUEL_DIR="/root/fuel" # patch reclass-system-salt-model locally before copying it over -make -C "${F_GIT_ROOT}/mcp/patches" patches-import +make -C "${F_GIT_ROOT}/mcp/patches" deepclean patches-import # push to cfg01 current git repo first (including submodules), at ~ubuntu/fuel # later we move it to ~root/fuel and delete the temporary clone @@ -34,19 +34,21 @@ ssh ${SSH_OPTS} "${SSH_SALT}" bash -s << SALT_INSTALL_END while [ ! -f /var/lib/cloud/instance/boot-finished ]; do echo -n '.'; sleep 1; done echo ' done' - DEBIAN_FRONTEND=noninteractive apt-get install -y git curl - - git clone --depth=1 https://github.com/salt-formulas/salt-formulas-scripts /srv/salt/scripts + mkdir -p /srv/salt /usr/share/salt-formulas/reclass mv ${OPNFV_TMP_DIR} ${OPNFV_FUEL_DIR} && chown -R root.root ${OPNFV_FUEL_DIR} ln -s ${OPNFV_FUEL_DIR}/mcp/reclass /srv/salt/reclass + ln -s ${OPNFV_FUEL_DIR}/mcp/deploy/scripts /srv/salt/scripts - mkdir -p /usr/share/salt-formulas/reclass cp -r ${OPNFV_FUEL_DIR}/mcp/metadata/service /usr/share/salt-formulas/reclass cd /srv/salt/reclass/classes/service && \ ln -s /usr/share/salt-formulas/reclass/service/opendaylight cd ${OPNFV_FUEL_DIR}/mcp/patches && ./patch.sh patches.list reclass cd /srv/salt/scripts + if [ "\$(uname -i)" = "aarch64" ]; then + # NOTE(armband): On AArch64, skip creating apt source list definitions (-r) + export BOOTSTRAP_SALTSTACK_OPTS=" -r -dX stable 2016.11 " + fi MASTER_HOSTNAME=cfg01.${CLUSTER_DOMAIN} DISTRIB_REVISION=nightly ./salt-master-init.sh salt-key -Ay diff --git a/mcp/scripts/user-data.template b/mcp/scripts/user-data.template index cc97a6027..292c37c0c 100644 --- a/mcp/scripts/user-data.template +++ b/mcp/scripts/user-data.template @@ -1,6 +1,10 @@ #!/bin/bash -wget -O - https://repo.saltstack.com/apt/ubuntu/16.04/amd64/2016.11/SALTSTACK-GPG-KEY.pub | sudo apt-key add - -echo "deb http://repo.saltstack.com/apt/ubuntu/16.04/amd64/2016.11 xenial main" > /etc/apt/sources.list.d/salt.list +SALT_REPO=repo.saltstack.com/apt/ubuntu/16.04/amd64/2016.11 +if [ "$(uname -i)" = "aarch64" ]; then + SALT_REPO=linux.enea.com/saltstack/apt/ubuntu/16.04/arm64/2016.11 +fi +wget -O - "https://${SALT_REPO}/SALTSTACK-GPG-KEY.pub" | sudo apt-key add - +echo "deb http://${SALT_REPO} xenial main" > /etc/apt/sources.list.d/salt.list apt update apt-get install -y salt-minion rm /etc/salt/minion_id |