@@ -23,13 +23,15 @@ SCRIPTPATH="$( cd "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )"
2323IP_ADRESS_SUFFIX=${IP_ADRESS_SUFFIX:- 100}
2424IP=${IP:- " ${EDPM_COMPUTE_NETWORK_IP% .* } .${IP_ADRESS_SUFFIX} " }
2525OS_NET_CONFIG_IFACE=${OS_NET_CONFIG_IFACE:- " nic1" }
26+ CLOUD_DOMAIN=${CLOUD_DOMAIN:- localdomain}
2627GATEWAY=${GATEWAY:- " ${EDPM_COMPUTE_NETWORK_IP} " }
2728OUTPUT_DIR=${OUTPUT_DIR:- " ${SCRIPTPATH} /../../out/edpm/" }
2829SSH_KEY_FILE=${SSH_KEY_FILE:- " ${OUTPUT_DIR} /ansibleee-ssh-key-id_rsa" }
2930SSH_OPT=" -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i $SSH_KEY_FILE "
3031REPO_SETUP_CMDS=${REPO_SETUP_CMDS:- " ${MY_TMP_DIR} /standalone_repos" }
3132CMDS_FILE=${CMDS_FILE:- " ${MY_TMP_DIR} /standalone_cmds" }
3233SKIP_TRIPLEO_REPOS=${SKIP_TRIPLEO_REPOS:= " false" }
34+ TRIPLEO_NETWORKING=${TRIPLEO_NETWORKING:- true}
3335MANILA_ENABLED=${MANILA_ENABLED:- true}
3436OCTAVIA_ENABLED=${OCTAVIA_ENABLED:- false}
3537TELEMETRY_ENABLED=${TELEMETRY_ENABLED:- true}
@@ -39,43 +41,88 @@ if [[ ! -f $SSH_KEY_FILE ]]; then
3941 exit 1
4042fi
4143
44+ sudo dnf install -y python-jinja2
4245source ${SCRIPTPATH} /common.sh
4346
47+ # Clock synchronization is important for both Ceph and OpenStack services, so both ceph deploy and tripleo deploy commands will make use of chrony to ensure the clock is properly in sync.
48+ # We'll use the NTP_SERVER environmental variable to define the NTP server to use, e.g.:
49+ # export NTP_SERVER=pool.ntp.org
50+
51+ if [ $EDPM_COMPUTE_CELLS -eq 2 ] || [ $EDPM_COMPUTE_CELLS -gt 3 ] || [ $EDPM_COMPUTE_CELLS -eq 0 ] ; then
52+ echo " Only a main cell0 plus a 2 additional compute cells supported yet!"
53+ exit 1
54+ fi
55+
56+ # TODO(bogdando): multi-cell with ceph HCI
57+ if [ $EDPM_COMPUTE_CELLS -eq 3 ] && [[ " $EDPM_COMPUTE_CEPH_ENABLED " == " true" ]]; then
58+ echo " Ceph storage is not supported for multi-cell setup yet!"
59+ exit 1
60+ fi
61+
4462if [[ -e /run/systemd/resolve/resolv.conf ]]; then
4563 HOST_PRIMARY_RESOLV_CONF_ENTRY=$( cat /run/systemd/resolve/resolv.conf | grep ^nameserver | grep -v " ${EDPM_COMPUTE_NETWORK_IP% .* } " | head -n1 | cut -d' ' -f2)
4664else
4765 HOST_PRIMARY_RESOLV_CONF_ENTRY=${HOST_PRIMARY_RESOLV_CONF_ENTRY:- $GATEWAY }
4866fi
4967
50- if [[ ! -f $CMDS_FILE ]]; then
51- cat << EOF > $CMDS_FILE
68+ set +x
69+ cat << EOF > $MY_TMP_DIR /.standalone_env_file
70+ export RH_REGISTRY_USER="$REGISTRY_USER "
71+ export RH_REGISTRY_PWD="$RH_REGISTRY_PWD "
72+ EOF
73+ chmod 0600 $MY_TMP_DIR /.standalone_env_file
74+
75+ cat << EOF > $CMDS_FILE
76+ . \$ HOME/.standalone_env_file
77+
5278set -ex
5379sudo dnf install -y podman python3-tripleoclient util-linux lvm2
5480
5581sudo hostnamectl set-hostname undercloud.localdomain
5682sudo hostnamectl set-hostname undercloud.localdomain --transient
5783
84+ cat >\$ HOME/nova_noceph.yaml <<__EOF__
85+ parameter_defaults:
86+ NovaEnableRbdBackend: false
87+ __EOF__
88+
5889export HOST_PRIMARY_RESOLV_CONF_ENTRY=${HOST_PRIMARY_RESOLV_CONF_ENTRY}
5990export INTERFACE_MTU=${INTERFACE_MTU:- 1500}
60- export NTP_SERVER=${NTP_SERVER:- " clock.corp.redhat.com " }
91+ export NTP_SERVER=${NTP_SERVER:- " pool.ntp.org " }
6192export IP=${IP}
6293export GATEWAY=${GATEWAY}
63- export EDPM_COMPUTE_CEPH_ENABLED=${EDPM_COMPUTE_CEPH_ENABLED:- false}
64- export CEPH_ARGS="${CEPH_ARGS:- -e \$ HOME/ deployed_ceph.yaml -e / usr/ share/ openstack-tripleo-heat-templates/ environments/ cephadm/ cephadm.yaml} "
94+ export EDPM_COMPUTE_CEPH_ENABLED=${COMPUTE_CEPH_ENABLED:- false}
95+ export EDPM_COMPUTE_CEPH_NOVA=${COMPUTE_CEPH_NOVA:- false}
96+ export CEPH_ARGS="${CEPH_ARGS:- -e \$ HOME/ deployed_ceph.yaml -e / usr/ share/ openstack-tripleo-heat-templates/ environments/ cephadm/ cephadm-rbd-only.yaml} "
97+ [[ "\$ EDPM_COMPUTE_CEPH_NOVA" == "false" ]] && export CEPH_ARGS="\$ {CEPH_ARGS} -e \$ HOME/nova_noceph.yaml"
98+ export EDPM_COMPUTE_CELLS=${COMPUTE_CELLS:- 1}
6599export MANILA_ENABLED=${MANILA_ENABLED:- true}
66100export OCTAVIA_ENABLED=${OCTAVIA_ENABLED}
67101export TELEMETRY_ENABLED=${TELEMETRY_ENABLED:- true}
68102
103+ set +x
69104if [[ -f \$ HOME/containers-prepare-parameters.yaml ]]; then
70105 echo "Using existing containers-prepare-parameters.yaml - contents:"
71106 cat \$ HOME/containers-prepare-parameters.yaml
72107else
108+ login_args=" "
109+ [ "\$ RH_REGISTRY_USER" ] && [ -n "\$ RH_REGISTRY_PWD" ] && login_args="--enable-registry-login"
73110 openstack tripleo container image prepare default \
74- --output-env-file \$ HOME/containers-prepare-parameters.yaml
111+ --output-env-file \$ HOME/containers-prepare-parameters.yaml \$ {login_args}
75112 # Use wallaby el9 container images
76113 sed -i 's|quay.io/tripleowallaby$|quay.io/tripleowallabycentos9|' \$ HOME/containers-prepare-parameters.yaml
77114fi
78115
116+ if [ "\$ RH_REGISTRY_USER" ] && [ -n "\$ RH_REGISTRY_PWD" ]; then
117+ grep -q ContainerImageRegistryCredentials \$ HOME/containers-prepare-parameters.yaml || \
118+ cat >> \$ HOME/containers-prepare-parameters.yaml <<__EOF__
119+ ContainerImageRegistryCredentials:
120+ registry.redhat.io:
121+ \$ {RH_REGISTRY_USER}: \$ RH_REGISTRY_PWD
122+ __EOF__
123+ fi
124+ set -x
125+
79126# Use os-net-config to add VLAN interfaces which connect edpm-compute-0 to the isolated networks configured by install_yamls.
80127sudo mkdir -p /etc/os-net-config
81128
@@ -84,6 +131,7 @@ network:
84131 config: disabled
85132__EOF__
86133
134+ cell=\$ (( IP_ADRESS_SUFFIX - 100 ))
87135sudo systemctl enable network
88136sudo cp /tmp/net_config.yaml /etc/os-net-config/config.yaml
89137sudo os-net-config -c /etc/os-net-config/config.yaml
@@ -97,14 +145,15 @@ popd
97145# is not true, the script will return 0 and cause an error in CI
98146exit 0
99147EOF
100- fi
101148
102149while [[ $( ssh -o BatchMode=yes -o ConnectTimeout=5 $SSH_OPT root@$IP echo ok) != " ok" ]]; do
103150 sleep 5
104151 true
105152done
106153
107154# Render Jinja2 files
155+ # FIXME: .99 undercloud IP cannot be changed https://review.rdoproject.org/cgit/rdo-jobs/tree/playbooks/data_plane_adoption/setup_tripleo_os_net_config.yaml#n6
156+ # TODO(bogdnado): introduce CLOUD_USER var to remove all hardcoded 'zuul' values from these scripts
108157PRIMARY_RESOLV_CONF_ENTRY=${HOST_PRIMARY_RESOLV_CONF_ENTRY}
109158J2_VARS_FILE=$( mktemp --suffix=" .yaml" --tmpdir=" ${MY_TMP_DIR} " )
110159cat << EOF > ${J2_VARS_FILE}
@@ -117,39 +166,93 @@ ip_address_suffix: ${IP_ADRESS_SUFFIX}
117166interface_mtu: ${INTERFACE_MTU:- 1500}
118167ntp_server: ${NTP_SERVER}
119168gateway_ip: ${GATEWAY}
169+ manage_default_route: ${TRIPLEO_NETWORKING}
120170dns_server: ${PRIMARY_RESOLV_CONF_ENTRY}
121- user_home: ${HOME}
171+ user_home: /home/zuul
122172EOF
123173
124- jinja2_render tripleo/net_config.j2 " ${J2_VARS_FILE} " > ${MY_TMP_DIR} /net_config.yaml
125- jinja2_render tripleo/undercloud.conf.j2 " ${J2_VARS_FILE} " > ${MY_TMP_DIR} /undercloud.conf
174+ jinja2_render ${SCRIPTPATH} /../tripleo/undercloud.conf.j2 " ${J2_VARS_FILE} " > ${MY_TMP_DIR} /undercloud.conf
175+ jinja2_render ${SCRIPTPATH} /../tripleo/net_config.j2 " ${J2_VARS_FILE} " > ${MY_TMP_DIR} /net_config.yaml
176+ # NOTE(bogdando): no computes supported in the cetnral overcloud stack in OSP.
177+ # Reduced footprint for adoption dev envs: no HA controllers, an all-in-one host in the cell 2
178+ ind=0
179+ if [ $EDPM_COMPUTE_CELLS -gt 1 ]; then
180+ for cell in $( seq 0 $(( EDPM_COMPUTE_CELLS - 1 )) ) ; do
181+ aio_count=0
182+ contr_count=0
183+ cell_contr_count=1
184+ comp_count=1
185+ if [ $cell -eq 0 ]; then
186+ contr_count=1
187+ cell_contr_count=0
188+ comp_count=0
189+ fi
190+ if [ $cell -ge 2 ]; then
191+ aio_count=1
192+ cell_contr_count=0
193+ comp_count=0
194+ fi
195+
196+ J2_VARS_FILE=$( mktemp --suffix=" .yaml" --tmpdir=" ${MY_TMP_DIR} " )
197+ cat << EOF > ${J2_VARS_FILE}
198+ ---
199+ cell: ${cell}
200+ ind: ${ind}
201+ max_cells: ${EDPM_COMPUTE_CELLS}
202+ cloud_domain: ${CLOUD_DOMAIN}
203+ aio_count: ${aio_count}
204+ comp_count: ${comp_count}
205+ cell_contr_count: ${cell_contr_count}
206+ contr_count: ${contr_count}
207+ gateway_ip: ${GATEWAY}
208+ dns_server: ${PRIMARY_RESOLV_CONF_ENTRY}
209+ tripleo_networking: ${TRIPLEO_NETWORKING}
210+ EOF
211+ jinja2_render " ${SCRIPTPATH} /../tripleo/network_data_cell.j2" " ${J2_VARS_FILE} " > ${MY_TMP_DIR} /network_data${cell} .yaml
212+ jinja2_render " ${SCRIPTPATH} /../tripleo/vips_data_cell.j2" " ${J2_VARS_FILE} " > ${MY_TMP_DIR} /vips_data${cell} .yaml
213+ jinja2_render " ${SCRIPTPATH} /../tripleo/overcloud_services_cell.j2" " ${J2_VARS_FILE} " > ${MY_TMP_DIR} /overcloud_services_cell${cell} .yaml
214+ jinja2_render " ${SCRIPTPATH} /../tripleo/config-download-multistack.j2" " ${J2_VARS_FILE} " > ${MY_TMP_DIR} /config-download-cell${cell} .yaml
215+ ind=$(( ind + 1 ))
216+ done
217+ fi
126218
127219# Copying files
128- scp $SSH_OPT $REPO_SETUP_CMDS root@$IP :/tmp/repo-setup.sh
220+ [ -f $REPO_SETUP_CMDS ] && scp $SSH_OPT $REPO_SETUP_CMDS root@$IP :/tmp/repo-setup.sh
221+ scp $SSH_OPT $MY_TMP_DIR /.standalone_env_file zuul@$IP :.standalone_env_file
129222scp $SSH_OPT $CMDS_FILE zuul@$IP :/tmp/undercloud-deploy-cmds.sh
130223scp $SSH_OPT ${MY_TMP_DIR} /net_config.yaml root@$IP :/tmp/net_config.yaml
131- scp $SSH_OPT tripleo/tripleo_install.sh zuul@$IP :$HOME /tripleo_install.sh
132- scp $SSH_OPT tripleo/hieradata_overrides_undercloud.yaml zuul@$IP :$HOME /hieradata_overrides_undercloud.yaml
133- scp $SSH_OPT tripleo/undercloud-parameter-defaults.yaml zuul@$IP :$HOME /undercloud-parameter-defaults.yaml
134- scp $SSH_OPT ${MY_TMP_DIR} /undercloud.conf zuul@$IP :$HOME /undercloud.conf
135- scp $SSH_OPT tripleo/network_data.yaml zuul@$IP :$HOME /network_data.yaml
136- scp $SSH_OPT tripleo/vips_data.yaml zuul@$IP :$HOME /vips_data.yaml
137- scp $SSH_OPT tripleo/config-download.yaml zuul@$IP :$HOME /config-download.yaml
138- scp $SSH_OPT tripleo/config-download-networker.yaml zuul@$IP :$HOME /config-download-networker.yaml
139- scp $SSH_OPT tripleo/overcloud_roles.yaml zuul@$IP :$HOME /overcloud_roles.yaml
140- scp $SSH_OPT tripleo/overcloud_services.yaml zuul@$IP :$HOME /overcloud_services.yaml
141- scp $SSH_OPT tripleo/ansible_config.cfg zuul@$IP :$HOME /ansible_config.cfg
224+ scp $SSH_OPT ${SCRIPTPATH} /../tripleo/tripleo_install.sh zuul@$IP :tripleo_install.sh
225+ scp $SSH_OPT ${SCRIPTPATH} /../tripleo/hieradata_overrides_undercloud.yaml zuul@$IP :hieradata_overrides_undercloud.yaml
226+ scp $SSH_OPT ${SCRIPTPATH} /../tripleo/undercloud-parameter-defaults.yaml zuul@$IP :undercloud-parameter-defaults.yaml
227+ scp $SSH_OPT ${MY_TMP_DIR} /undercloud.conf zuul@$IP :undercloud.conf
228+ scp $SSH_OPT ${SCRIPTPATH} /../tripleo/config-download-networker.yaml zuul@$IP :config-download-networker.yaml
229+ if [ $EDPM_COMPUTE_CELLS -gt 1 ]; then
230+ for cell in $( seq 0 $(( EDPM_COMPUTE_CELLS - 1 )) ) ; do
231+ scp $SSH_OPT ${MY_TMP_DIR} /vips_data${cell} .yaml zuul@$IP :vips_data${cell} .yaml
232+ scp $SSH_OPT ${MY_TMP_DIR} /network_data${cell} .yaml zuul@$IP :network_data${cell} .yaml
233+ scp $SSH_OPT ${MY_TMP_DIR} /overcloud_services_cell${cell} .yaml zuul@$IP :overcloud_services_cell${cell} .yaml
234+ scp $SSH_OPT ${MY_TMP_DIR} /config-download-cell${cell} .yaml zuul@$IP :config-download-cell${cell} .yaml
235+ done
236+ else
237+ scp $SSH_OPT ${SCRIPTPATH} /../tripleo/vips_data.yaml zuul@$IP :vips_data.yaml
238+ scp $SSH_OPT ${SCRIPTPATH} /../tripleo/network_data.yaml zuul@$IP :network_data.yaml
239+ scp $SSH_OPT ${SCRIPTPATH} /../tripleo/overcloud_services.yaml zuul@$IP :overcloud_services.yaml
240+ scp $SSH_OPT ${SCRIPTPATH} /../tripleo/config-download.yaml zuul@$IP :config-download.yaml
241+ fi
242+ scp $SSH_OPT ${SCRIPTPATH} /../tripleo/overcloud_roles.yaml zuul@$IP :overcloud_roles.yaml
243+ scp $SSH_OPT ${SCRIPTPATH} /../tripleo/overcloud_services.yaml zuul@$IP :overcloud_services.yaml
244+ scp $SSH_OPT ${SCRIPTPATH} /../tripleo/ansible_config.cfg zuul@$IP :ansible_config.cfg
142245if [[ " $EDPM_COMPUTE_CEPH_ENABLED " == " true" ]]; then
143- scp $SSH_OPT tripleo/ceph.sh root@$IP :/tmp/ceph.sh
144- scp $SSH_OPT tripleo/generate_ceph_inventory.py root@$IP :/tmp/generate_ceph_inventory.py
246+ scp $SSH_OPT ${SCRIPTPATH} /../ tripleo/ceph.sh root@$IP :/tmp/ceph.sh
247+ scp $SSH_OPT ${SCRIPTPATH} /../ tripleo/generate_ceph_inventory.py root@$IP :/tmp/generate_ceph_inventory.py
145248fi
146249
147250if [[ -f $HOME /containers-prepare-parameters.yaml ]]; then
148- scp $SSH_OPT $HOME /containers-prepare-parameters.yaml zuul@$IP :$HOME / containers-prepare-parameters.yaml
251+ scp $SSH_OPT $HOME /containers-prepare-parameters.yaml zuul@$IP :containers-prepare-parameters.yaml
149252fi
150253
151254# Running
152255if [[ -z ${SKIP_TRIPLEO_REPOS} || ${SKIP_TRIPLEO_REPOS} == " false" ]]; then
153- ssh $SSH_OPT root@$IP " bash /tmp/repo-setup.sh"
256+ [ -f $REPO_SETUP_CMDS ] && ssh $SSH_OPT root@$IP " bash /tmp/repo-setup.sh"
154257fi
155258ssh $SSH_OPT zuul@$IP " bash /tmp/undercloud-deploy-cmds.sh"
0 commit comments