Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
48 changes: 48 additions & 0 deletions bin/setup-openstack-rc.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
#!/usr/local/env bash
set -e

function installYq() {
export VERSION=v4.2.0
export BINARY=yq_linux_amd64
wget https://github.com/mikefarah/yq/releases/download/${VERSION}/${BINARY}.tar.gz -O - | tar xz && mv ${BINARY} /usr/local/bin/yq
}

yq --version || (echo "yq is not installed. Attempting to install yq" && installYq)

USER_NAME="$(who am i | awk '{print $1}')"
USER_PATH="$(getent passwd ${USER_NAME} | awk -F':' '{print $6}')"
CONFIG_PATH="${USER_PATH}/.config/openstack"
CONFIG_FILE="${CONFIG_PATH}/genestack-clouds.yaml"

mkdir -p "${CONFIG_PATH}"

cat > "${CONFIG_FILE}" <<EOF
cache:
auth: true
expiration_time: 3600
clouds:
default:
auth:
auth_url: $(kubectl --namespace openstack get secret keystone-keystone-admin -o jsonpath='{.data.OS_AUTH_URL}' | base64 -d)
project_name: $(kubectl --namespace openstack get secret keystone-keystone-admin -o jsonpath='{.data.OS_PROJECT_NAME}' | base64 -d)
tenant_name: $(kubectl --namespace openstack get secret keystone-keystone-admin -o jsonpath='{.data.OS_USER_DOMAIN_NAME}' | base64 -d)
project_domain_name: $(kubectl --namespace openstack get secret keystone-keystone-admin -o jsonpath='{.data.OS_PROJECT_DOMAIN_NAME}' | base64 -d)
username: $(kubectl --namespace openstack get secret keystone-keystone-admin -o jsonpath='{.data.OS_USERNAME}' | base64 -d)
password: $(kubectl --namespace openstack get secret keystone-keystone-admin -o jsonpath='{.data.OS_PASSWORD}' | base64 -d)
user_domain_name: $(kubectl --namespace openstack get secret keystone-keystone-admin -o jsonpath='{.data.OS_USER_DOMAIN_NAME}' | base64 -d)
region_name: $(kubectl --namespace openstack get secret keystone-keystone-admin -o jsonpath='{.data.OS_REGION_NAME}' | base64 -d)
interface: $(kubectl --namespace openstack get secret keystone-keystone-admin -o jsonpath='{.data.OS_INTERFACE}' | base64 -d)
identity_api_version: "3"
EOF

if [ -f "${CONFIG_PATH}/clouds.yaml" ]; then
/usr/local/bin/yq eval-all 'select(filename == "'"${CONFIG_PATH}/clouds.yaml"'") * select(filename == "'"${CONFIG_FILE}"'")' \
"${CONFIG_FILE}" \
"${CONFIG_PATH}/clouds.yaml" | tee "${CONFIG_PATH}/clouds.yaml.tmp"
mv "${CONFIG_PATH}/clouds.yaml.tmp" "${CONFIG_PATH}/clouds.yaml"
rm "${CONFIG_FILE}"
else
mv "${CONFIG_FILE}" "${CONFIG_PATH}/clouds.yaml"
fi

chown -R "${USER_NAME}:${USER_NAME}" "${CONFIG_PATH}"
68 changes: 36 additions & 32 deletions bin/setup-openstack.sh
Original file line number Diff line number Diff line change
@@ -1,39 +1,43 @@
#!/bin/bash
#Deploy Keystone
/opt/genestack/bin/install-keystone.sh

# Deploy Barbican
/opt/genestack/bin/install-barbican.sh

# Deploy Glance
/opt/genestack/bin/install-glance.sh

# Deploy Heat
/opt/genestack/bin/install-heat.sh
#!/usr/local/env bash
set -e

# Deploy Magnum
/opt/genestack/bin/install-magnum.sh
export GENESTACK_INSTALL_TELEMETRY=${GENESTACK_INSTALL_TELEMETRY:-false}

# Deploy Cinder
/opt/genestack/bin/install-cinder.sh
# Track the PIDs of the services deploying in parallel
pids=()

# Deploy placement
/opt/genestack/bin/install-placement.sh
function runTrackErator() {
exec "${1}" &
pids+=($!)
}

# Deploy Nova
/opt/genestack/bin/install-nova.sh
function waitErator () {
for pid in ${pids[*]}; do
wait "${pid}"
done
}

# Deploy Neutron
/opt/genestack/bin/install-neutron.sh

# Deploy Octavia
/opt/genestack/bin/install-octavia.sh
# Block on Keystone
/opt/genestack/bin/install-keystone.sh

# Deploy SkyLine
# Run the rest of the services in parallel
runTrackErator /opt/genestack/bin/install-glance.sh
runTrackErator /opt/genestack/bin/install-heat.sh
runTrackErator /opt/genestack/bin/install-barbican.sh
runTrackErator /opt/genestack/bin/install-cinder.sh
runTrackErator /opt/genestack/bin/install-placement.sh
runTrackErator /opt/genestack/bin/install-nova.sh
runTrackErator /opt/genestack/bin/install-neutron.sh
runTrackErator /opt/genestack/bin/install-magnum.sh
runTrackErator /opt/genestack/bin/install-octavia.sh

# Install telemetry services
if [ "${GENESTACK_INSTALL_TELEMETRY}" = true ]; then
runTrackErator /opt/genestack/bin/install-ceilometer.sh
runTrackErator /opt/genestack/bin/install-gnocchi.sh
fi

waitErator

# Install skyline after all services are up
/opt/genestack/bin/install-skyline.sh

# Deploy Ceilometer
/opt/genestack/bin/install-ceilometer.sh

# Deploy Gnocchi
/opt/genestack/bin/install-gnocchi.sh
48 changes: 2 additions & 46 deletions scripts/hyperconverged-lab.sh
Original file line number Diff line number Diff line change
Expand Up @@ -706,56 +706,12 @@ EOC

# Run Genestack OpenStack Setup
ssh -o UserKnownHostsFile=/dev/null -t ubuntu@${JUMP_HOST_VIP} <<EOC
set -e
sudo /opt/genestack/bin/install-keystone.sh
pids=()
sudo /opt/genestack/bin/install-glance.sh &
pids+=(\$!)
sudo /opt/genestack/bin/install-heat.sh &
pids+=(\$!)
sudo /opt/genestack/bin/install-barbican.sh &
pids+=(\$!)
sudo /opt/genestack/bin/install-cinder.sh &
pids+=(\$!)
sudo /opt/genestack/bin/install-placement.sh &
pids+=(\$!)
sudo /opt/genestack/bin/install-nova.sh &
pids+=(\$!)
sudo /opt/genestack/bin/install-neutron.sh &
pids+=(\$!)
sudo /opt/genestack/bin/install-magnum.sh &
pids+=(\$!)
sudo /opt/genestack/bin/install-octavia.sh &
pids+=(\$!)
for pid in \${pids[*]}; do
wait \${pid}
done
sudo /opt/genestack/bin/install-skyline.sh
sudo /opt/genestack/bin/setup-openstack.sh
EOC

# Run Genestack post setup
ssh -o UserKnownHostsFile=/dev/null -t ubuntu@${JUMP_HOST_VIP} <<EOC
set -e
mkdir -p ~/.config/openstack
cat > ~/.config/openstack/clouds.yaml <<EOF
cache:
auth: true
expiration_time: 3600
clouds:
default:
auth:
auth_url: \$(sudo kubectl --namespace openstack get secret keystone-keystone-admin -o jsonpath='{.data.OS_AUTH_URL}' | base64 -d)
project_name: \$(sudo kubectl --namespace openstack get secret keystone-keystone-admin -o jsonpath='{.data.OS_PROJECT_NAME}' | base64 -d)
tenant_name: \$(sudo kubectl --namespace openstack get secret keystone-keystone-admin -o jsonpath='{.data.OS_USER_DOMAIN_NAME}' | base64 -d)
project_domain_name: \$(sudo kubectl --namespace openstack get secret keystone-keystone-admin -o jsonpath='{.data.OS_PROJECT_DOMAIN_NAME}' | base64 -d)
username: \$(sudo kubectl --namespace openstack get secret keystone-keystone-admin -o jsonpath='{.data.OS_USERNAME}' | base64 -d)
password: \$(sudo kubectl --namespace openstack get secret keystone-keystone-admin -o jsonpath='{.data.OS_PASSWORD}' | base64 -d)
user_domain_name: \$(sudo kubectl --namespace openstack get secret keystone-keystone-admin -o jsonpath='{.data.OS_USER_DOMAIN_NAME}' | base64 -d)
region_name: \$(sudo kubectl --namespace openstack get secret keystone-keystone-admin -o jsonpath='{.data.OS_REGION_NAME}' | base64 -d)
interface: \$(sudo kubectl --namespace openstack get secret keystone-keystone-admin -o jsonpath='{.data.OS_INTERFACE}' | base64 -d)
identity_api_version: "3"
EOF
source /opt/genestack/scripts/genestack.rc
sudo /opt/genestack/bin/setup-openstack-rc.sh
openstack --os-cloud default flavor create hyperconverged-test \
--public \
--ram 2048 \
Expand Down
Loading