From 0fed9ab50ef24816bf0979bece955763fd634189 Mon Sep 17 00:00:00 2001 From: Alexandru Avadanii Date: Thu, 31 Aug 2017 03:09:51 +0200 Subject: ci/deploy.sh, lib.sh: Align SSH_KEY with Jenkins Jenkins defines a build param also called SSH_KEY, which holds the full path to our MCP private RSA key, as opposed to Fuel@OPNFV, which uses the file basename as SSH_KEY. Switch to using full path in SSH_KEY, while also moving the key outside /tmp. NOTE: When running `ci/deploy.sh` with sudo, key will land in /root/opnfv/mcp.rsa unless SSH_KEY is set via env var. While at it, bring back VM image storage dir param, allowing us to drop one more reference to /tmp. JIRA: FUEL-280 Change-Id: Id1cfa6dbe7b2e6f3915b22281da5957333718401 Signed-off-by: Alexandru Avadanii --- mcp/scripts/lib.sh | 35 +++++++++++++++++++++-------------- 1 file changed, 21 insertions(+), 14 deletions(-) (limited to 'mcp/scripts/lib.sh') diff --git a/mcp/scripts/lib.sh b/mcp/scripts/lib.sh index 67c960a6e..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,18 +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}" + 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 } @@ -77,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="" @@ -106,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 @@ -117,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 \ "" --live -- cgit 1.2.3-korg