printf "%d.%d.%d.%d\n" "$((i1 & m1))" "$((i2 & m2))" "$((i3 & m3))" "$((i4 & m4))"
}
+##increments subnet by a value
+##params: ip, value
+##assumes low value
+function increment_subnet {
+ IFS=. read -r i1 i2 i3 i4 <<< "$1"
+ printf "%d.%d.%d.%d\n" "$i1" "$i2" "$i3" "$((i4 | $2))"
+}
+
+
##finds netmask of interface
##params: interface
##returns long format 255.255.x.x
##disable selinux
/sbin/setenforce 0
-##install EPEL
-if ! yum repolist | grep "epel/"; then
- if ! rpm -Uvh http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm; then
- printf '%s\n' 'deploy.sh: Unable to configure EPEL repo' >&2
- exit 1
- fi
-else
- printf '%s\n' 'deploy.sh: Skipping EPEL repo as it is already configured.'
-fi
+# Install EPEL repo for access to many other yum repos
+# Major version is pinned to force some consistency for Arno
+yum install -y epel-release-7*
-##install dependencies
-if ! yum -y install binutils gcc make patch libgomp glibc-headers glibc-devel kernel-headers kernel-devel dkms psmisc; then
+# Install other required packages
+# Major versions are pinned to force some consistency for Arno
+if ! yum install -y binutils-2* gcc-4* make-3* patch-2* libgomp-4* glibc-headers-2* glibc-devel-2* kernel-headers-3* kernel-devel-3* dkms-2* psmisc-22*; then
printf '%s\n' 'deploy.sh: Unable to install depdency packages' >&2
exit 1
fi
##install kmod-VirtualBox
if ! lsmod | grep vboxdrv; then
- if ! sudo /etc/init.d/vboxdrv setup; then
+ sudo /etc/init.d/vboxdrv setup
+ if ! lsmod | grep vboxdrv; then
printf '%s\n' 'deploy.sh: Unable to install kernel module for virtualbox' >&2
exit 1
fi
##install Ansible
if ! yum list installed | grep -i ansible; then
- if ! yum -y install ansible; then
+ if ! yum -y install ansible-1*; then
printf '%s\n' 'deploy.sh: Unable to install Ansible package' >&2
exit 1
fi
##clone bgs vagrant
##will change this to be opnfv repo when commit is done
-if ! git clone https://github.com/trozet/bgs_vagrant.git; then
+if ! git clone -b v1.0 https://github.com/trozet/bgs_vagrant.git; then
printf '%s\n' 'deploy.sh: Unable to clone vagrant repo' >&2
exit 1
fi
private_subnet_mask=$subnet_mask
private_short_subnet_mask=$(find_short_netmask $interface)
fi
+ if [ "$if_counter" -eq 2 ]; then
+ public_subnet_mask=$subnet_mask
+ public_short_subnet_mask=$(find_short_netmask $interface)
+ fi
if [ "$if_counter" -eq 3 ]; then
storage_subnet_mask=$subnet_mask
fi
sed -i 's/^.*nat_flag =.*$/ nat_flag = true/' Vagrantfile
echo "${blue}Setting node gateway to be VM Admin IP${reset}"
node_default_gw=${interface_ip_arr[0]}
+ public_gateway=$default_gw
;;
3)
echo "${red}Default Gateway Detected on Storage Interface!${reset}"
sed -i 's/^.*network_type:.*$/network_type: three_network/' opnfv_ksgen_settings.yml
fi
+ sed -i 's/^.*deployment_type:.*$/ deployment_type: '"$deployment_type"'/' opnfv_ksgen_settings.yml
+
##get ip addresses for private network on controllers to make dhcp entries
##required for controllers_ip_array global param
next_private_ip=${interface_ip_arr[1]}
fi
done
+ ##replace public_network param
+ public_subnet=$(find_subnet $next_public_ip $public_subnet_mask)
+ sed -i 's/^.*public_network:.*$/ public_network:'" $public_subnet"'/' opnfv_ksgen_settings.yml
##replace private_network param
private_subnet=$(find_subnet $next_private_ip $private_subnet_mask)
sed -i 's/^.*private_network:.*$/ private_network:'" $private_subnet"'/' opnfv_ksgen_settings.yml
sed -i 's/^.*storage_network:.*$/ storage_network:'" $storage_subnet"'/' opnfv_ksgen_settings.yml
fi
+ ##replace public_subnet param
+ public_subnet=$public_subnet'\'$public_short_subnet_mask
+ sed -i 's/^.*public_subnet:.*$/ public_subnet:'" $public_subnet"'/' opnfv_ksgen_settings.yml
##replace private_subnet param
private_subnet=$private_subnet'\'$private_short_subnet_mask
sed -i 's/^.*private_subnet:.*$/ private_subnet:'" $private_subnet"'/' opnfv_ksgen_settings.yml
+
+ ##replace public_dns param to be foreman server
+ sed -i 's/^.*public_dns:.*$/ public_dns: '${interface_ip_arr[2]}'/' opnfv_ksgen_settings.yml
+
+ ##replace public_gateway
+ if [ -z "$public_gateway" ]; then
+ ##if unset then we assume its the first IP in the public subnet
+ public_subnet=$(find_subnet $next_public_ip $public_subnet_mask)
+ public_gateway=$(increment_subnet $public_subnet 1)
+ fi
+ sed -i 's/^.*public_gateway:.*$/ public_gateway:'" $public_gateway"'/' opnfv_ksgen_settings.yml
+
+ ##we have to define an allocation range of the public subnet to give
+ ##to neutron to use as floating IPs
+ ##we should control this subnet, so this range should work .150-200
+ ##but generally this is a bad idea and we are assuming at least a /24 subnet here
+ public_subnet=$(find_subnet $next_public_ip $public_subnet_mask)
+ public_allocation_start=$(increment_subnet $public_subnet 150)
+ public_allocation_end=$(increment_subnet $public_subnet 200)
+
+ sed -i 's/^.*public_allocation_start:.*$/ public_allocation_start:'" $public_allocation_start"'/' opnfv_ksgen_settings.yml
+ sed -i 's/^.*public_allocation_end:.*$/ public_allocation_end:'" $public_allocation_end"'/' opnfv_ksgen_settings.yml
+
else
printf '%s\n' 'deploy.sh: Unknown network type: $deployment_type' >&2
exit 1
##clone bgs vagrant
##will change this to be opnfv repo when commit is done
- if ! git clone https://github.com/trozet/bgs_vagrant.git $node; then
+ if ! git clone -b v1.0 https://github.com/trozet/bgs_vagrant.git $node; then
printf '%s\n' 'deploy.sh: Unable to clone vagrant repo' >&2
exit 1
fi