#!/usr/bin/env bash ############################################################################## # Copyright (c) 2015 Tim Rozet (Red Hat), Dan Radez (Red Hat) and others. # # All rights reserved. This program and the accompanying materials # are made available under the terms of the Apache License, Version 2.0 # which accompanies this distribution, and is available at # http://www.apache.org/licenses/LICENSE-2.0 ############################################################################## ##Post configuration after install ##params: none function configure_post_install { local opnfv_attach_networks ovs_ip ip_range net_cidr tmp_ip af public_network_ipv6 public_network_ipv6=False opnfv_attach_networks="admin_network public_network" echo -e "${blue}INFO: Post Install Configuration Running...${reset}" echo -e "${blue}INFO: Configuring ssh for root to overcloud nodes...${reset}" # copy host key to instack scp ${SSH_OPTIONS[@]} /root/.ssh/id_rsa.pub "stack@$UNDERCLOUD":jumphost_id_rsa.pub # add host key to overcloud nodes authorized keys ssh -T ${SSH_OPTIONS[@]} "stack@$UNDERCLOUD" << EOI source stackrc nodes=\$(nova list | grep -Eo "[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+") for node in \$nodes; do cat ~/jumphost_id_rsa.pub | ssh -T ${SSH_OPTIONS[@]} "heat-admin@\$node" 'cat >> ~/.ssh/authorized_keys' done EOI echo -e "${blue}INFO: Checking if OVS bridges have IP addresses...${reset}" for network in ${opnfv_attach_networks}; do ovs_ip=$(find_ip ${NET_MAP[$network]}) tmp_ip='' if [ -n "$ovs_ip" ]; then echo -e "${blue}INFO: OVS Bridge ${NET_MAP[$network]} has IP address ${ovs_ip}${reset}" else echo -e "${blue}INFO: OVS Bridge ${NET_MAP[$network]} missing IP, will configure${reset}" # use last IP of allocation pool eval "ip_range=\${${network}_usable_ip_range}" ovs_ip=${ip_range##*,} eval "net_cidr=\${${network}_cidr}" if [[ $ovs_ip =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$ ]]; then af=4 else af=6 if [ "$network" == "public_network" ]; then public_network_ipv6=True fi #enable ipv6 on bridge interface echo 0 > /proc/sys/net/ipv6/conf/${NET_MAP[$network]}/disable_ipv6 fi sudo ip addr add ${ovs_ip}/${net_cidr##*/} dev ${NET_MAP[$network]} sudo ip link set up ${NET_MAP[$network]} tmp_ip=$(find_ip ${NET_MAP[$network]} $af) if [ -n "$tmp_ip" ]; then echo -e "${blue}INFO: OVS Bridge ${NET_MAP[$network]} IP set: ${tmp_ip}${reset}" continue else echo -e "${red}ERROR: Unable to set OVS Bridge ${NET_MAP[$network]} with IP: ${ovs_ip}${reset}" return 1 fi fi done if [ "${deploy_options_array['dataplane']}" == 'ovs_dpdk' ]; then echo -e "${blue}INFO: Bringing up br-phy and ovs-agent for dpdk compute nodes...${reset}" compute_nodes=$(undercloud_connect stack "source stackrc; nova list | grep compute | wc -l") i=0 while [ "$i" -lt "$compute_nodes" ]; do overcloud_connect compute${i} "sudo ifup br-phy; sudo systemctl restart neutron-openvswitch-agent" i=$((i + 1)) done fi # TODO fix this when HA SDN controllers are supported if [ "${deploy_options_array['sdn_controller']}" != 'False' ]; then echo -e "${blue}INFO: Finding SDN Controller IP for overcloudrc...${reset}" sdn_controller_ip=$(undercloud_connect stack "source stackrc;nova list | grep controller-0 | cut -d '|' -f 7 | grep -Eo [0-9]+\.[0-9]+\.[0-9]+\.[0-9]+") echo -e "${blue}INFO: SDN Controller IP is ${sdn_controller_ip} ${reset}" undercloud_connect stack "echo 'export SDN_CONTROLLER_IP=${sdn_controller_ip}' >> /home/stack/overcloudrc" fi ssh -T ${SSH_OPTIONS[@]} "stack@$UNDERCLOUD" <&1 > /var/log/vsperf.log'" fi # Collect deployment logs ssh -T ${SSH_OPTIONS[@]} "stack@$UNDERCLOUD" <