blob: e2fb4a668a7547b9cf258a0057d01ebe2aaa7af7 [file] [log] [blame]
Andrew Kutz4f66b8b2018-09-16 18:28:59 -05001#!/bin/sh
2
Ivan Berezovskiy66279972020-10-26 16:48:53 +04003set -e
4
5# Prepare RHEL image for bootstrap on VSPHERE
6
7: "${DOWNLOAD_INSTALL:="true"}"
8: "${VCENTER_CONFIG_PATH:="/etc/virt-who.d/vcenter.conf"}"
9
10if [ -z "${VC_SERVER}" ] || [ -z "${VC_USER}" ] || [ -z "${VC_PASSWORD}" ] || [ -z "${VC_OWNER}" ]; then
11 echo "VC_SERVER or VC_USER or VC_PASSWORD or VC_OWNER is not provided"
12 exit 1
13fi
14
15yum -y install open-vm-tools cloud-init virt-who
16systemctl enable virt-who
17VC_PASSWORD_ENCRYPTED="$(virt-who-password -p "${VC_PASSWORD}")"
18
19mkdir -p "$(dirname "${VCENTER_CONFIG_PATH}")"
20cat <<EOF > "${VCENTER_CONFIG_PATH}"
21[vcenter]
22type=${VC_TYPE:-esx}
23server=${VC_SERVER}
24username=${VC_USER}
25encrypted_password=${VC_PASSWORD_ENCRYPTED}
26owner=${VC_OWNER}
27hypervisor_id=${VC_HYPERVISOR_ID:-hostname}
28EOF
29
30if [ -n "${VC_FILTER_HOSTS}" ]; then
31 echo "filter_hosts=${VC_FILTER_HOSTS}" >> "${VCENTER_CONFIG_PATH}"
32fi
Andrew Kutz4f66b8b2018-09-16 18:28:59 -050033
34# The script to lookup the path to the cloud-init's datasource directory, "sources".
35PY_SCRIPT='import os; from cloudinit import sources; print(os.path.dirname(sources.__file__));'
36
37# Get the path to the cloud-init installation's datasource directory.
38CLOUD_INIT_SOURCES=$(python -c ''"${PY_SCRIPT}"'' 2>/dev/null || \
39 python3 -c ''"${PY_SCRIPT}"'' 2>/dev/null) ||
40 { exit_code="${?}"; echo "failed to find python runtime" 1>&2; exit "${exit_code}"; }
41
42# If no "sources" directory was located then it's likely cloud-init is not installed.
43[ -z "${CLOUD_INIT_SOURCES}" ] && echo "cloud-init not found" 1>&2 && exit 1
44
Ivan Berezovskiy66279972020-10-26 16:48:53 +040045if [ "${DOWNLOAD_INSTALL}" = "true" ]; then
46 REPO_URL="${REPO_URL:-https://gerrit.mcp.mirantis.com/plugins/gitiles/kubernetes/vmware-guestinfo/+/refs/heads}"
Andrew Kutz4f66b8b2018-09-16 18:28:59 -050047
Ivan Berezovskiy66279972020-10-26 16:48:53 +040048 # The git reference to use. This can be a branch or tag name as well as a commit ID.
49 GIT_REF="${GIT_REF:-mcp}"
Andrew Kutz4f66b8b2018-09-16 18:28:59 -050050
Ivan Berezovskiy66279972020-10-26 16:48:53 +040051 # Download the cloud init datasource into the cloud-init's "sources" directory.
52 curl "${REPO_URL}/${GIT_REF}/DataSourceVMwareGuestInfo.py?format=TEXT" | base64 -d \
53 > "${CLOUD_INIT_SOURCES}/DataSourceVMwareGuestInfo.py"
Andrew Kutz4f66b8b2018-09-16 18:28:59 -050054
Ivan Berezovskiy66279972020-10-26 16:48:53 +040055 # Add the configuration file that tells cloud-init what datasource to use.
56 mkdir -p /etc/cloud/cloud.cfg.d
57 curl "${REPO_URL}/${GIT_REF}/99-DataSourceVMwareGuestInfo.cfg?format=TEXT" | base64 -d \
58 > /etc/cloud/cloud.cfg.d/99-DataSourceVMwareGuestInfo.cfg
59else
60 BASEDIR=$(dirname "$0")
61 cp "${BASEDIR}/DataSourceVMwareGuestInfo.py" "${CLOUD_INIT_SOURCES}/DataSourceVMwareGuestInfo.py"
62 mkdir -p /etc/cloud/cloud.cfg.d
63 cp "${BASEDIR}/99-DataSourceVMwareGuestInfo.cfg" /etc/cloud/cloud.cfg.d/99-DataSourceVMwareGuestInfo.cfg
64fi