kayobe/tools/configure-kayobe.sh
Mark Goddard 1d9e8fc976 Separate the external network into external and public
Previously, the external network carried both public API traffic and
neutron external network traffic. In some cases is it useful to separate
these networks. The public network now carries the public API traffic,
leaving the external network to carry neutron external network traffic
alone. For backwards compatibility, the public network defaults to the
external network.
2017-08-29 13:12:47 +00:00

78 lines
2.1 KiB
Bash
Executable File

#!/bin/bash
set -e
function configure_kayobe {
KAYOBE_CONFIG_PATH=${KAYOBE_CONFIG_PATH:-/etc/kayobe}
sudo yum -y install python-netaddr
sudo mkdir -p ${KAYOBE_CONFIG_PATH}
sudo chown ${USER}:${USER} ${KAYOBE_CONFIG_PATH}
chmod 755 ${KAYOBE_CONFIG_PATH}
cp -r etc/kayobe/* ${KAYOBE_CONFIG_PATH}
my_interface=$(ip route get 8.8.8.8 | awk '{ print $5 }')
my_ip=$(ip route get 8.8.8.8 | awk '{ print $7 }')
gateway=$(ip route get 8.8.8.8 | awk '{ print $3 }')
cidr=$(ip a show $my_interface | awk '$1 == "inet" { print $2 }')
vip=$(python -c "import netaddr; a = netaddr.IPAddress('$my_ip'); print a+2")
cat >> ${KAYOBE_CONFIG_PATH}/ntp.yml << EOF
#######################################################
# Local config
timezone: GMT
EOF
cat >> ${KAYOBE_CONFIG_PATH}/networks.yml << EOF
#######################################################
# Local config
provision_oc_net_name: 'the_net'
provision_wl_net_name: 'the_net'
internal_net_name: 'the_net'
public_net_name: 'the_net'
external_net_name: 'the_net'
storage_net_name: 'the_net'
storage_mgmt_net_name: 'the_net'
the_net_vip_address: ${vip}
the_net_cidr: ${cidr}
the_net_gateway: ${gateway}
EOF
cat > ${KAYOBE_CONFIG_PATH}/network-allocation.yml << EOF
---
the_net_ips:
localhost: ${my_ip}
EOF
cat > ${KAYOBE_CONFIG_PATH}/inventory/hosts << EOF
[config-mgmt]
# This host acts as the configuration management control host. This must be
# localhost.
localhost ansible_connection=local
[seed]
# This host will provide the Bifrost undercloud.
localhost ansible_host=127.0.0.1
[controllers]
# These hosts will provide the OpenStack overcloud.
EOF
if [[ -e ~/kayobe-env ]] ; then
for controller_ip in $(python -c "import json
with open('/home/centos/kayobe-env') as f:
cfg = json.load(f)
for ctl_ip in cfg['controller_ips']:
print ctl_ip"); do
echo " '$controller_ip': $controller_ip" >> ${KAYOBE_CONFIG_PATH}/network-allocation.yml
echo $controller_ip >> ${KAYOBE_CONFIG_PATH}/inventory/hosts
done
fi
}
function main {
configure_kayobe
}
main $@