echo "${blue}Checking whether PXE bridge ${pxe_bridge} exists${reset}"
if ! brctl show ${pxe_bridge} 2>&1 | grep -i 'No such device'; then
echo "${blue}PXE bridge detected. Removing...${reset}"
- if ifconfig | grep ${pxe_bridge}; then
- ifdown ${pxe_bridge}
+ link_state=$(ip link show ${pxe_bridge} | grep -oP 'state \K[^ ]+')
+ if [[ ${link_state} != 'DOWN' ]]; then
+ ip link set dev ${pxe_bridge} down
+ sleep 5
+ link_state=$(ip link show ${pxe_bridge} | grep -oP 'state \K[^ ]+')
+ if [[ ${link_state} != 'DOWN' ]]; then
+ echo "${red}Could not bring DOWN bridge ${pxe_bridge} link state is ${link_state}${reset}"
+ exit 1
+ fi
fi
brctl delbr ${pxe_bridge}
if ifconfig | grep ${pxe_bridge} || brctl show | grep ${pxe_bridge}; then
blue=`tput setaf 4`
red=`tput setaf 1`
green=`tput setaf 2`
-interface='enp7s0'
+private_interface='enp6s0'
+public_interface='enp8s0'
pxe_bridge='pxebr'
fuel_gw_ip='10.20.0.1/16'
##END VARS
}
setup_pxe_bridge() {
- #Check whether base interface exists
- echo "${blue}Checking whether base interface ${interface} exists${reset}"
- if ! ip link show ${interface}; then
- echo "${red}Base interface ${interface} does not exists!${reset}"
+ #Check whether private interface exists
+ echo "${blue}Checking whether private interface ${private_interface} exists${reset}"
+ if ! ip link show ${private_interface}; then
+ echo "${red}Private interface ${private_interface} does not exists!${reset}"
exit 1
else
echo "${green}OK!${reset}"
fi
- #Check whether base interface is UP
- check_interface ${interface}
+ #Check whether private interface is UP
+ check_interface ${private_interface}
pxe_vid=0
- pxe_interface="${interface}.${pxe_vid}"
+ pxe_interface="${private_interface}.${pxe_vid}"
#Check whether VLAN 0 (PXE) interface exists
echo "${blue}Checking whether VLAN 0 (PXE) interface ${pxe_interface} exists${reset}"
if ! ip link show ${pxe_interface}; then
echo "${blue}Creating VLAN 0 (PXE) interface ${pxe_interface}${reset}"
- ip link add link ${interface} name ${pxe_interface} type vlan id ${pxe_vid}
+ ip link add link ${private_interface} name ${pxe_interface} type vlan id ${pxe_vid}
else
echo "${green}OK!${reset}"
fi
echo "${green}OK!${reset}"
fi
}
+###check whether access to public network is granted
+check_access_enabled_to_public_network() {
+ #Check whether public interface exists
+ echo "${blue}Checking whether public interface ${public_interface} exists${reset}"
+ if ! ip link show ${public_interface}; then
+ echo "${red}Public interface ${public_interface} does not exists!${reset}"
+ exit 1
+ else
+ echo "${green}OK!${reset}"
+ fi
+
+ #Check whether public interface ${public_interface} is UP
+ check_interface ${public_interface}
+
+ echo "${blue}Checking whether access is granted to public network through interface ${public_interface}${reset}"
+ if ! sudo iptables -t nat -L POSTROUTING -v | grep "MASQUERADE.*${public_interface}.*anywhere.*anywhere"; then
+ echo "${blue}Enable access to public network through interface ${public_interface}${reset}"
+ iptables -t nat -A POSTROUTING -o ${public_interface} -j MASQUERADE
+ else
+ echo "${green}OK!${reset}"
+ fi
+}
##END FUNCTIONS
main() {
load_kvm_kernel_mod
start_libvirtd_service
setup_pxe_bridge
+ check_access_enabled_to_public_network
}
main "$@"
$controllers_hostnames_array_str = $controllers_hostnames_array
$controllers_hostnames_array = split($controllers_hostnames_array, ',')
+ if ($admin_network != '') and ($admin_network != 'false') {
+ $admin_nic = get_nic_from_network("$admin_network")
+ if $admin_nic == '' { fail('admin_nic was not found') }
+ #Disable defalute route on Admin network
+ file_line { 'disable-defroute-admin':
+ path => "/etc/sysconfig/network-scripts/ifcfg-$admin_nic",
+ line => 'DEFROUTE=no',
+ match => '^DEFROUTE',
+ }
+ }
+
#find public NIC
$public_nic = get_nic_from_network("$public_network")
$public_nic_ip = get_ip_from_nic("$public_nic")
$public_nic_netmask = get_netmask_from_nic("$public_nic")
if ($public_nic == '') or ($public_nic_ip == '') or ($public_nic == "br-ex") or ($public_nic == "br_ex") {
- notify {"Skipping augeas, public_nic ${public_nic}, public_nic_ip ${public_nic_ip}":}
+ notify {"Skipping augeas, public_nic ${public_nic}, public_nic_ip ${public_nic_ip}":}
exec {'ovs-vsctl -t 10 -- --may-exist add-br br-ex':
path => ["/usr/sbin/", "/usr/bin/"],
# sudo apt-get update
# sudo apt-get install -y apache2
# SHELL
-
+
config.ssh.username = 'root'
config.ssh.password = 'vagrant'
config.ssh.insert_key = 'true'
+ config.vm.provision :shell, path: "resize_partition.sh"
config.vm.provision "ansible" do |ansible|
ansible.playbook = "reload_playbook.yml"
end
config.vm.provision :shell, :inline => "systemctl stop dhcpd"
config.vm.provision :shell, :inline => "systemctl disable dhcpd"
end
+ config.vm.provision :shell, path: "resize_lvm.sh"
end
declare -A admin_ip_arr
declare -A public_ip_arr
+vagrant_box_dir=~/.vagrant.d/boxes/opnfv-VAGRANTSLASH-centos-7.0/1.0.0/virtualbox/
+vagrant_box_vmdk=box-disk1.vmdk
vm_dir=/var/opt/opnfv
script=`realpath $0`
##END VARS
Can also be used with -virtual. Example: -public_nic em3"
echo -e "\n -storage_nic : Baremetal NIC for the storage network. Optional. Not applicable with -virtual. \
Private NIC will be used for storage if not specified. Example: -storage_nic em4"
+ echo -e "\n -single_baremetal_nic : Baremetal NIC for the all in one network. Optional. Not applicable with -virtual. \
+Example: -single_baremetal_nic em1"
}
##verify vm dir exists
shift 2
nic_arg_flag=1
;;
+ -single_baremetal_nic)
+ single_baremetal_nic=$2
+ shift 2
+ ;;
*)
display_usage
exit 1
##Validate nic args
if [[ $nic_arg_flag -eq 1 ]]; then
+ if [ ! -z "$single_baremetal_nic" ]; then
+ echo "${red}Please do not specify other nic types along with single_baremetal_nic!${reset}"
+ exit 1
+ fi
+
if [ -z "$virtual" ]; then
for nic_type in admin_nic private_nic public_nic; do
eval "nic_value=\$$nic_type"
done
else
##if virtual only public_nic should be specified
- for nic_type in admin_nic private_nic storage_nic; do
+ for nic_type in admin_nic private_nic storage_nic single_baremetal_nic; do
eval "nic_value=\$$nic_type"
if [ ! -z "$nic_value" ]; then
echo "${red}$nic_type is not a valid argument using -virtual. Please only specify public_nic!${reset}"
exit 1
fi
fi
+ elif [ ! -z "$single_baremetal_nic" ]; then
+ interface_ip=$(find_ip $single_baremetal_nic)
+ if [ ! "$interface_ip" ]; then
+ echo "${red}Single Baremetal NIC: $single_baremetal_nic does not have an IP address! Exiting... ${reset}"
+ exit 1
+ fi
fi
}
fi
nic_array=( $nic_list )
output=$nic_list
+ elif [ ! -z "$single_baremetal_nic" ]; then
+ output=$single_baremetal_nic
else
echo "${blue}Detecting network configuration...${reset}"
##detect host 1 or 3 interface configuration
#output=`ip link show | grep -E "^[0-9]" | grep -Ev ": lo|tun|virbr|vboxnet" | awk '{print $2}' | sed 's/://'`
- output=`/bin/ls -l /sys/class/net | tail -n +2 | grep -v virtual | cut -d " " -f10`
+ #output=`/bin/ls -l /sys/class/net | tail -n +2 | grep -v virtual | cut -d " " -f10`
+ output=`/bin/ls -l /sys/class/net | tail -n +2 | grep -v virtual | awk {'print $9'}`
fi
if [ ! "$output" ]; then
sed -i 's/^.*eth_replace2.*$/ config.vm.network "public_network", ip: '\""$new_ip"\"', bridge: '\'"$interface"\'', netmask: '\""$subnet_mask"\"'/' Vagrantfile
if_counter=1
else
- ##find number of interfaces with ip and substitute in VagrantFile
- if_counter=0
- for interface in ${output}; do
-
- if [ "$if_counter" -ge 4 ]; then
- break
- fi
- interface_ip=$(find_ip $interface)
+ if [ ! -z $single_baremetal_nic ]; then
+ interface_ip=$(find_ip $single_baremetal_nic)
if [ ! "$interface_ip" ]; then
- continue
+ echo "${red}Unable to determine IP address of $single_baremetal_nic. Exiting...${reset}"
+ exit 1
+ fi
+ subnet_mask=$(find_netmask $single_baremetal_nic)
+ public_subnet_mask=$subnet_mask
+ if ! verify_subnet_size $public_subnet_mask 50; then
+ echo "${red} Not enough IPs in subnet: $interface_ip $subnet_mask. Need at least 50 IPs. Please resize subnet! Exiting ${reset}"
+ exit 1
fi
+
new_ip=$(next_usable_ip $interface_ip)
if [ ! "$new_ip" ]; then
- continue
+ echo "${red}Unable to allocate new IP address: $interface_ip $subnet_mask Exiting...${reset}"
+ exit 1
fi
- interface_arr[$interface]=$if_counter
- interface_ip_arr[$if_counter]=$new_ip
- subnet_mask=$(find_netmask $interface)
- if [ "$if_counter" -eq 0 ]; then
- admin_subnet_mask=$subnet_mask
- if ! verify_subnet_size $admin_subnet_mask 5; then
- echo "${red} Not enough IPs in admin subnet: ${interface_ip_arr[$if_counter]} ${admin_subnet_mask}. Need at least 5 IPs. Please resize subnet! Exiting ${reset}"
- exit 1
- fi
- elif [ "$if_counter" -eq 1 ]; then
- private_subnet_mask=$subnet_mask
- private_short_subnet_mask=$(find_short_netmask $interface)
+ this_default_gw=$(ip route | grep default | awk '{print $3}')
+ echo "${blue}Default Gateway: $this_default_gw ${reset}"
+ this_default_gw_interface=$(ip route get $this_default_gw | awk '{print $3}')
+ if [ "$this_default_gw_interface" != "$single_baremetal_nic" ]; then
+ echo "${red}Error: Your default gateway interface: $this_default_gw_interface does not \
+match the baremetal nic you provided: ${single_baremetal_nic}. Exiting...${reset}"
+ exit 1
+ fi
+ sed -i 's/^.*eth_replace0.*$/ config.vm.network "public_network", ip: '\""$new_ip"\"', bridge: '\'"$single_baremetal_nic"\'', netmask: '\""$subnet_mask"\"'/' Vagrantfile
+ interface_ip_arr[0]=$new_ip
+ interface_arr[$single_baremetal_nic]=0
+ admin_ip=$new_ip
+ admin_subnet_mask=$subnet_mask
+ public_short_subnet_mask=$(find_short_netmask $single_baremetal_nic)
+ if_counter=1
+ else
+ ##find number of interfaces with ip and substitute in VagrantFile
+ if_counter=0
+ for interface in ${output}; do
- if ! verify_subnet_size $private_subnet_mask 15; then
- echo "${red} Not enough IPs in private subnet: ${interface_ip_arr[$if_counter]} ${private_subnet_mask}. Need at least 15 IPs. Please resize subnet! Exiting ${reset}"
- exit 1
+ if [ "$if_counter" -ge 4 ]; then
+ break
fi
- elif [ "$if_counter" -eq 2 ]; then
- public_subnet_mask=$subnet_mask
- public_short_subnet_mask=$(find_short_netmask $interface)
-
- if ! verify_subnet_size $public_subnet_mask 25; then
- echo "${red} Not enough IPs in public subnet: ${interface_ip_arr[$if_counter]} ${public_subnet_mask}. Need at least 25 IPs. Please resize subnet! Exiting ${reset}"
- exit 1
+ interface_ip=$(find_ip $interface)
+ if [ ! "$interface_ip" ]; then
+ continue
fi
- elif [ "$if_counter" -eq 3 ]; then
- storage_subnet_mask=$subnet_mask
+ new_ip=$(next_usable_ip $interface_ip)
+ if [ ! "$new_ip" ]; then
+ continue
+ fi
+ interface_arr[$interface]=$if_counter
+ interface_ip_arr[$if_counter]=$new_ip
+ subnet_mask=$(find_netmask $interface)
+ if [ "$if_counter" -eq 0 ]; then
+ admin_subnet_mask=$subnet_mask
+ admin_ip=$new_ip
+ if ! verify_subnet_size $admin_subnet_mask 5; then
+ echo "${red} Not enough IPs in admin subnet: ${interface_ip_arr[$if_counter]} ${admin_subnet_mask}. Need at least 5 IPs. Please resize subnet! Exiting ${reset}"
+ exit 1
+ fi
+
+ elif [ "$if_counter" -eq 1 ]; then
+ private_subnet_mask=$subnet_mask
+ private_short_subnet_mask=$(find_short_netmask $interface)
- if ! verify_subnet_size $storage_subnet_mask 10; then
- echo "${red} Not enough IPs in storage subnet: ${interface_ip_arr[$if_counter]} ${storage_subnet_mask}. Need at least 10 IPs. Please resize subnet! Exiting ${reset}"
+ if ! verify_subnet_size $private_subnet_mask 15; then
+ echo "${red} Not enough IPs in private subnet: ${interface_ip_arr[$if_counter]} ${private_subnet_mask}. Need at least 15 IPs. Please resize subnet! Exiting ${reset}"
+ exit 1
+ fi
+ elif [ "$if_counter" -eq 2 ]; then
+ public_subnet_mask=$subnet_mask
+ public_short_subnet_mask=$(find_short_netmask $interface)
+
+ if ! verify_subnet_size $public_subnet_mask 25; then
+ echo "${red} Not enough IPs in public subnet: ${interface_ip_arr[$if_counter]} ${public_subnet_mask}. Need at least 25 IPs. Please resize subnet! Exiting ${reset}"
+ exit 1
+ fi
+ elif [ "$if_counter" -eq 3 ]; then
+ storage_subnet_mask=$subnet_mask
+
+ if ! verify_subnet_size $storage_subnet_mask 10; then
+ echo "${red} Not enough IPs in storage subnet: ${interface_ip_arr[$if_counter]} ${storage_subnet_mask}. Need at least 10 IPs. Please resize subnet! Exiting ${reset}"
+ exit 1
+ fi
+ else
+ echo "${red}ERROR: interface counter outside valid range of 0 to 3: $if_counter ! ${reset}"
exit 1
fi
- else
- echo "${red}ERROR: interface counter outside valid range of 0 to 3: $if_counter ! ${reset}"
- exit 1
- fi
- sed -i 's/^.*eth_replace'"$if_counter"'.*$/ config.vm.network "public_network", ip: '\""$new_ip"\"', bridge: '\'"$interface"\'', netmask: '\""$subnet_mask"\"'/' Vagrantfile
- ((if_counter++))
- done
+ sed -i 's/^.*eth_replace'"$if_counter"'.*$/ config.vm.network "public_network", ip: '\""$new_ip"\"', bridge: '\'"$interface"\'', netmask: '\""$subnet_mask"\"'/' Vagrantfile
+ ((if_counter++))
+ done
+ fi
fi
+
##now remove interface config in Vagrantfile for 1 node
##if 1, 3, or 4 interfaces set deployment type
##if 2 interfaces remove 2nd interface and set deployment type
sed -i 's/^.*eth_replace0.*$/ config.vm.network "private_network", virtualbox__intnet: "my_admin_network", ip: '\""$admin_internal_ip"\"', netmask: '\""$private_subnet_mask"\"'/' Vagrantfile
remove_vagrant_network eth_replace3
deployment_type=three_network
+ elif [[ "$if_counter" == 1 ]]; then
+ echo "${blue}Single network detected for Baremetal deployment! ${reset}"
+ remove_vagrant_network eth_replace1
+ remove_vagrant_network eth_replace2
+ remove_vagrant_network eth_replace3
+ deployment_type="single_network"
else
echo "${blue}Single network or 2 network detected for baremetal deployment. This is unsupported! Exiting. ${reset}"
exit 1
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
+ public_gateway=$host_default_gw
;;
3)
echo "${red}Default Gateway Detected on Storage Interface!${reset}"
##private interface will be of hosts, so we need to know the provisioned host interface name
##we add biosdevname=0, net.ifnames=0 to the kickstart to use regular interface naming convention on hosts
##replace IP for parameters with next IP that will be given to controller
- if [ "$deployment_type" == "single_network" ]; then
- ##we also need to assign IP addresses to nodes
- ##for single node, foreman is managing the single network, so we can't reserve them
- ##not supporting single network anymore for now
- echo "{blue}Single Network type is unsupported right now. Please check your interface configuration. Exiting. ${reset}"
- exit 0
- elif [[ "$deployment_type" == "multi_network" || "$deployment_type" == "three_network" ]]; then
+ if [[ "$deployment_type" == "single_network" || "$deployment_type" == "multi_network" || "$deployment_type" == "three_network" ]]; then
if [ "$deployment_type" == "three_network" ]; then
sed -i 's/^.*network_type:.*$/network_type: three_network/' opnfv_ksgen_settings.yml
+ elif [ "$deployment_type" == "single_network" ]; then
+ sed -i 's/^.*network_type:.*$/network_type: single_network/' opnfv_ksgen_settings.yml
+ next_single_ip=${interface_ip_arr[0]}
+ foreman_ip=$next_single_ip
+ next_single_ip=$(next_usable_ip $next_single_ip)
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]}
- type=_private
- control_count=0
- for node in controller1 controller2 controller3; do
- next_private_ip=$(next_usable_ip $next_private_ip)
- if [ ! "$next_private_ip" ]; then
- printf '%s\n' 'deploy.sh: Unable to find next ip for private network for control nodes' >&2
- exit 1
- fi
- sed -i 's/'"$node$type"'/'"$next_private_ip"'/g' opnfv_ksgen_settings.yml
- controller_ip_array=$controller_ip_array$next_private_ip,
- controllers_ip_arr[$control_count]=$next_private_ip
- ((control_count++))
- done
+ if [ "$deployment_type" == "single_network" ]; then
+ next_private_ip=$next_single_ip
+ sed -i 's/^.*no_dhcp:.*$/no_dhcp: true/' opnfv_ksgen_settings.yml
+ nodes=`sed -nr '/nodes:/{:start /workaround/!{N;b start};//p}' opnfv_ksgen_settings.yml | sed -n '/^ [A-Za-z0-9]\+:$/p' | sed 's/\s*//g' | sed 's/://g'`
+ compute_nodes=`echo $nodes | tr " " "\n" | grep -v controller | tr "\n" " "`
+ controller_nodes=`echo $nodes | tr " " "\n" | grep controller | tr "\n" " "`
+ nodes=${controller_nodes}${compute_nodes}
+ next_admin_ip=${interface_ip_arr[0]}
+ type1=_admin
+ type2=_private
+ control_count=0
+ for node in ${controller_nodes}; do
+ next_private_ip=$(next_usable_ip $next_private_ip)
+ if [ ! "$next_private_ip" ]; then
+ echo "${red} Unable to find an unused IP for $node ! ${reset}"
+ exit 1
+ else
+ sed -i 's/'"$node$type1"'/'"$next_private_ip"'/g' opnfv_ksgen_settings.yml
+ sed -i 's/'"$node$type2"'/'"$next_private_ip"'/g' opnfv_ksgen_settings.yml
+ controller_ip_array=$controller_ip_array$next_private_ip,
+ controllers_ip_arr[$control_count]=$next_private_ip
+ ((control_count++))
+ fi
+ done
- next_public_ip=${interface_ip_arr[2]}
- foreman_ip=$next_public_ip
+ for node in ${compute_nodes}; do
+ next_private_ip=$(next_usable_ip $next_private_ip)
+ if [ ! "$next_private_ip" ]; then
+ echo "${red} Unable to find an unused IP for $node ! ${reset}"
+ exit 1
+ else
+ sed -i 's/'"$node$type1"'/'"$next_private_ip"'/g' opnfv_ksgen_settings.yml
+ fi
+ done
+
+ else
+ next_private_ip=${interface_ip_arr[1]}
+
+ type=_private
+ control_count=0
+ for node in controller1 controller2 controller3; do
+ next_private_ip=$(next_usable_ip $next_private_ip)
+ if [ ! "$next_private_ip" ]; then
+ printf '%s\n' 'deploy.sh: Unable to find next ip for private network for control nodes' >&2
+ exit 1
+ fi
+ sed -i 's/'"$node$type"'/'"$next_private_ip"'/g' opnfv_ksgen_settings.yml
+ controller_ip_array=$controller_ip_array$next_private_ip,
+ controllers_ip_arr[$control_count]=$next_private_ip
+ ((control_count++))
+ done
+ fi
+
+ if [[ "$deployment_type" != "single_network" ]]; then
+ next_public_ip=${interface_ip_arr[2]}
+ foreman_ip=$next_public_ip
+ fi
##if no dhcp, find all the Admin IPs for nodes in advance
if [ $virtual ]; then
##replace foreman site
sed -i 's/^.*foreman_url:.*$/ foreman_url:'" https:\/\/$foreman_ip"'\/api\/v2\//' opnfv_ksgen_settings.yml
##replace public vips
- ##no need to do this if no dhcp
- if [[ -z "$enable_virtual_dhcp" && ! -z "$virtual" ]]; then
- next_public_ip=$(next_usable_ip $next_public_ip)
+
+ ##if single_network deployment we continue next_public_ip from next_private_ip
+ if [[ "$deployment_type" == "single_network" ]]; then
+ next_public_ip=$(next_usable_ip $next_private_ip)
else
- next_public_ip=$(increment_ip $next_public_ip 10)
+ ##no need to do this if no dhcp
+ if [[ -z "$enable_virtual_dhcp" && ! -z "$virtual" ]]; then
+ next_public_ip=$(next_usable_ip $next_public_ip)
+ else
+ next_public_ip=$(increment_ip $next_public_ip 10)
+ fi
fi
public_output=$(grep -E '*public_vip' opnfv_ksgen_settings.yml)
done <<< "$public_output"
fi
+ ##replace admin_network param for bare metal deployments
+ if [[ -z "$virtual" && -z "$single_network" ]]; then
+ admin_subnet=$(find_subnet $admin_ip $admin_subnet_mask)
+ sed -i 's/^.*admin_network:.*$/ admin_network:'" $admin_subnet"'/' opnfv_ksgen_settings.yml
+ else
+ sed -i 's/^.*admin_network:.*$/ admin_network:'" \"false\""'/' opnfv_ksgen_settings.yml
+ fi
##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
+ if [ "$deployment_type" == "single_network" ]; then
+ sed -i 's/^.*private_network:.*$/ private_network:'" $public_subnet"'/' opnfv_ksgen_settings.yml
+ else
+ ##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
+ fi
+
##replace storage_network
- if [ "$deployment_type" == "three_network" ]; then
+ if [ "$deployment_type" == "single_network" ]; then
+ sed -i 's/^.*storage_network:.*$/ storage_network:'" $public_subnet"'/' opnfv_ksgen_settings.yml
+ elif [ "$deployment_type" == "three_network" ]; then
sed -i 's/^.*storage_network:.*$/ storage_network:'" $private_subnet"'/' opnfv_ksgen_settings.yml
else
next_storage_ip=${interface_ip_arr[3]}
##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
+ if [ "$deployment_type" == "single_network" ]; then
+ sed -i 's/^.*private_subnet:.*$/ private_subnet:'" $public_subnet"'/' opnfv_ksgen_settings.yml
+ else
+ ##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
+ fi
##replace public_dns param to be foreman server
- sed -i 's/^.*public_dns:.*$/ public_dns: '${interface_ip_arr[2]}'/' opnfv_ksgen_settings.yml
+ if [ "$deployment_type" == "single_network" ]; then
+ sed -i 's/^.*public_dns:.*$/ public_dns: '${interface_ip_arr[0]}'/' opnfv_ksgen_settings.yml
+ else
+ sed -i 's/^.*public_dns:.*$/ public_dns: '${interface_ip_arr[2]}'/' opnfv_ksgen_settings.yml
+ fi
##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)
+ if [ "$deployment_type" == "single_network" ]; then
+ public_gateway=$node_default_gw
+ else
+ ##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
fi
sed -i 's/^.*public_gateway:.*$/ public_gateway:'" $public_gateway"'/' opnfv_ksgen_settings.yml
node_type=config_nodes_${node}_type
node_type=$(eval echo \$$node_type)
+ ##modify memory and cpu
+ node_memory=$(eval echo \${config_nodes_${node}_memory})
+ node_vcpus=$(eval echo \${config_nodes_${node}_cpus})
+ node_storage=$(eval echo \${config_nodes_${node}_disk})
+
+ sed -i 's/^.*vb.memory =.*$/ vb.memory = '"$node_memory"'/' Vagrantfile
+ sed -i 's/^.*vb.cpus =.*$/ vb.cpus = '"$node_vcpus"'/' Vagrantfile
+
+ if ! resize_vagrant_disk $node_storage; then
+ echo "${red}Error while resizing vagrant box to size $node_storage for $node! ${reset}"
+ exit 1
+ fi
+
##trozet test make compute nodes wait 20 minutes
if [ "$compute_wait_completed" = false ] && [ "$node_type" != "controller" ]; then
echo "${blue}Waiting 20 minutes for Control nodes to install before continuing with Compute nodes..."
##modify provisioning to do puppet install, config, and foreman check-in
##substitute host_name and dns_server in the provisioning script
- host_string=config_nodes_${node}_hostname
- host_name=$(eval echo \$$host_string)
+ host_string=config_nodes_${node}_short_name
+ short_host_name=$(eval echo \$$host_string)
+ ##substitute domain_name
+ domain_name=$config_domain_name
+ sed -i 's/^domain_name=REPLACE/domain_name='$domain_name'/' vm_nodes_provision.sh
+ host_name=${short_host_name}.${domain_name}
sed -i 's/^host_name=REPLACE/host_name='$host_name'/' vm_nodes_provision.sh
##dns server should be the foreman server
sed -i 's/^dns_server=REPLACE/dns_server='${interface_ip_arr[0]}'/' vm_nodes_provision.sh
sed -i 's/bootstrap.sh/vm_nodes_provision.sh/' Vagrantfile
## modify default_gw to be node_default_gw
sed -i 's/^.*default_gw =.*$/ default_gw = '\""$node_default_gw"\"'/' Vagrantfile
- ## modify VM memory to be 4gig
- ##if node type is controller
- if [ "$node_type" == "controller" ]; then
- sed -i 's/^.*vb.memory =.*$/ vb.memory = 4096/' Vagrantfile
- fi
echo "${blue}Starting Vagrant Node $node! ${reset}"
##stand up vagrant
if ! vagrant up; then
fi
}
+##resizes vagrant disk (cannot shrink)
+##params: size in GB
+##usage: resize_vagrant_disk 100
+resize_vagrant_disk() {
+ if [[ "$1" < 40 ]]; then
+ echo "${blue}Warn: Requested disk size cannot be less than 40, using 40 as new size${reset}"
+ new_size_gb=40
+ else
+ new_size_gb=$1
+ fi
+
+ if ! vagrant box list | grep opnfv; then
+ vagrant box remove -f opnfv/centos-7.0
+ if ! vagrant box add opnfv/centos-7.0 --provider virtualbox; then
+ echo "${red}Unable to reclone vagrant box! Exiting...${reset}"
+ exit 1
+ fi
+ fi
+
+ pushd $vagrant_box_dir
+
+ # Close medium to make sure we can modify it
+ vboxmanage closemedium disk $vagrant_box_vmdk
+
+ cur_size=$(vboxmanage showhdinfo $vagrant_box_vmdk | grep -i capacity | grep -Eo [0-9]+)
+ cur_size_gb=$((cur_size / 1024))
+
+ if [ "$cur_size_gb" -eq "$new_size_gb" ]; then
+ echo "${blue}Info: Disk size already ${cur_size_gb} ${reset}"
+ popd
+ return
+ elif [[ "$new_size_gb" < "$cur_size_gb" ]] ; then
+ echo "${blue}Info: Requested disk is less than ${cur_size_gb} ${reset}"
+ echo "${blue}Re-adding vagrant box${reset}"
+ if vagrant box list | grep opnfv; then
+ popd
+ vagrant box remove -f opnfv/centos-7.0
+ if ! vagrant box add opnfv/centos-7.0 --provider virtualbox; then
+ echo "${red}Unable to reclone vagrant box! Exiting...${reset}"
+ exit 1
+ fi
+ pushd $vagrant_box_dir
+ fi
+ fi
+
+ new_size=$((new_size_gb * 1024))
+ if ! vboxmanage clonehd $vagrant_box_vmdk tmp-disk.vdi --format vdi; then
+ echo "${red}Error: Unable to clone ${vagrant_box_vmdk}${reset}"
+ popd
+ return 1
+ fi
+
+ if ! vboxmanage modifyhd tmp-disk.vdi --resize $new_size; then
+ echo "${red}Error: Unable modify tmp-disk.vdi to ${new_size}${reset}"
+ popd
+ return 1
+ fi
+
+ if ! vboxmanage clonehd tmp-disk.vdi resized-disk.vmdk --format vmdk; then
+ echo "${red}Error: Unable clone tmp-disk.vdi to vmdk${reset}"
+ popd
+ return 1
+ fi
+
+ vboxmanage closemedium disk tmp-disk.vdi --delete
+ rm -f tmp-disk.vdi $vagrant_box_vmdk
+ cp -f resized-disk.vmdk $vagrant_box_vmdk
+ vboxmanage closemedium disk resized-disk.vmdk --delete
+ popd
+}
+
##END FUNCTIONS
main() {
controllers_hostnames_array: oscontroller1,oscontroller2,oscontroller3
controllers_ip_array:
amqp_vip:
+ admin_network:
private_subnet:
cinder_admin_vip:
cinder_private_vip:
network_type: multi_network
default_gw:
no_dhcp: false
+domain_name: opnfv.com
foreman:
seed_values:
- { name: heat_cfn, oldvalue: true, newvalue: false }
openstack_packstack_rpm: http://REPLACE_ME/brewroot/packages/openstack-puppet-modules/2013.2/9.el6ost/noarch/openstack-puppet-modules-2013.2-9.el6ost.noarch.rpm
nodes:
compute:
- name: oscompute11.opnfv.com
- hostname: oscompute11.opnfv.com
+ name: oscompute11.{{ domain_name }}
+ hostname: oscompute11.{{ domain_name }}
short_name: oscompute11
type: compute
host_type: baremetal
admin_ip: compute_admin
ansible_ssh_pass: "Op3nStack"
admin_password: ""
+ cpus: 2
+ memory: 2048
+ disk: 40
groups:
- compute
- foreman_nodes
- rdo
- neutron
controller1:
- name: oscontroller1.opnfv.com
- hostname: oscontroller1.opnfv.com
+ name: oscontroller1.{{ domain_name }}
+ hostname: oscontroller1.{{ domain_name }}
short_name: oscontroller1
type: controller
host_type: baremetal
private_mac: "10:23:45:67:87:AC"
ansible_ssh_pass: "Op3nStack"
admin_password: "octopus"
+ cpus: 2
+ memory: 4096
+ disk: 40
groups:
- controller
- foreman_nodes
- rdo
- neutron
controller2:
- name: oscontroller2.opnfv.com
- hostname: oscontroller2.opnfv.com
+ name: oscontroller2.{{ domain_name }}
+ hostname: oscontroller2.{{ domain_name }}
short_name: oscontroller2
type: controller
host_type: baremetal
private_mac: "10:23:45:67:87:AD"
ansible_ssh_pass: "Op3nStack"
admin_password: "octopus"
+ cpus: 2
+ memory: 4096
+ disk: 40
groups:
- controller
- foreman_nodes
- rdo
- neutron
controller3:
- name: oscontroller3.opnfv.com
- hostname: oscontroller3.opnfv.com
+ name: oscontroller3.{{ domain_name }}
+ hostname: oscontroller3.{{ domain_name }}
short_name: oscontroller3
type: controller
host_type: baremetal
private_mac: "10:23:45:67:87:AE"
ansible_ssh_pass: "Op3nStack"
admin_password: "octopus"
+ cpus: 2
+ memory: 4096
+ disk: 40
groups:
- controller
- foreman_nodes
ha_flag: "false"
odl_flag: "true"
odl_control_ip:
+ admin_network:
private_network:
storage_network:
public_network:
network_type: multi_network
default_gw:
no_dhcp: false
+domain_name: opnfv.com
foreman:
seed_values:
- { name: heat_cfn, oldvalue: true, newvalue: false }
openstack_packstack_rpm: http://REPLACE_ME/brewroot/packages/openstack-puppet-modules/2013.2/9.el6ost/noarch/openstack-puppet-modules-2013.2-9.el6ost.noarch.rpm
nodes:
compute:
- name: oscompute11.opnfv.com
- hostname: oscompute11.opnfv.com
+ name: oscompute11.{{ domain_name }}
+ hostname: oscompute11.{{ domain_name }}
short_name: oscompute11
type: compute
host_type: baremetal
admin_ip: compute_admin
ansible_ssh_pass: "Op3nStack"
admin_password: ""
+ cpus: 2
+ memory: 2048
+ disk: 40
groups:
- compute
- foreman_nodes
- rdo
- neutron
controller1:
- name: oscontroller1.opnfv.com
- hostname: oscontroller1.opnfv.com
+ name: oscontroller1.{{ domain_name }}
+ hostname: oscontroller1.{{ domain_name }}
short_name: oscontroller1
type: controller
host_type: baremetal
private_mac: "10:23:45:67:87:AC"
ansible_ssh_pass: "Op3nStack"
admin_password: "octopus"
+ cpus: 2
+ memory: 4096
+ disk: 40
groups:
- controller
- foreman_nodes
--- /dev/null
+#!/usr/bin/env bash
+
+#script for resizing volumes in Foreman/QuickStack VM
+#author: Tim Rozet (trozet@redhat.com)
+#
+#Uses Vagrant and VirtualBox
+#VagrantFile uses resize_partition.sh
+#
+#Pre-requisties:
+#Vagrant box disk size already resized
+#Partition already resized
+
+##VARS
+reset=`tput sgr0`
+blue=`tput setaf 4`
+red=`tput setaf 1`
+green=`tput setaf 2`
+
+##END VARS
+
+echo "${blue}Resizing physical volume${reset}"
+if ! pvresize /dev/sda2; then
+ echo "${red}Unable to resize physical volume${reset}"
+ exit 1
+else
+ new_part_size=`pvdisplay | grep -Eo "PV Size\s*[0-9]+\." | awk {'print $3'} | tr -d .`
+ echo "${blue}New physical volume size: ${new_part_size}${reset}"
+fi
+
+echo "${blue}Resizing logical volume${reset}"
+if ! lvextend /dev/mapper/centos-root -r -l +100%FREE; then
+ echo "${red}Unable to resize logical volume${reset}"
+ exit 1
+else
+ new_fs_size=`df -h | grep centos-root | awk '{print $2}'`
+ echo "${blue}Filesystem resized to: ${new_fs_size}${reset}"
+fi
--- /dev/null
+#!/usr/bin/env bash
+
+#script for extending disk partition in Foreman/QuickStack VM
+#author: Tim Rozet (trozet@redhat.com)
+#
+#Uses Vagrant and VirtualBox
+#VagrantFile uses resize_partition.sh
+#
+#Pre-requisties:
+#Vagrant box disk size already resized
+
+##VARS
+reset=`tput sgr0`
+blue=`tput setaf 4`
+red=`tput setaf 1`
+green=`tput setaf 2`
+
+##END VARS
+
+echo "${blue}Extending partition...${reset}"
+echo "d
+2
+n
+p
+
+
+
+p
+t
+2
+8e
+w
+"|fdisk /dev/sda; true
host_name=REPLACE
dns_server=REPLACE
host_ip=REPLACE
+domain_name=REPLACE
##END VARS
##set hostname
##modify /etc/resolv.conf to point to foreman
echo "${blue} Configuring resolv.conf with DNS: $dns_server ${reset}"
cat > /etc/resolv.conf << EOF
-search ci.com opnfv.com
+search $domain_name
nameserver $dns_server
nameserver 8.8.8.8
report = true
ignoreschedules = true
daemon = false
-ca_server = foreman-server.opnfv.com
+ca_server = foreman-server.$domain_name
certname = $host_name
environment = production
-server = foreman-server.opnfv.com
+server = foreman-server.$domain_name
runinterval = 600
EOF
# Setup puppet to run on system reboot
/sbin/chkconfig --level 345 puppet on
-/usr/bin/puppet agent --config /etc/puppet/puppet.conf -o --tags no_such_tag --server foreman-server.opnfv.com --no-daemonize
+/usr/bin/puppet agent --config /etc/puppet/puppet.conf -o --tags no_such_tag --server foreman-server.$domain_name --no-daemonize
sync
# Inform the build system that we are done.
echo "Informing Foreman that we are built"
-wget -q -O /dev/null --no-check-certificate http://foreman-server.opnfv.com:80/unattended/built
+wget -q -O /dev/null --no-check-certificate http://foreman-server.$domain_name:80/unattended/built
echo "Starting puppet"
systemctl start puppet
#Input args
export UNIT_TEST = FALSE
export INTERACTIVE = TRUE
-export ISOSRC = file:$(shell pwd)/fuel-6.0.1.iso
+export ISOSRC = file:$(shell pwd)/fuel-6.1.iso
export ISOCACHE = $(shell pwd)/$(shell basename $(ISOSRC))
export PRODNO = "OPNFV_BGS"
export REVSTATE = "P0000"
#Build subclasses
SUBDIRS := f_isoroot
-SUBDIRS += f_opnfv_puppet
-SUBDIRS += f_osnaily
-SUBDIRS += f_l23network
-SUBDIRS += f_resolvconf
-SUBDIRS += f_ntp
# f_example is only an example of how to generate a .deb package and
# should not be enabled in official builds.
@echo "fuel" `git -C /tmp/fuel-main show | grep commit | head -1 | cut -d " " -f2` >> $(VERSION_FILE)
# Setup cgroups for docker-in-docker
sudo /root/enable_dockerx2
- # Patch to fix race condition when doing "Docker-in-Docker" build
- cd /tmp/fuel-main && patch -p1 < $(TOPDIR)/fuel-main_1.patch
- # Patch to make the sandbox chroot in Fuel succeed with package
- # installation in a Docker build
- cd /tmp/fuel-main && patch -p1 < $(TOPDIR)/fuel-main_2.patch
# Temporary patch to accomodate for new Ubuntu trusty devops keys not yet
# backported to fuel 6.0 or 6.1
cd /tmp/fuel-main && patch -p0 < $(TOPDIR)/fuel-main_3.patch
- # Temporary patch for pidlockfile which was earlier part of python-daemon
- # but in later pyhon versions is part of python-lockfile. This patch has
- # not yet been backported to fuel 6.0
- cd /tmp/fuel-main/utils && patch -p0 < $(TOPDIR)/fuel-main_4.patch
-
+ # Patch for adding dosfstools, as Fuel 6.1 is running mkfs.vfat
+ cd /tmp/fuel-main && patch -p0 < $(TOPDIR)/fuel-main_5.patch
# Remove Docker optimizations, otherwise multistrap will fail during
# Fuel build.
sudo rm -f /etc/apt/apt.conf.d/docker*
patch-packages:
ORIGISO=$(ISOCACHE) REVSTATE=$(REVSTATE) $(MAKE) -C $@ -f Makefile release
-.PHONY: prepare
-prepare:
- #$(MAKE) -C opendaylight -f Makefile setup
-
.PHONY: build-clean $(SUBCLEAN)
build-clean: $(SUBCLEAN)
$(MAKE) -C patch-packages -f Makefile clean
@rm -f $(NEWISO)
.PHONY: clean $(SUBCLEAN)
-clean: clean-cache prepare $(SUBCLEAN)
+clean: clean-cache $(SUBCLEAN)
$(MAKE) -C patch-packages -f Makefile clean
- #$(MAKE) -C opendaylight -f Makefile clean
@rm -f *.iso
@rm -Rf release
@rm -Rf newiso
# Todo: Make things smarter - we shouldn't need to clean everything
# betwen make invocations.
.PHONY: iso
-iso: prepare build-clean $(ISOCACHE) $(SUBDIRS) patch-packages
+iso: build-clean $(ISOCACHE) $(SUBDIRS) patch-packages
install/install.sh iso $(ISOCACHE) $(NEWISO) $(PRODNO) $(REVSTATE)
@printf "\n\nProduct ISO is $(NEWISO)\n\n"
+
+# Start a bash shell in docker for Makefile debugging
+.PHONY: debug
+debug:
+ @docker version >/dev/null 2>&1 || (echo 'No Docker installation available'; exit 1)
+ docker/runcontext $(DOCKERIMG) bash
-##############################################################################
+#############################################################################
# Copyright (c) 2015 Ericsson AB and others.
# stefan.k.berg@ericsson.com
# jonas.bjurel@ericsson.com
############################################################################
# BEGIN of variables to customize
#
-#CACHEDIRS := opendaylight/f_odl/package
+#CACHEDIRS := foo/bar
-#CACHEFILES := opendaylight/.odl-build-history
-#CACHEFILES += opendaylight/.odl-build.log
CACHEFILES += .versions
CACHEFILES += $(shell basename $(ISOSRC))
#
@if [ ! -f $(BUILD_BASE)/$@ ]; then\
echo " " > $(BUILD_BASE)/$@;\
- ln -s $(BUILD_BASE)/$@ $(CACHE_DIR)/$@;\
+ ln -s $(BUILD_BASE)/$@ $(CACHE_DIR)/$@;\
rm -f $(BUILD_BASE)/$@;\
else\
ln -s $(BUILD_BASE)/$@ $(CACHE_DIR)/$@;\
fi
.PHONY: validate-cache
-validate-cache: prepare $(CACHEVALIDATE)
- @if [[ $(shell md5sum $(BUILD_BASE)/config.mk | cut -f1 -d " ") != $(shell cat $(VERSION_FILE) | grep config.mk | awk '{print $$NF}') ]]; then\
+validate-cache: $(CACHEVALIDATE)
+ @if [ "$(shell md5sum $(BUILD_BASE)/config.mk | cut -f1 -d " ")" != "$(shell cat $(VERSION_FILE) | grep config.mk | awk '{print $$NF}')" ]; then\
echo "Cache does not match current config.mk definition, cache must be rebuilt";\
exit 1;\
fi;
- @if [[ $(shell md5sum $(BUILD_BASE)/cache.mk | cut -f1 -d " ") != $(shell cat $(VERSION_FILE) | grep cache.mk | awk '{print $$NF}') ]]; then\
+ @if [ "$(shell md5sum $(BUILD_BASE)/cache.mk | cut -f1 -d " ")" != "$(shell cat $(VERSION_FILE) | grep cache.mk | awk '{print $$NF}')" ]; then\
echo "Cache does not match current cache.mk definition, cache must be rebuilt";\
exit 1;\
fi;
then \
REMOTE_ID=$(shell git ls-remote $(FUEL_MAIN_REPO) $(FUEL_MAIN_TAG) | awk '{print $$(NF-1)}'); \
fi; \
- if [ $$REMOTE_ID != $(shell cat $(VERSION_FILE) | grep fuel | awk '{print $$NF}') ]; \
+ if [[ $$REMOTE_ID != $(shell cat $(VERSION_FILE) | grep fuel | awk '{print $$NF}') ]]; \
then \
echo "Cache does not match upstream Fuel, cache must be rebuilt!"; \
exit 1; \
fi
- #$(MAKE) -C opendaylight validate-cache
-
.PHONY: $(CACHEVALIDATE)
$(CACHEVALIDATE): %.validate:
@echo VALIDATE $(CACHEVALIDATE)
# http://www.apache.org/licenses/LICENSE-2.0
##############################################################################
-ODL_MAIN_REPO := https://git.opendaylight.org/gerrit/p/controller.git
-ODL_MAIN_TAG := release/helium
-
FUEL_MAIN_REPO := https://github.com/stackforge/fuel-main
-FUEL_MAIN_TAG = stable/6.0
+FUEL_MAIN_TAG = stable/6.1
DOCKER_REPO := http://get.docker.com/builds/Linux/x86_64
DOCKER_TAG := docker-latest
-.PHONY: get-odl-repo
-get-odl-repo:
- @echo $(ODL_MAIN_REPO) $(ODL_MAIN_TAG)
-
.PHONY: get-fuel-repo
get-fuel-repo:
@echo $(FUEL_MAIN_REPO) $(FUEL_MAIN_TAG)
RUN apt-get install -y software-properties-common python-software-properties \
make python-setuptools python-all dpkg-dev debhelper \
fuseiso git genisoimage bind9-host wget curl lintian tmux lxc iptables \
- ca-certificates sudo apt-utils lsb-release
+ ca-certificates sudo apt-utils lsb-release dosfstools
RUN echo "ALL ALL=NOPASSWD: ALL" > /etc/sudoers.d/open-sudo
RUN chmod 0440 /etc/sudoers.d/open-sudo
# http://www.apache.org/licenses/LICENSE-2.0
##############################################################################
-SUBDIRS = f_predeployment f_kscfg f_bootstrap
+SUBDIRS = f_kscfg f_bootstrap f_repobuild
SUBCLEAN = $(addsuffix .clean,$(SUBDIRS))
.PHONY: all
#!/bin/bash
+FUEL_RELEASE=$(grep release: /etc/fuel/version.yaml | cut -d: -f2 | tr -d '" ')
function countdown() {
local i
{ kill "$pid"; wait $!; } 2>/dev/null
case "$key" in
$'\e') echo "Skipping Fuel Setup.."
- echo -n "Applying default Fuel setings..."
- fuelmenu --save-only --iface=eth0
- echo "Done!"
;;
*) echo -e "\nEntering Fuel Setup..."
fuelmenu
esac
fi
fi
+
+
#Reread /etc/sysconfig/network to inform puppet of changes
. /etc/sysconfig/network
hostname "$HOSTNAME"
-### docker stuff
-images_dir="/var/www/nailgun/docker/images"
+service docker start
-# extract docker images
-mkdir -p $images_dir $sources_dir
-rm -f $images_dir/*tar
-pushd $images_dir &>/dev/null
+if [ -f /root/.build_images ]; then
+ #Fail on all errors
+ set -e
+ trap fail EXIT
-echo "Extracting and loading docker images. (This may take a while)"
-lrzip -d -o fuel-images.tar fuel-images.tar.lrz && tar -xf fuel-images.tar && rm -f fuel-images.tar
-popd &>/dev/null
-service docker start
+ echo "Loading Fuel base image for Docker..."
+ docker load -i /var/www/nailgun/docker/images/fuel-images.tar
-# load docker images
-for image in $images_dir/*tar ; do
- echo "Loading docker image ${image}..."
- docker load -i "$image"
- # clean up extracted image
- rm -f "$image"
-done
+ echo "Building Fuel Docker images..."
+ WORKDIR=$(mktemp -d /tmp/docker-buildXXX)
+ SOURCE=/var/www/nailgun/docker
+ REPO_CONT_ID=$(docker -D run -d -p 80 -v /var/www/nailgun:/var/www/nailgun fuel/centos sh -c 'mkdir /var/www/html/os;ln -sf /var/www/nailgun/centos/x86_64 /var/www/html/os/x86_64;/usr/sbin/apachectl -DFOREGROUND')
+ RANDOM_PORT=$(docker port $REPO_CONT_ID 80 | cut -d':' -f2)
+
+ for imagesource in /var/www/nailgun/docker/sources/*; do
+ if ! [ -f "$imagesource/Dockerfile" ]; then
+ echo "Skipping ${imagesource}..."
+ continue
+ fi
+ image=$(basename "$imagesource")
+ cp -R "$imagesource" $WORKDIR/$image
+ mkdir -p $WORKDIR/$image/etc
+ cp -R /etc/puppet /etc/fuel $WORKDIR/$image/etc
+ sed -e "s/_PORT_/${RANDOM_PORT}/" -i $WORKDIR/$image/Dockerfile
+ sed -e 's/production:.*/production: "docker-build"/' -i $WORKDIR/$image/etc/fuel/version.yaml
+ docker build -t fuel/${image}_${FUEL_RELEASE} $WORKDIR/$image
+ done
+ docker rm -f $REPO_CONT_ID
+ rm -rf "$WORKDIR"
+
+ #Remove trap for normal deployment
+ trap - EXIT
+ set +e
+else
+ echo "Loading docker images. (This may take a while)"
+ docker load -i /var/www/nailgun/docker/images/fuel-images.tar
+fi
# apply puppet
puppet apply --detailed-exitcodes -d -v /etc/puppet/modules/nailgun/examples/host-only.pp
shopt -u nullglob
### OPNFV addition END
+# Enable updates repository
+cat > /etc/yum.repos.d/mos${FUEL_RELEASE}-updates.repo << EOF
+[mos${FUEL_RELEASE}-updates]
+name=mos${FUEL_RELEASE}-updates
+baseurl=http://mirror.fuel-infra.org/mos/centos-6/mos${FUEL_RELEASE}/updates/
+gpgcheck=0
+skip_if_unavailable=1
+EOF
+
+# Enable security repository
+cat > /etc/yum.repos.d/mos${FUEL_RELEASE}-security.repo << EOF
+[mos${FUEL_RELEASE}-security]
+name=mos${FUEL_RELEASE}-security
+baseurl=http://mirror.fuel-infra.org/mos/centos-6/mos${FUEL_RELEASE}/security/
+gpgcheck=0
+skip_if_unavailable=1
+EOF
+
+#Check if repo is accessible
+echo "Checking for access to updates repository..."
+repourl=$(grep baseurl /etc/yum.repos.d/*updates* 2>/dev/null | cut -d'=' -f2- | head -1)
+if urlaccesscheck check "$repourl" ; then
+ UPDATE_ISSUES=0
+else
+ UPDATE_ISSUES=1
+fi
+
+if [ $UPDATE_ISSUES -eq 1 ]; then
+ warning="WARNING: There are issues connecting to Fuel update repository.\
+\nPlease fix your connection and update this node with \`yum update\`\
+\nThen run \`dockerctl destroy all; bootstrap_admin_node.sh;\`\
+\nto repeat bootstrap on Fuel Master with the latest updates.\
+\nFor more information, check out Fuel documentation at:\
+\nhttp://docs.mirantis.com/fuel"
+else
+ warning="WARNING: There may be updates available for Fuel.\
+\nYou should update this node with \`yum update\`. If there are available\
+\n updates, run \`dockerctl destroy all; bootstrap_admin_node.sh;\`\
+\nto repeat bootstrap on Fuel Master with the latest updates.\
+\nFor more information, check out Fuel documentation at:\
+\nhttp://docs.mirantis.com/fuel"
+fi
+echo
+echo "*************************************************"
+echo -e "$warning"
+echo "*************************************************"
+echo "Sending notification to Fuel UI..."
+fuel notify --topic warning --send "$warning"
echo "Fuel node deployment complete!"
#!/bin/bash
+FUEL_RELEASE=$(grep release: /etc/fuel/version.yaml | cut -d: -f2 | tr -d '" ')
function countdown() {
local i
{ kill "$pid"; wait $!; } 2>/dev/null
case "$key" in
$'\e') echo "Skipping Fuel Setup.."
- echo -n "Applying default Fuel setings..."
- fuelmenu --save-only --iface=eth0
- echo "Done!"
;;
*) echo -e "\nEntering Fuel Setup..."
fuelmenu
esac
fi
fi
+
+
#Reread /etc/sysconfig/network to inform puppet of changes
. /etc/sysconfig/network
hostname "$HOSTNAME"
-### docker stuff
-images_dir="/var/www/nailgun/docker/images"
+service docker start
-# extract docker images
-mkdir -p $images_dir $sources_dir
-rm -f $images_dir/*tar
-pushd $images_dir &>/dev/null
+if [ -f /root/.build_images ]; then
+ #Fail on all errors
+ set -e
+ trap fail EXIT
-echo "Extracting and loading docker images. (This may take a while)"
-lrzip -d -o fuel-images.tar fuel-images.tar.lrz && tar -xf fuel-images.tar && rm -f fuel-images.tar
-popd &>/dev/null
-service docker start
+ echo "Loading Fuel base image for Docker..."
+ docker load -i /var/www/nailgun/docker/images/fuel-images.tar
+
+ echo "Building Fuel Docker images..."
+ WORKDIR=$(mktemp -d /tmp/docker-buildXXX)
+ SOURCE=/var/www/nailgun/docker
+ REPO_CONT_ID=$(docker -D run -d -p 80 -v /var/www/nailgun:/var/www/nailgun fuel/centos sh -c 'mkdir /var/www/html/os;ln -sf /var/www/nailgun/centos/x86_64 /var/www/html/os/x86_64;/usr/sbin/apachectl -DFOREGROUND')
+ RANDOM_PORT=$(docker port $REPO_CONT_ID 80 | cut -d':' -f2)
+
+ for imagesource in /var/www/nailgun/docker/sources/*; do
+ if ! [ -f "$imagesource/Dockerfile" ]; then
+ echo "Skipping ${imagesource}..."
+ continue
+ fi
+ image=$(basename "$imagesource")
+ cp -R "$imagesource" $WORKDIR/$image
+ mkdir -p $WORKDIR/$image/etc
+ cp -R /etc/puppet /etc/fuel $WORKDIR/$image/etc
+ sed -e "s/_PORT_/${RANDOM_PORT}/" -i $WORKDIR/$image/Dockerfile
+ sed -e 's/production:.*/production: "docker-build"/' -i $WORKDIR/$image/etc/fuel/version.yaml
+ docker build -t fuel/${image}_${FUEL_RELEASE} $WORKDIR/$image
+ done
+ docker rm -f $REPO_CONT_ID
+ rm -rf "$WORKDIR"
-# load docker images
-for image in $images_dir/*tar ; do
- echo "Loading docker image ${image}..."
- docker load -i "$image"
- # clean up extracted image
- rm -f "$image"
-done
+ #Remove trap for normal deployment
+ trap - EXIT
+ set +e
+else
+ echo "Loading docker images. (This may take a while)"
+ docker load -i /var/www/nailgun/docker/images/fuel-images.tar
+fi
# apply puppet
puppet apply --detailed-exitcodes -d -v /etc/puppet/modules/nailgun/examples/host-only.pp
dockerctl check || fail
bash /etc/rc.local
+
+# Enable updates repository
+cat > /etc/yum.repos.d/mos${FUEL_RELEASE}-updates.repo << EOF
+[mos${FUEL_RELEASE}-updates]
+name=mos${FUEL_RELEASE}-updates
+baseurl=http://mirror.fuel-infra.org/mos/centos-6/mos${FUEL_RELEASE}/updates/
+gpgcheck=0
+skip_if_unavailable=1
+EOF
+
+# Enable security repository
+cat > /etc/yum.repos.d/mos${FUEL_RELEASE}-security.repo << EOF
+[mos${FUEL_RELEASE}-security]
+name=mos${FUEL_RELEASE}-security
+baseurl=http://mirror.fuel-infra.org/mos/centos-6/mos${FUEL_RELEASE}/security/
+gpgcheck=0
+skip_if_unavailable=1
+EOF
+
+#Check if repo is accessible
+echo "Checking for access to updates repository..."
+repourl=$(grep baseurl /etc/yum.repos.d/*updates* 2>/dev/null | cut -d'=' -f2- | head -1)
+if urlaccesscheck check "$repourl" ; then
+ UPDATE_ISSUES=0
+else
+ UPDATE_ISSUES=1
+fi
+
+if [ $UPDATE_ISSUES -eq 1 ]; then
+ warning="WARNING: There are issues connecting to Fuel update repository.\
+\nPlease fix your connection and update this node with \`yum update\`\
+\nThen run \`dockerctl destroy all; bootstrap_admin_node.sh;\`\
+\nto repeat bootstrap on Fuel Master with the latest updates.\
+\nFor more information, check out Fuel documentation at:\
+\nhttp://docs.mirantis.com/fuel"
+else
+ warning="WARNING: There may be updates available for Fuel.\
+\nYou should update this node with \`yum update\`. If there are available\
+\n updates, run \`dockerctl destroy all; bootstrap_admin_node.sh;\`\
+\nto repeat bootstrap on Fuel Master with the latest updates.\
+\nFor more information, check out Fuel documentation at:\
+\nhttp://docs.mirantis.com/fuel"
+fi
+echo
+echo "*************************************************"
+echo -e "$warning"
+echo "*************************************************"
+echo "Sending notification to Fuel UI..."
+fuel notify --topic warning --send "$warning"
echo "Fuel node deployment complete!"
--- /dev/null
+#/bin/sh
+echo "Installing pre-build repo"
+if [ ! -d /opt/opnfv/nailgun ]; then
+ echo "Error - found no repo!"
+ exit 1
+fi
+
+mkdir -p /var/www/mailgun
+mv /opt/opnfv/nailgun/* /var/www/nailgun
+if [ $? -ne 0 ]; then
+ echo "Error moving repos to their correct location!"
+ exit 1
+fi
+rmdir /opt/opnfv/nailgun
+if [ $? -ne 0 ]; then
+ echo "Error removing /opt/opnfv/nailgun directory!"
+ exit 1
+fi
+echo "Done installing pre-build repo"
drives=""
removable_drives=""
for drv in `ls -1 /sys/block | grep "sd\|hd\|vd\|cciss"`; do
- if (grep -q 0 /sys/block/${drv}/removable); then
- drives="${drives} ${drv}"
- else
- removable_drives="${removable_drives} ${drv}"
+ if !(blkid | grep -q "${drv}.*Fuel"); then
+ if (grep -q 0 /sys/block/${drv}/removable); then
+ drives="${drives} ${drv}"
+ else
+ removable_drives="${removable_drives} ${drv}"
+ fi
fi
done
default_drive=`echo ${drives} ${removable_drives} | awk '{print $1}'`
chvt 1
fi
-# verify tgtdrive is at least 30GB
+# verify tgtdrive is at least 41GB
tgtdrivesize=$(( $(cat "/sys/class/block/${tgtdrive}/size") / 2 / 1024 ))
-if [ $tgtdrivesize -lt 30720 ]; then
+if [ $tgtdrivesize -lt 41984 ]; then
exec < /dev/tty3 > /dev/tty3 2>&1
chvt 3
clear
echo '********************************************************************'
echo '* E R R O R *'
echo '* *'
- echo '* Your disk is under 30GB in size. Installation cannot continue. *'
+ echo '* Your disk is under 41GB in size. Installation cannot continue. *'
echo '* Restart installation with a larger disk. *'
echo '* *'
echo '********************************************************************'
tgtdrive=$(echo $tgtdrive | sed -e 's/!/\//')
# source
-if test -e /dev/disk/by-uuid/will_be_substituted_with_actual_uuid; then
+if test -e /dev/disk/by-label/"OpenStack_Fuel"; then
+ echo "harddrive --partition=LABEL="OpenStack_Fuel" --dir=/" > /tmp/source.ks
+elif test -e /dev/disk/by-uuid/will_be_substituted_with_actual_uuid; then
echo "harddrive --partition=UUID=will_be_substituted_with_actual_uuid --dir=/" > /tmp/source.ks
else
echo "cdrom" > /tmp/source.ks
fi
echo > /tmp/partition.ks
echo "partition /boot --onpart=/dev/${bootdev}3" >> /tmp/partition.ks
-echo "partition pv.001 --ondisk=${tgtdrive} --size=30000 --grow" >> /tmp/partition.ks
+echo "partition /boot/efi --onpart=/dev/${bootdev}2" >> /tmp/partition.ks
+echo "partition pv.001 --ondisk=${tgtdrive} --size=41000 --grow" >> /tmp/partition.ks
echo "volgroup os pv.001" >> /tmp/partition.ks
echo "logvol swap --vgname=os --recommended --name=swap" >> /tmp/partition.ks
echo "logvol / --vgname=os --size=10000 --name=root --fstype=ext4" >> /tmp/partition.ks
-echo "logvol /var --vgname=os --size=10000 --percent 60 --grow --name=var --fstype=ext4" >> /tmp/partition.ks
-echo "logvol /var/log --vgname=os --size=4096 --percent 40 --grow --name=varlog --fstype=ext4" >> /tmp/partition.ks
+echo "logvol /var --vgname=os --size=10000 --percent 30 --grow --name=var --fstype=ext4" >> /tmp/partition.ks
+echo "logvol /var/lib/docker --vgname=os --size=17000 --percent 20 --grow --name=varlibdocker --fstype=ext4" >> /tmp/partition.ks
+echo "logvol /var/log --vgname=os --size=4096 --percent 50 --grow --name=varlog --fstype=ext4" >> /tmp/partition.ks
# bootloader
-echo "bootloader --location=mbr --driveorder=${tgtdrive} --append=' biosdevname=0 crashkernel=none'" > /tmp/bootloader.ks
+echo "bootloader --location=partition --driveorder=${tgtdrive} --append=' biosdevname=0 crashkernel=none'" > /tmp/bootloader.ks
# Anaconda can not install grub 0.97 on disks which are >4T.
# The reason is that grub does not support such large geometries
%packages --nobase --excludedocs
@Core
+fuel
+fuel-library
+fuel-dockerctl
authconfig
bind-utils
cronie
daemonize
dhcp
docker-io
+fuel-bootstrap-image
+fuel-createmirror
+fuel-target-centos-images
+fuel-package-updates
fuelmenu
+fuel-docker-images
gdisk
lrzip
lsof
mlocate
nmap-ncat
ntp
+ntpdate
openssh-clients
policycoreutils
+python-daemon
rsync
ruby21-puppet
ruby21-rubygem-netaddr
virt-what
wget
yum
+yum-plugin-priorities
%include /tmp/post_partition.ks
%post --nochroot --log=/mnt/sysimage/root/anaconda-post-before-chroot.log
#!/bin/sh
+set -x
+
SOURCE="/mnt/sysimage/tmp/source"
for I in `cat /proc/cmdline`; do case "$I" in *=*) eval $I;; esac ; done
else
echo GATEWAY=$gw >> /etc/sysconfig/network
fi
+ [ -n "$build_images" -a "$build_images" != "0" ] && echo -e "$build_images" > /root/.build_images
}
# Default FQDN
device="eth0"
hwaddr=`ifconfig $device | grep -i hwaddr | sed -e 's#^.*hwaddr[[:space:]]*##I'`
dhcp_interface=$dhcp_interface
+build_images=$build_images
save_cfg
# Mounting installation source
mkdir -p ${SOURCE}
mkdir -p ${FS}
-if test -e /dev/disk/by-uuid/will_be_substituted_with_actual_uuid; then
+if test -e /dev/disk/by-label/"OpenStack_Fuel"; then
+ mount /dev/disk/by-label/"OpenStack_Fuel" ${SOURCE}
+elif test -e /dev/disk/by-uuid/will_be_substituted_with_actual_uuid; then
mount /dev/disk/by-uuid/will_be_substituted_with_actual_uuid ${FS}
mount -o loop ${FS}/nailgun.iso ${SOURCE}
fi
# Copying Ubuntu files
mkdir -p ${repodir}/ubuntu/x86_64/images
-cp -r ${SOURCE}/ubuntu/conf ${repodir}/ubuntu/x86_64
-cp -r ${SOURCE}/ubuntu/db ${repodir}/ubuntu/x86_64
cp -r ${SOURCE}/ubuntu/dists ${repodir}/ubuntu/x86_64
-cp -r ${SOURCE}/ubuntu/indices ${repodir}/ubuntu/x86_64
cp -r ${SOURCE}/ubuntu/pool ${repodir}/ubuntu/x86_64
-cp -r ${SOURCE}/ubuntu/installer-amd64/current/images/netboot/ubuntu-installer/amd64/linux ${repodir}/ubuntu/x86_64/images
-cp -r ${SOURCE}/ubuntu/installer-amd64/current/images/netboot/ubuntu-installer/amd64/initrd.gz ${repodir}/ubuntu/x86_64/images
+
+# We do not ship debian-installer kernel and initrd on ISO.
+# But we still need to be able to create ubuntu cobbler distro
+# which requires kernel and initrd to be available. So, we
+# just touch these files to work around cobbler's limitation.
+touch ${repodir}/ubuntu/x86_64/images/linux
+touch ${repodir}/ubuntu/x86_64/images/initrd.gz
# make links for backward compatibility
ln -s ${repodir}/centos ${wwwdir}/centos
ln -s ${repodir}/ubuntu ${wwwdir}/ubuntu
-# Copying bootstrap image
-mkdir -p ${wwwdir}/bootstrap
-cp -r ${SOURCE}/bootstrap/initramfs.img ${wwwdir}/bootstrap
-cp -r ${SOURCE}/bootstrap/linux ${wwwdir}/bootstrap
-
-# Copying target images
-cp -r ${SOURCE}/targetimages ${wwwdir}
-
-mkdir -p /root/.ssh
-chmod 700 /root/.ssh
-cp ${SOURCE}/bootstrap/bootstrap.rsa /root/.ssh
-chmod 600 /root/.ssh/bootstrap.rsa
-
# --------------------------
# UNPACKING PUPPET MANIFESTS
# --------------------------
# create folders
-mkdir -p /etc/puppet/${OPENSTACK_VERSION}/manifests/
-mkdir -p /etc/puppet/${OPENSTACK_VERSION}/modules/
-rm -rf /etc/puppet/modules/
+#mkdir -p /etc/puppet/${OPENSTACK_VERSION}/manifests/
+#mkdir -p /etc/puppet/${OPENSTACK_VERSION}/modules/
+#rm -rf /etc/puppet/modules/
# TODO(ikalnitsky): investigate why we need this
-cp ${SOURCE}/puppet-slave.tgz ${wwwdir}/
+#cp ${SOURCE}/puppet-slave.tgz ${wwwdir}/
# place modules and manifests
-tar zxf ${SOURCE}/puppet-slave.tgz -C /etc/puppet/${OPENSTACK_VERSION}/modules
-cp /etc/puppet/${OPENSTACK_VERSION}/modules/osnailyfacter/examples/site.pp /etc/puppet/${OPENSTACK_VERSION}/manifests/site.pp
+#tar zxf ${SOURCE}/puppet-slave.tgz -C /etc/puppet/${OPENSTACK_VERSION}/modules
+#cp /etc/puppet/${OPENSTACK_VERSION}/modules/osnailyfacter/examples/site.pp /etc/puppet/${OPENSTACK_VERSION}/manifests/site.pp
cp ${SOURCE}/centos-versions.yaml ${SOURCE}/ubuntu-versions.yaml /etc/puppet/${OPENSTACK_VERSION}/manifests/
# make links for backward compatibility
-pushd /etc/puppet
-ln -s ${OPENSTACK_VERSION}/manifests/ /etc/puppet/manifests
-ln -s ${OPENSTACK_VERSION}/modules/ /etc/puppet/modules
-popd
+#pushd /etc/puppet
+#ln -s ${OPENSTACK_VERSION}/manifests/ /etc/puppet/manifests
+#ln -s ${OPENSTACK_VERSION}/modules/ /etc/puppet/modules
+#popd
cp ${SOURCE}/send2syslog.py /bin/send2syslog.py
mkdir -p /var/lib/hiera
touch /var/lib/hiera/common.yaml /etc/puppet/hiera.yaml
-# Deploy docker images and ctl tools if we built ISO with docker containers support
-[ -d "${SOURCE}/docker" ] && cp -r ${SOURCE}/docker ${wwwdir}/docker
-
# Prepare local repository specification
rm /etc/yum.repos.d/CentOS*.repo
cat > /etc/yum.repos.d/nailgun.repo << EOF
# Disable GSSAPI in ssh server config
sed -i -e "/^\s*GSSAPICleanupCredentials yes/d" -e "/^\s*GSSAPIAuthentication yes/d" /etc/ssh/sshd_config
+# Enable MOTD banner in sshd
+sed -i -e "s/^\s*PrintMotd no/PrintMotd yes/g" /etc/ssh/sshd_config
+
+# Add note regarding local repos creation to MOTD
+cat >> /etc/motd << EOF
+
+All environments use online repositories by default.
+Use the following commands to create local repositories
+on master node and change default repository settings:
+
+* CentOS: fuel-package-updates (see --help for options)
+* Ubuntu: fuel-createmirror (see --help for options)
+
+Please refer to the following guide for more information:
+https://docs.mirantis.com/openstack/fuel/fuel-6.1/reference-architecture.html#fuel-rep-mirror
+
+EOF
+
# Copying bootstrap_admin_node.sh, chmod it and
# adding /etc/init/bootstrap_admin_node.conf
cp ${SOURCE}/bootstrap_admin_node.sh /usr/local/sbin/bootstrap_admin_node.sh
umount -f ${FS} || true
rm -rf ${FS}
-# Enabling/configuring NTPD and ntpdate services
-echo "server 127.127.1.0" >> /etc/ntp.conf
-echo "fudge 127.127.1.0 stratum 10" >> /etc/ntp.conf
-echo "tos orphan 7" >> /etc/ntp.conf
+echo "tos orphan 7" >> /etc/ntp.conf
# Do not show error message on ntpdate failure. Customers should not be confused
# if admin node does not have access to the internet time servers.
# Blacklist i2c_piix4 module for VirtualBox so it does not create kernel errors
[[ $(virt-what) = "virtualbox" ]] && echo "blacklist i2c_piix4" > /etc/modprobe.d/blacklist-i2c-piix4.conf
-%end
+%end
\ No newline at end of file
drives=""
removable_drives=""
for drv in `ls -1 /sys/block | grep "sd\|hd\|vd\|cciss"`; do
- if (grep -q 0 /sys/block/${drv}/removable); then
- drives="${drives} ${drv}"
- else
- removable_drives="${removable_drives} ${drv}"
+ if !(blkid | grep -q "${drv}.*Fuel"); then
+ if (grep -q 0 /sys/block/${drv}/removable); then
+ drives="${drives} ${drv}"
+ else
+ removable_drives="${removable_drives} ${drv}"
+ fi
fi
done
default_drive=`echo ${drives} ${removable_drives} | awk '{print $1}'`
chvt 1
fi
-# verify tgtdrive is at least 30GB
+# verify tgtdrive is at least 41GB
tgtdrivesize=$(( $(cat "/sys/class/block/${tgtdrive}/size") / 2 / 1024 ))
-if [ $tgtdrivesize -lt 30720 ]; then
+if [ $tgtdrivesize -lt 41984 ]; then
exec < /dev/tty3 > /dev/tty3 2>&1
chvt 3
clear
echo '********************************************************************'
echo '* E R R O R *'
echo '* *'
- echo '* Your disk is under 30GB in size. Installation cannot continue. *'
+ echo '* Your disk is under 41GB in size. Installation cannot continue. *'
echo '* Restart installation with a larger disk. *'
echo '* *'
echo '********************************************************************'
tgtdrive=$(echo $tgtdrive | sed -e 's/!/\//')
# source
-if test -e /dev/disk/by-uuid/will_be_substituted_with_actual_uuid; then
+if test -e /dev/disk/by-label/"OpenStack_Fuel"; then
+ echo "harddrive --partition=LABEL="OpenStack_Fuel" --dir=/" > /tmp/source.ks
+elif test -e /dev/disk/by-uuid/will_be_substituted_with_actual_uuid; then
echo "harddrive --partition=UUID=will_be_substituted_with_actual_uuid --dir=/" > /tmp/source.ks
else
echo "cdrom" > /tmp/source.ks
fi
echo > /tmp/partition.ks
echo "partition /boot --onpart=/dev/${bootdev}3" >> /tmp/partition.ks
-echo "partition pv.001 --ondisk=${tgtdrive} --size=30000 --grow" >> /tmp/partition.ks
+echo "partition /boot/efi --onpart=/dev/${bootdev}2" >> /tmp/partition.ks
+echo "partition pv.001 --ondisk=${tgtdrive} --size=41000 --grow" >> /tmp/partition.ks
echo "volgroup os pv.001" >> /tmp/partition.ks
echo "logvol swap --vgname=os --recommended --name=swap" >> /tmp/partition.ks
echo "logvol / --vgname=os --size=10000 --name=root --fstype=ext4" >> /tmp/partition.ks
-echo "logvol /var --vgname=os --size=10000 --percent 60 --grow --name=var --fstype=ext4" >> /tmp/partition.ks
-echo "logvol /var/log --vgname=os --size=4096 --percent 40 --grow --name=varlog --fstype=ext4" >> /tmp/partition.ks
+echo "logvol /var --vgname=os --size=10000 --percent 30 --grow --name=var --fstype=ext4" >> /tmp/partition.ks
+echo "logvol /var/lib/docker --vgname=os --size=17000 --percent 20 --grow --name=varlibdocker --fstype=ext4" >> /tmp/partition.ks
+echo "logvol /var/log --vgname=os --size=4096 --percent 50 --grow --name=varlog --fstype=ext4" >> /tmp/partition.ks
# bootloader
-echo "bootloader --location=mbr --driveorder=${tgtdrive} --append=' biosdevname=0 crashkernel=none'" > /tmp/bootloader.ks
+echo "bootloader --location=partition --driveorder=${tgtdrive} --append=' biosdevname=0 crashkernel=none'" > /tmp/bootloader.ks
# Anaconda can not install grub 0.97 on disks which are >4T.
# The reason is that grub does not support such large geometries
%packages --nobase --excludedocs
@Core
+fuel
+fuel-library
+fuel-dockerctl
authconfig
bind-utils
cronie
daemonize
dhcp
docker-io
+fuel-bootstrap-image
+fuel-createmirror
+fuel-target-centos-images
+fuel-package-updates
fuelmenu
+fuel-docker-images
gdisk
lrzip
lsof
mlocate
nmap-ncat
ntp
+ntpdate
openssh-clients
policycoreutils
+python-daemon
rsync
ruby21-puppet
ruby21-rubygem-netaddr
virt-what
wget
yum
+yum-plugin-priorities
%include /tmp/post_partition.ks
%post --nochroot --log=/mnt/sysimage/root/anaconda-post-before-chroot.log
#!/bin/sh
+set -x
+
SOURCE="/mnt/sysimage/tmp/source"
for I in `cat /proc/cmdline`; do case "$I" in *=*) eval $I;; esac ; done
else
echo GATEWAY=$gw >> /etc/sysconfig/network
fi
+ [ -n "$build_images" -a "$build_images" != "0" ] && echo -e "$build_images" > /root/.build_images
}
# Default FQDN
device="eth0"
hwaddr=`ifconfig $device | grep -i hwaddr | sed -e 's#^.*hwaddr[[:space:]]*##I'`
dhcp_interface=$dhcp_interface
+build_images=$build_images
save_cfg
# Mounting installation source
mkdir -p ${SOURCE}
mkdir -p ${FS}
-if test -e /dev/disk/by-uuid/will_be_substituted_with_actual_uuid; then
+if test -e /dev/disk/by-label/"OpenStack_Fuel"; then
+ mount /dev/disk/by-label/"OpenStack_Fuel" ${SOURCE}
+elif test -e /dev/disk/by-uuid/will_be_substituted_with_actual_uuid; then
mount /dev/disk/by-uuid/will_be_substituted_with_actual_uuid ${FS}
mount -o loop ${FS}/nailgun.iso ${SOURCE}
fi
# Copying Ubuntu files
mkdir -p ${repodir}/ubuntu/x86_64/images
-cp -r ${SOURCE}/ubuntu/conf ${repodir}/ubuntu/x86_64
-cp -r ${SOURCE}/ubuntu/db ${repodir}/ubuntu/x86_64
cp -r ${SOURCE}/ubuntu/dists ${repodir}/ubuntu/x86_64
-cp -r ${SOURCE}/ubuntu/indices ${repodir}/ubuntu/x86_64
cp -r ${SOURCE}/ubuntu/pool ${repodir}/ubuntu/x86_64
-cp -r ${SOURCE}/ubuntu/installer-amd64/current/images/netboot/ubuntu-installer/amd64/linux ${repodir}/ubuntu/x86_64/images
-cp -r ${SOURCE}/ubuntu/installer-amd64/current/images/netboot/ubuntu-installer/amd64/initrd.gz ${repodir}/ubuntu/x86_64/images
+
+# We do not ship debian-installer kernel and initrd on ISO.
+# But we still need to be able to create ubuntu cobbler distro
+# which requires kernel and initrd to be available. So, we
+# just touch these files to work around cobbler's limitation.
+touch ${repodir}/ubuntu/x86_64/images/linux
+touch ${repodir}/ubuntu/x86_64/images/initrd.gz
# make links for backward compatibility
ln -s ${repodir}/centos ${wwwdir}/centos
ln -s ${repodir}/ubuntu ${wwwdir}/ubuntu
-# Copying bootstrap image
-mkdir -p ${wwwdir}/bootstrap
-cp -r ${SOURCE}/bootstrap/initramfs.img ${wwwdir}/bootstrap
-cp -r ${SOURCE}/bootstrap/linux ${wwwdir}/bootstrap
-
-# Copying target images
-cp -r ${SOURCE}/targetimages ${wwwdir}
-
-mkdir -p /root/.ssh
-chmod 700 /root/.ssh
-cp ${SOURCE}/bootstrap/bootstrap.rsa /root/.ssh
-chmod 600 /root/.ssh/bootstrap.rsa
-
# --------------------------
# UNPACKING PUPPET MANIFESTS
# --------------------------
# create folders
-mkdir -p /etc/puppet/${OPENSTACK_VERSION}/manifests/
-mkdir -p /etc/puppet/${OPENSTACK_VERSION}/modules/
-rm -rf /etc/puppet/modules/
+#mkdir -p /etc/puppet/${OPENSTACK_VERSION}/manifests/
+#mkdir -p /etc/puppet/${OPENSTACK_VERSION}/modules/
+#rm -rf /etc/puppet/modules/
# TODO(ikalnitsky): investigate why we need this
-cp ${SOURCE}/puppet-slave.tgz ${wwwdir}/
+#cp ${SOURCE}/puppet-slave.tgz ${wwwdir}/
# place modules and manifests
-tar zxf ${SOURCE}/puppet-slave.tgz -C /etc/puppet/${OPENSTACK_VERSION}/modules
-cp /etc/puppet/${OPENSTACK_VERSION}/modules/osnailyfacter/examples/site.pp /etc/puppet/${OPENSTACK_VERSION}/manifests/site.pp
+#tar zxf ${SOURCE}/puppet-slave.tgz -C /etc/puppet/${OPENSTACK_VERSION}/modules
+#cp /etc/puppet/${OPENSTACK_VERSION}/modules/osnailyfacter/examples/site.pp /etc/puppet/${OPENSTACK_VERSION}/manifests/site.pp
cp ${SOURCE}/centos-versions.yaml ${SOURCE}/ubuntu-versions.yaml /etc/puppet/${OPENSTACK_VERSION}/manifests/
# make links for backward compatibility
-pushd /etc/puppet
-ln -s ${OPENSTACK_VERSION}/manifests/ /etc/puppet/manifests
-ln -s ${OPENSTACK_VERSION}/modules/ /etc/puppet/modules
-popd
+#pushd /etc/puppet
+#ln -s ${OPENSTACK_VERSION}/manifests/ /etc/puppet/manifests
+#ln -s ${OPENSTACK_VERSION}/modules/ /etc/puppet/modules
+#popd
cp ${SOURCE}/send2syslog.py /bin/send2syslog.py
mkdir -p /var/lib/hiera
touch /var/lib/hiera/common.yaml /etc/puppet/hiera.yaml
-# Deploy docker images and ctl tools if we built ISO with docker containers support
-[ -d "${SOURCE}/docker" ] && cp -r ${SOURCE}/docker ${wwwdir}/docker
-
# Prepare local repository specification
rm /etc/yum.repos.d/CentOS*.repo
cat > /etc/yum.repos.d/nailgun.repo << EOF
# Disable GSSAPI in ssh server config
sed -i -e "/^\s*GSSAPICleanupCredentials yes/d" -e "/^\s*GSSAPIAuthentication yes/d" /etc/ssh/sshd_config
+# Enable MOTD banner in sshd
+sed -i -e "s/^\s*PrintMotd no/PrintMotd yes/g" /etc/ssh/sshd_config
+
+# Add note regarding local repos creation to MOTD
+cat >> /etc/motd << EOF
+
+All environments use online repositories by default.
+Use the following commands to create local repositories
+on master node and change default repository settings:
+
+* CentOS: fuel-package-updates (see --help for options)
+* Ubuntu: fuel-createmirror (see --help for options)
+
+Please refer to the following guide for more information:
+https://docs.mirantis.com/openstack/fuel/fuel-6.1/reference-architecture.html#fuel-rep-mirror
+
+EOF
+
# Copying bootstrap_admin_node.sh, chmod it and
# adding /etc/init/bootstrap_admin_node.conf
cp ${SOURCE}/bootstrap_admin_node.sh /usr/local/sbin/bootstrap_admin_node.sh
umount -f ${FS} || true
rm -rf ${FS}
-# Enabling/configuring NTPD and ntpdate services
-echo "server 127.127.1.0" >> /etc/ntp.conf
-echo "fudge 127.127.1.0 stratum 10" >> /etc/ntp.conf
-echo "tos orphan 7" >> /etc/ntp.conf
+echo "tos orphan 7" >> /etc/ntp.conf
# Do not show error message on ntpdate failure. Customers should not be confused
# if admin node does not have access to the internet time servers.
+++ /dev/null
-##############################################################################
-# Copyright (c) 2015 Ericsson AB and others.
-# stefan.k.berg@ericsson.com
-# jonas.bjurel@ericsson.com
-# 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
-##############################################################################
-
-TOP := $(shell pwd)
-
-.PHONY: all
-all:
- @mkdir -p release/opnfv
- @cp pre-deploy.sh release/opnfv
- @cp sysinfo.sh release/opnfv
- @cp transform_yaml.py release/opnfv
- @chmod 755 release/opnfv/*
-
-.PHONY: clean
-clean:
- @rm -rf release
-
-
-.PHONY: release
-release:clean all
- @cp -Rvp release/* ../release
+++ /dev/null
-##############################################################################
-# Copyright (c) 2015 Ericsson AB and others.
-# stefan.k.berg@ericsson.com
-# jonas.bjurel@ericsson.com
-# 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
-##############################################################################
-
-This is the start of the interactive frontend that will add OPNFV configuration into
-the astute.yaml of the nodes. Currently just a test setup - prepare an installation
-up to the point of "deploy changes", but run "./pre-deploy.sh <envid> fragment.yaml"
-before actually hitting deploy, which will make sure to add the example fragment to
-the nodes.
-
-Note that the only part of the fragment.yaml that actually is acted on is the hosts
-part at this time.
+++ /dev/null
-#!/bin/bash -e
-##############################################################################
-# Copyright (c) 2015 Ericsson AB and others.
-# stefan.k.berg@ericsson.com
-# jonas.bjurel@ericsson.com
-# 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
-##############################################################################
-
-
-error_exit () {
- echo "$@" >&2
- exit 1
-}
-
-get_env() {
- local env_id=${1:-""}
-
- if [ -z $env_id ]; then
- local n_envs=$(fuel env --list | grep -v -E "^id|^--|^ *$" | wc -l)
- if [ $n_envs -ne 1 ]; then
- echo "Usage: $0 [<env-id>]" >&2
- error_exit "If only a single environment is present it can be left" \
- "out. Otherwise the environment must be selected"
- fi
- env_id=$(fuel env --list | grep -v -E "^id|^--" | awk '{print $1}')
- else
- if ! fuel --env $env_id environment 2>/dev/null grep -v -E "^id|^--" | \
- grep -q ^$env_id; then
- error_exit "No such environment ID: $env_id"
- fi
- fi
- echo $env_id
-}
-
-get_node_uid () {
- cat $1 | grep "^uid: " | sed "s/^uid: '//" | sed "s/'$//"
-}
-
-get_node_role () {
- cat $1 | grep "^role: " | sed "s/^role: //"
-}
-
-get_next_cic () {
- file=$1
-
- last=`cat $file | sed 's/.*://' | grep "cic-" | sed 's/cic\-.*sl//' | sort -n | tail -1`
- if [ -z "$last" ]; then
- next=1
- else
- next=$[$last + 2]
- fi
- echo $next
-}
-
-get_next_compute () {
- file=$1
-
- last=`cat $file | sed 's/.*://' | grep "cmp-" | sed 's/cmp\-.*sl//' | sort -n | tail -1`
- if [ -z "$last" ]; then
- next=7
- else
- next=$[$last + 2]
- fi
- echo $next
-}
-
-modify_hostnames () {
- env=$1
- file=$2
- for line in `cat $file`
- do
- old=`echo $line | sed 's/:.*//'`
- new=`echo $line | sed 's/.*://'`
- echo "Applying: $old -> $new"
-
- for dfile in deployment_$env/*.yaml
- do
- sed -i "s/$old/$new/g" $dfile
- done
-
- for pfile in provisioning_$env/*.yaml
- do
- sed -i "s/$old/$new/g" $pfile
- done
- done
-}
-
-setup_hostnames () {
- ENV=$1
- cd ${CONFIGDIR}
- touch hostnames.$ENV
-
- for dfile in deployment_$ENV/*.yaml
- do
- uid=`get_node_uid $dfile`
- hostname=`grep "^node-$uid:" hostnames.$ENV | sed 's/.*://'`
- if [ -z $hostname ]; then
-
- pfile=provisioning_$ENV/node-$uid.yaml
- role=`get_node_role $dfile`
-
- case $role in
- primary-controller)
- hostname="cic-pod0-sh0-sl`get_next_cic hostnames.$ENV`"
- ;;
- controller)
- hostname="cic-pod0-sh0-sl`get_next_cic hostnames.$ENV`"
- ;;
- compute)
- hostname="cmp-pod0-sh0-sl`get_next_compute hostnames.$ENV`"
- ;;
- *)
- echo "Unknown node type for UID $uid"
- exit 1
- ;;
- esac
-
- echo "node-$uid:$hostname" >> hostnames.$ENV
- else
- echo "Already got hostname $hostname for node-$uid"
-
- fi
- done
-
- rm -f hostnames.$ENV.old
- mv hostnames.$ENV hostnames.$ENV.old
- sort hostnames.$ENV.old | uniq > hostnames.$ENV
- modify_hostnames $ENV hostnames.$ENV
-}
-
-
-
-get_provisioning_info () {
- ENV=$1
- mkdir -p ${CONFIGDIR}
- cd ${CONFIGDIR}
- rm -Rf provisioning_$ENV
- echo "Getting provisioning info..."
- fuel --env $ENV provisioning --default
- if [ $? -ne 0 ]; then
- echo "Error: Could not get provisioning info for env $ENV">&2
- exit 1
- fi
-}
-
-get_deployment_info () {
- ENV=$1
- mkdir -p ${CONFIGDIR}
- cd ${CONFIGDIR}
- rm -Rf deployment_$ENV
- echo "Getting deployment info..."
- fuel --env $ENV deployment --default
- if [ $? -ne 0 ]; then
- echo "Error: Could not get deployment info for env $ENV">&2
- exit 1
- fi
-}
-
-transform_yaml () {
- ENV=$1
- cd ${CONFIGDIR}
- for dfile in deployment_$ENV/*.yaml
- do
- /opt/opnfv/transform_yaml.py $dfile
- done
-}
-
-commit_changes () {
- ENV=$1
- cd ${CONFIGDIR}
-
- fuel --env $ENV deployment --upload
- fuel --env $ENV provisioning --upload
-}
-
-add_yaml_fragment () {
- ENV=$1
- FRAGMENT=${CONFIGDIR}/fragment.yaml.$ENV
-
- cd ${CONFIGDIR}
- for dfile in deployment_$ENV/*.yaml
- do
- cnt=`grep "^opnfv:" $dfile | wc -l `
- if [ $cnt -eq 0 ]; then
- echo "Adding fragment to $dfile"
- cat $FRAGMENT >> $dfile
- else
- echo "Already have fragment in $dfile"
- fi
- done
-}
-
-
-ip_valid() {
- IP_ADDRESS="$1"
- # Check if the format looks right_
- echo "$IP_ADDRESS" | egrep -qE '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' || return 1
- #check that each octect is less than or equal to 255:
- echo $IP_ADDRESS | awk -F'.' '$1 <=255 && $2 <= 255 && $3 <=255 && $4 <= 255 {print "Y" } ' | grep -q Y || return 1
- return 0
-}
-
-
-generate_ntp_entry() {
- FILE=$1
- read -p "NTP server:" NTP_SERVER
- if [ -z "$NTP_SERVER" ]; then
- return 1
- elif confirm_yes "Are you sure you want to add this entry (y/n): "; then
- echo "Confirmed"
- echo " server $NTP_SERVER" >> $FILE
- fi
-}
-
-generate_hostfile_entry() {
- FILE=$1
- read -p "Name:" HOST_NAME
- if [ -z "$HOST_NAME" ]; then
- return 1
- else
- read -p "FQDN:" HOST_FQDN
- read -p "IP: " HOST_IP
- while ! ip_valid "$HOST_IP"
- do
- echo "This is not a valid IP! Try again."
- read -p "IP: " HOST_IP
- done
- fi
- if confirm_yes "Are you sure you want to add this entry (y/n): "; then
- echo "Confirmed"
- echo " - name: $HOST_NAME" >> $FILE
- echo " address: $HOST_IP" >> $FILE
- echo " fqdn: $HOST_FQDN" >> $FILE
- else
- echo "Not confirmed"
- fi
- return 0
-}
-
-generate_dns_entry() {
- FILE=$1
- PROMPT=$2
- read -p "${PROMPT}:" DNS_IP
- if [ -z "$DNS_IP" ]; then
- return 1
- else
- while ! ip_valid "$DNS_IP"
- do
- echo "This is not a valid IP! Try again."
- read -p "${PROMPT}: " DNS_IP
- done
- fi
- if confirm_yes "Are you sure you want to add this entry (y/n): "; then
- echo "Confirmed"
- echo " - $DNS_IP" >> $FILE
- else
- echo "Not confirmed"
- fi
- return 0
-}
-
-confirm_yes() {
- prompt=$1
- while true
- do
- read -p "$prompt" YESNO
- case $YESNO in
- [Yy])
- return 0
- ;;
- [Nn])
- return 1
- ;;
- esac
- done
-}
-
-generate_yaml_fragment() {
- ENV=$1
- FRAGMENT=${CONFIGDIR}/fragment.yaml.$ENV
-
- if [ -f $FRAGMENT ]; then
- echo "Manual configuration already performed, reusing previous data from $FRAGMENT."
- echo "Press return to continue or ^C to stop."
- read ans
- return
- fi
-
- echo "opnfv:" > ${FRAGMENT}
-
- clear
- echo -e "\n\nPre-deployment configuration\n\n"
-
- echo -e "\n\nIPs for the DNS servers to go into /etc/resolv.conf. You will be"
- echo -e "prompted for one IP at the time. Press return on an empty line"
- echo -e "to complete your input. If no DNS server is specified, the IP of"
- echo -e "the Fuel master will be used instead.\n"
-
- DNSCICYAML=${CONFIGDIR}/cicdns.yaml.$ENV
- rm -f $DNSCICYAML
-
- echo -e "\n\n"
-
- while generate_dns_entry $DNSCICYAML "IP for CIC name servers"
- do
- :
- done
-
- if [ -f $DNSCICYAML ]; then
- echo " dns:" >> $FRAGMENT
- echo " controller:" >> $FRAGMENT
- cat $DNSCICYAML >> $FRAGMENT
- fi
-
-
- DNSCMPYAML=${CONFIGDIR}/cmpdns.yaml.$ENV
- rm -f $DNSCMPYAML
-
- echo -e "\n\n"
-
- while generate_dns_entry $DNSCMPYAML "IP for compute node name servers"
- do
- :
- done
-
-
- if [ -f $DNSCMPYAML ]; then
- if [ ! -f $DNSCICYAML ]; then
- echo " dns:" >> $FRAGMENT
- fi
- echo " compute:" >> $FRAGMENT
- cat $DNSCMPYAML >> $FRAGMENT
- fi
-
- echo -e "\n\nHosts file additions for controllers and compute nodes. You will be"
- echo -e "prompted for name, FQDN and IP for each entry. Press return when prompted"
- echo -e "for a name when you have completed your input.\n"
-
-
- HOSTYAML=${CONFIGDIR}/hosts.yaml.$ENV
- rm -f $HOSTYAML
- while generate_hostfile_entry $HOSTYAML
- do
- :
- done
-
- if [ -f $HOSTYAML ]; then
- echo " hosts:" >> $FRAGMENT
- cat $HOSTYAML >> $FRAGMENT
- fi
-
- echo -e "\n\nNTP upstream configuration for controllers.You will be"
- echo -e "prompted for a NTP server each entry. Press return when prompted"
- echo -e "for a NTP serverwhen you have completed your input.\n"
-
-
- NTPYAML=${CONFIGDIR}/ntp.yaml.$ENV
- rm -f $NTPYAML
- while generate_ntp_entry $NTPYAML
- do
- :
- done
-
- if [ -f $NTPYAML ]; then
- echo " ntp:" >> $FRAGMENT
- echo " controller: |" >> $FRAGMENT
- cat $NTPYAML >> $FRAGMENT
-
- echo " compute: |" >> $FRAGMENT
- for ctl in `find $CONFIGDIR/deployment_$ENV -name '*controller*.yaml'`
- do
- fqdn=`grep "^fqdn:" $ctl | sed 's/fqdn: *//'`
- echo " server $fqdn" >> $FRAGMENT
- done
- fi
-
- # If nothing added make sure we get an empty opnfv hash
- # instead of a NULL hash.
- if [ $(wc -l $FRAGMENT | awk '{print $1}') -le 1 ]; then
- echo "opnfv: {}" >$FRAGMENT
- fi
-}
-
-ENV=$(get_env "$@")
-
-CONFIGDIR="/var/lib/opnfv"
-mkdir -p $CONFIGDIR
-
-get_deployment_info $ENV
-# Uncomment the below to enable the control_bond example
-#transform_yaml $ENV
-get_provisioning_info $ENV
-generate_yaml_fragment $ENV
-# The feature to change hostnames from node-<n> to cmp- or cic- is disabled.
-# To turn it on, uncomment the following line.
-#setup_hostnames $ENV
-add_yaml_fragment $ENV
-commit_changes $ENV
+++ /dev/null
-#!/bin/sh
-##############################################################################
-# Copyright (c) 2015 Ericsson AB and others.
-# stefan.k.berg@ericsson.com
-# jonas.bjurel@ericsson.com
-# 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
-##############################################################################
-
-dockerctl shell cobbler cobbler system list | grep -v default | xargs -n 1 host | sort | sed 's/\..* /\t/'
+++ /dev/null
-#!/usr/bin/python
-##############################################################################
-# Copyright (c) 2015 Ericsson AB and others.
-# stefan.k.berg@ericsson.com
-# jonas.bjurel@ericsson.com
-# 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
-##############################################################################
-
-# Remove control and management network transformations from file.
-# Only to be used together with f_control_bond_example (enable in
-# pre-deploy.sh)
-
-import yaml
-import re
-import sys
-import os
-
-if len(sys.argv) != 2:
- sys.stderr.write("Usage: "+sys.argv[0]+" <filename>\n")
- sys.exit(1)
-
-filename = sys.argv[1]
-if not os.path.exists(filename):
- sys.stderr.write("ERROR: The file "+filename+" could not be opened\n")
- sys.exit(1)
-
-ignore_values = [ "eth0", "eth1", "br-mgmt", "br-fw-admin" ]
-
-infile = open(filename, 'r')
-doc = yaml.load(infile)
-infile.close()
-
-out={}
-
-for scheme in doc:
- if scheme == "network_scheme":
- mytransformation = {}
- for operation in doc[scheme]:
- if operation == "transformations":
- # We need the base bridges for l23network to be happy,
- # remove everything else.
- mytrans = [ { "action": "add-br", "name": "br-mgmt" },
- { "action": "add-br", "name": "br-fw-admin" } ]
- for trans in doc[scheme][operation]:
- delete = 0
- for ignore in ignore_values:
- matchObj = re.search(ignore,str(trans))
- if matchObj:
- delete = 1
- if delete == 0:
- mytrans.append(trans)
- else:
- pass
- #print "Deleted", trans
-
- mytransformation[operation] = mytrans
- else:
- mytransformation[operation] = doc[scheme][operation]
- out[scheme] = mytransformation
- else:
- out[scheme] = doc[scheme]
-
-outfile = open(filename, 'w')
-outfile.write(yaml.dump(out, default_flow_style=False))
-outfile.close()
--- /dev/null
+##############################################################################
+# Copyright (c) 2015 Ericsson AB and others.
+# stefan.k.berg@ericsson.com
+# jonas.bjurel@ericsson.com
+# 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
+##############################################################################
+
+TOP := $(shell pwd)
+DOCKNAME = fuelrepo
+DOCKVERSION = 1.0
+
+.PHONY: all
+all: .nailgun
+
+.fuel-createmirror:
+ sudo apt-get install -y rsync python dpkg-dev fakeroot openssl
+ sudo ln -s `pwd` /var/www
+ sudo mkdir /var/log/mirror-sync
+ sudo chmod 777 /var/log/mirror-sync
+ rm -rf tmpiso tmpdir
+ mkdir tmpiso
+ fuseiso ${ISOCACHE} tmpiso
+ cp tmpiso/ubuntu/pool/main/f/fuel-createmirror/fuel-createmirror_6.1*.deb .
+ fusermount -u tmpiso
+ rm -rf tmpiso
+ sudo dpkg -i fuel-createmirror_6.1*.deb
+ sudo sed -i 's/DOCKER_MODE=true/DOCKER_MODE=false/' /etc/fuel-createmirror/common.cfg
+ touch .fuel-createmirror
+
+
+.PHONY: clean
+clean:
+ # Deliberately not cleaning nailgun directory to speed up multiple builds
+ @rm -rf ../release/opnfv/nailgun fuel-createmirror_6.1*.deb
+
+.PHONY: release
+release:.nailgun
+ @rm -Rf ../release/opnfv/nailgun
+ @mkdir -p ../release/opnfv
+ @cp -Rp nailgun ../release/opnfv/nailgun
+
+.nailgun: .fuel-createmirror
+ rm -Rf nailgun
+ fakeroot /opt/fuel-createmirror-6.1/fuel-createmirror
+ # Bug fix for https://bugs.launchpad.net/fuel/+bug/1476593
+ find nailgun/mos-ubuntu -type d -exec chmod 755 {} \;
+ touch .nailgun
+++ /dev/null
-##############################################################################
-# Copyright (c) 2015 Ericsson AB and others.
-# stefan.k.berg@ericsson.com
-# jonas.bjurel@ericsson.com
-# 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
-##############################################################################
-
-TOP := $(shell pwd)
-
-.PHONY: all
-all:
-
-.PHONY: clean
-clean:
- @rm -rf tmp
- @rm -rf release
-
-.PHONY: validate-cache
-validate-cache:
- @echo "No cache validation schema available for $(shell pwd)"
- @echo "Continuing ..."
-
-.PHONY: release
-release:
- @cp -Rvp puppet/modules/* $(PUPPET_DEST)
+++ /dev/null
-##############################################################################
-# Copyright (c) 2015 Ericsson AB and others.
-# stefan.k.berg@ericsson.com
-# jonas.bjurel@ericsson.com
-# 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
-##############################################################################
-
-Addition to add entries to /etc/hosts through Astute.
-
-The astute.yaml file should contain entries as those below to have them picked up during deployment:
-
-opnfv:
- hosts:
- - name: test1
- address: 192.168.100.100
- fqdn: test1.opnfv.org
- - name: test2
- address: 192.168.100.101
- fqdn: test2.opnfv.org
- - name: test3
- address: 192.168.100.102
- fqdn: test3.opnfv.org
-
-The suggested method for adding this information is to prepare for deployment with the Fuel GUI or CLI,
-but before actually deploying:
-
-1. Download the current deployment for all hosts: fuel --env 1 deployment --default
-2. Iterate through the hosts in "deployment_1" and add hosts configuration in the above format to their
- respective yaml file.
-3. Upload the modifed deployment information: fuel --env 1 deployment --upload
-
-After deploying, the additions will be included in /etc/astute.yaml of each host.
+++ /dev/null
-#
-# array_or_string_to_array.rb
-#
-
-module Puppet::Parser::Functions
- newfunction(:extras_to_hosts, :type => :rvalue, :doc => <<-EOS
- convert extras array passed from Astute into
- hash for puppet `host` create_resources call
- EOS
- ) do |args|
- hosts=Hash.new
- extras=args[0]
- extras.each do |extras|
- hosts[extras['name']]={:ip=>extras['address'],:host_aliases=>[extras['fqdn']]}
- notice("Generating extras host entry #{extras['name']} #{extras['address']} #{extras['fqdn']}")
- end
- return hosts
- end
-end
-
-# vim: set ts=2 sw=2 et :
+++ /dev/null
-class l23network::hosts_file (
- $nodes,
- $extras=[],
- $hosts_file = "/etc/hosts"
-) {
-
- # OPNFV addition: Add additional lines in /etc/hosts through Astute additions
-
- $host_resources = nodes_to_hosts($nodes)
- $extras_host_resources = extras_to_hosts($extras)
- Host {
- ensure => present,
- target => $hosts_file
- }
-
- create_resources(host, $host_resources)
- create_resources(host, $extras_host_resources)
-}
+++ /dev/null
-class l23network::hosts_file (
- $nodes,
- $hosts_file = "/etc/hosts"
-) {
-
- #Move original hosts file
-
- $host_resources = nodes_to_hosts($nodes)
-
- Host {
- ensure => present,
- target => $hosts_file
- }
-
- create_resources(host, $host_resources)
-}
+++ /dev/null
-##############################################################################
-# Copyright (c) 2015 Ericsson AB and others.
-# stefan.k.berg@ericsson.com
-# jonas.bjurel@ericsson.com
-# 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
-##############################################################################
-
-In order to test the functionality without performing a full deployment, run "puppet apply" on the fake_init.pp
-which will call only the l23network::hosts_file class.
+++ /dev/null
-$fuel_settings = parseyaml($astute_settings_yaml)
-
-if $::fuel_settings['nodes'] {
- $nodes_hash = $::fuel_settings['nodes']
- $extras_hash = $::fuel_settings['opnfv']['hosts']
-
- class {'l23network::hosts_file':
- nodes => $nodes_hash,
- extras => $extras_hash
- }
-
- include l23network::hosts_file
-}
+++ /dev/null
-##############################################################################
-# Copyright (c) 2015 Ericsson AB and others.
-# stefan.k.berg@ericsson.com
-# jonas.bjurel@ericsson.com
-# 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
-##############################################################################
-
-TOP := $(shell pwd)
-
-.PHONY: all
-all:
-
-.PHONY: clean
-clean:
- @rm -rf tmp
- @rm -rf release
-
-.PHONY: validate-cache
-validate-cache:
- @echo "No cache validation schema available for $(shell pwd)"
- @echo "Continuing ..."
-
-.PHONY: release
-release:
- @cp -Rvp puppet/modules/* $(PUPPET_DEST)
+++ /dev/null
-##############################################################################
-# Copyright (c) 2015 Ericsson AB and others.
-# stefan.k.berg@ericsson.com
-# jonas.bjurel@ericsson.com
-# 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
-##############################################################################
-
-Addition to add ntp.conf separately for compute hosts and controller hosts through Astute.
-
-The astute.yaml file should contain entries as those below to have them picked up during deployment:
-
-opnfv:
- ntp:
- controller: |
- line 1
- line 2
- compute: |
- line 1
- line 2
-
-The suggested method for adding this information is to prepare for deployment with the Fuel GUI or CLI,
-but before actually deploying:
-
-1. Download the current deployment for all hosts: fuel --env 1 deployment --default
-2. Iterate through the hosts in "deployment_1" and add hosts configuration in the above format to their
- respective yaml file.
-3. Upload the modifed deployment information: fuel --env 1 deployment --upload
-
-After deploying, the additions will be included in /etc/astute.yaml of each host.
-
+++ /dev/null
-##############################################################################
-# Copyright (c) 2015 Ericsson AB and others.
-# stefan.k.berg@ericsson.com
-# jonas.bjurel@ericsson.com
-# 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
-##############################################################################
-
-# Class: Ntp
-#
-# Add Ntp content passed through astute.yaml into ntp.conf depending on the role
-#
-# Suitable yaml content:
-# <begin>
-# opnfv:
-# ntp:
-# controller: |
-# line 1
-# line 2
-# compute: |
-# line 1
-# line 2
-# <end>
-#
-#
-#
-
-class opnfv::ntp(
- $file='/etc/ntp.conf'
-) {
-
- case $::operatingsystem {
- centos, redhat: {
- $service_name = 'ntpd'
- }
- debian, ubuntu: {
- $service_name = 'ntp'
- }
- }
-
- if $::fuel_settings['role'] {
- if ($::fuel_settings['opnfv'] and
- $::fuel_settings['opnfv']['ntp']) {
- case $::fuel_settings['role'] {
- /controller/: {
- if $::fuel_settings['opnfv']['ntp']['controller'] {
- $template = 'opnfv/ntp.conf.controller.erb'
- $file_content = $::fuel_settings['opnfv']['ntp']['controller']
- }
- }
- /compute/: {
- if $::fuel_settings['opnfv']['ntp']['compute'] {
- $template = 'opnfv/ntp.conf.compute.erb'
- $file_content = $::fuel_settings['opnfv']['ntp']['compute']
- }
- }
- }
- }
- }
-
- if $file_content {
- package { 'ntp':
- ensure => installed,
- }
-
- file { $file:
- content => template($template),
- notify => Service['ntp'],
- }
-
- service { 'ntp':
- ensure => running,
- name => $service_name,
- enable => true,
- require => [ Package['ntp'], File[$file]]
- }
- }
-}
+++ /dev/null
-##############################################################################
-# Copyright (c) 2015 Ericsson AB and others.
-# stefan.k.berg@ericsson.com
-# jonas.bjurel@ericsson.com
-# 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
-##############################################################################
-
-tinker panic 0
-driftfile /var/lib/ntp/ntp.drift
-statistics loopstats peerstats clockstats
-filegen loopstats file loopstats type day enable
-filegen peerstats file peerstats type day enable
-filegen clockstats file clockstats type day enable
-restrict -4 default kod notrap nomodify nopeer noquery
-restrict -6 default kod notrap nomodify nopeer noquery
-restrict 127.0.0.1
-restrict ::1
-<%= @file_content %>
+++ /dev/null
-##############################################################################
-# Copyright (c) 2015 Ericsson AB and others.
-# stefan.k.berg@ericsson.com
-# jonas.bjurel@ericsson.com
-# 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
-##############################################################################
-
-tinker panic 0
-driftfile /var/lib/ntp/ntp.drift
-statistics loopstats peerstats clockstats
-filegen loopstats file loopstats type day enable
-filegen peerstats file peerstats type day enable
-filegen clockstats file clockstats type day enable
-restrict -4 default kod notrap nomodify nopeer noquery
-restrict -6 default kod notrap nomodify nopeer noquery
-restrict 127.0.0.1
-restrict ::1
-<%= @file_content %>
+++ /dev/null
-##############################################################################
-# Copyright (c) 2015 Ericsson AB and others.
-# stefan.k.berg@ericsson.com
-# jonas.bjurel@ericsson.com
-# 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
-##############################################################################
-
-In order to test the functionality without performing a full deployment, run "puppet apply" on the
-fake_init.pp which will call only the opnfv::ntp class.
+++ /dev/null
-##############################################################################
-# Copyright (c) 2015 Ericsson AB and others.
-# stefan.k.berg@ericsson.com
-# jonas.bjurel@ericsson.com
-# 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
-##############################################################################
-
-$fuel_settings = parseyaml($astute_settings_yaml)
-
-include opnfv::ntp
+++ /dev/null
-##############################################################################
-# Copyright (c) 2015 Ericsson AB and others.
-# stefan.k.berg@ericsson.com
-# jonas.bjurel@ericsson.com
-# 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
-##############################################################################
-
-TOP := $(shell pwd)
-
-.PHONY: all
-all:
-
-.PHONY: clean
-clean:
- @rm -rf tmp
- @rm -rf release
-
-.PHONY: validate-cache
-validate-cache:
- @echo "No cache validation schema available for $(shell pwd)"
- @echo "Continuing ..."
-
-.PHONY: release
-release:
- @cp -Rvp puppet/modules/* $(PUPPET_DEST)
+++ /dev/null
-##############################################################################
-# Copyright (c) 2015 Ericsson AB and others.
-# stefan.k.berg@ericsson.com
-# jonas.bjurel@ericsson.com
-# 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
-##############################################################################
-
-This is the top level "OPNFV" Puppet class which (hopefully) only will be used to include
-an appropriate set of sub-classes which themselves will be self-contained.
+++ /dev/null
-# Class: opnfv::add_packages
-#
-# Ensure added packages are installed:
-#
-
-class opnfv::add_packages {
- if $::osfamily == 'Debian' {
- }
-}
+++ /dev/null
-##############################################################################
-# Copyright (c) 2015 Ericsson AB and others.
-# stefan.k.berg@ericsson.com
-# jonas.bjurel@ericsson.com
-# 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
-##############################################################################
-
-# == Class: opnfv
-#
-# This class is used to perform OPNFV inclusions and settings on top of
-# the vanilla Fuel installation.
-#
-# Currently all logic is self contained, i.e. it is sufficient to
-# "include opnfv" from site.pp.
-
-class opnfv {
- # Configure resolv.conf if parameters passed through astute
- include opnfv::resolver
- # Setup OPNFV style NTP config
- include opnfv::ntp
- # Make sure all added packages are installed
- include opnfv::add_packages
-}
+++ /dev/null
-##############################################################################
-# Copyright (c) 2015 Ericsson AB and others.
-# stefan.k.berg@ericsson.com
-# jonas.bjurel@ericsson.com
-# 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
-##############################################################################
-
-# Class: opnfv::opncheck
-#
-# Make sure that /opt/opnfv/pre-deploy.sh has been run by
-# verifying there is an "opnfv:" level in the astute.yaml.
-
-class opnfv::opncheck()
-{
- unless $::fuel_settings['opnfv'] {
- fail("Error: You have not run /opt/opnfv/pre-deploy.sh on the Fuel master prior to deploying!")
- }
-}
+++ /dev/null
-##############################################################################
-# Copyright (c) 2015 Ericsson AB and others.
-# stefan.k.berg@ericsson.com
-# jonas.bjurel@ericsson.com
-# 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
-##############################################################################
-
-TOP := $(shell pwd)
-
-.PHONY: all
-all:
-
-.PHONY: clean
-clean:
- @rm -rf tmp
- @rm -rf release
-
-.PHONY: validate-cache
-validate-cache:
- @echo "No cache validation schema available for $(shell pwd)"
- @echo "Continuing ..."
-
-.PHONY: release
-release:
- @cp -Rvp puppet/modules/* $(PUPPET_DEST)
+++ /dev/null
-$fuel_settings = parseyaml($astute_settings_yaml)
-
-$openstack_version = {
- 'keystone' => 'installed',
- 'glance' => 'installed',
- 'horizon' => 'installed',
- 'nova' => 'installed',
- 'novncproxy' => 'installed',
- 'cinder' => 'installed',
-}
-
-tag("${::fuel_settings['deployment_id']}::${::fuel_settings['environment']}")
-
-#Stages configuration
-stage {'zero': } ->
-stage {'opncheck': } ->
-stage {'first': } ->
-stage {'openstack-custom-repo': } ->
-stage {'netconfig': } ->
-stage {'corosync_setup': } ->
-stage {'openstack-firewall': } -> Stage['main']
-
-class begin_deployment ()
-{
- $role = $::fuel_settings['role']
- notify { "***** Beginning deployment of node ${::hostname} with role $role *****": }
-}
-
-class {'begin_deployment': stage => 'zero' }
-
-stage {'glance-image':
- require => Stage['main'],
-}
-
-if $::fuel_settings['nodes'] {
- $nodes_hash = $::fuel_settings['nodes']
-# OPNFV addition to add to hosts file
- if ($::fuel_settings['opnfv'] and
- $::fuel_settings['opnfv']['hosts']) {
- $extras_hash = $::fuel_settings['opnfv']['hosts']
- } else {
- $extras_hash = undef
- }
-
- $dns_nameservers=$::fuel_settings['dns_nameservers']
- $node = filter_nodes($nodes_hash,'name',$::hostname)
- if empty($node) {
- fail("Node $::hostname is not defined in the hash structure")
- }
-
- $default_gateway = $node[0]['default_gateway']
-
- $base_syslog_hash = $::fuel_settings['base_syslog']
- $syslog_hash = $::fuel_settings['syslog']
-
- $disable_offload = $::fuel_settings['disable_offload']
- if $disable_offload {
- L23network::L3::Ifconfig<||> {
- ethtool => {
- 'K' => ['gso off', 'gro off'],
- }
- }
- }
-
- $use_neutron = $::fuel_settings['quantum']
-
- if (!empty(filter_nodes($::fuel_settings['nodes'], 'role', 'ceph-osd')) or
- $::fuel_settings['storage']['volumes_ceph'] or
- $::fuel_settings['storage']['images_ceph'] or
- $::fuel_settings['storage']['objects_ceph']
- ) {
- $use_ceph = true
- } else {
- $use_ceph = false
- }
-
-
- if $use_neutron {
- prepare_network_config($::fuel_settings['network_scheme'])
- #
- $internal_int = get_network_role_property('management', 'interface')
- $internal_address = get_network_role_property('management', 'ipaddr')
- $internal_netmask = get_network_role_property('management', 'netmask')
- #
- $public_int = get_network_role_property('ex', 'interface')
- if $public_int {
- $public_address = get_network_role_property('ex', 'ipaddr')
- $public_netmask = get_network_role_property('ex', 'netmask')
-
- # TODO(Xarses): remove this after completing merge of
- # multiple-cluster-networks
- L23network::L3::Ifconfig<| title == $public_int |> {
- default_gateway => true
- }
- } else {
- # TODO(Xarses): remove this after completing merge of
- # multiple-cluster-networks
- $fw_admin_int = get_network_role_property('fw-admin', 'interface')
- L23network::L3::Ifconfig<| title == $fw_admin_int |> {
- default_gateway => true
- }
- }
- #
- $storage_address = get_network_role_property('storage', 'ipaddr')
- $storage_netmask = get_network_role_property('storage', 'netmask')
- } else {
- $internal_address = $node[0]['internal_address']
- $internal_netmask = $node[0]['internal_netmask']
- $public_address = $node[0]['public_address']
- $public_netmask = $node[0]['public_netmask']
- $storage_address = $node[0]['storage_address']
- $storage_netmask = $node[0]['storage_netmask']
- $public_br = $node[0]['public_br']
- $internal_br = $node[0]['internal_br']
- $public_int = $::fuel_settings['public_interface']
- $internal_int = $::fuel_settings['management_interface']
-
- # TODO(Xarses): remove this after completing merge of
- # multiple-cluster-networks
- L23network::L3::Ifconfig<| title == $public_int |> {
- default_gateway => true
- }
-
- }
-}
-
-if ($::fuel_settings['neutron_mellanox']) {
- $mellanox_mode = $::fuel_settings['neutron_mellanox']['plugin']
-} else {
- $mellanox_mode = 'disabled'
-}
-
-# This parameter specifies the verbosity level of log messages
-# in openstack components config.
-# Debug would have set DEBUG level and ignore verbose settings, if any.
-# Verbose would have set INFO level messages
-# In case of non debug and non verbose - WARNING, default level would have set.
-$verbose = true
-$debug = $::fuel_settings['debug']
-
-### Storage Settings ###
-# Determine if any ceph parts have been asked for.
-# This will ensure that monitors are set up on controllers, even if no
-# ceph-osd roles during deployment
-
-
-### Syslog ###
-#TODO(bogdando) move logging options to astute.yaml
-# Enable error messages reporting to rsyslog. Rsyslog must be installed in this case.
-$use_syslog = $::fuel_settings['use_syslog'] ? { default=>true }
-# Syslog facilities for main openstack services
-# should vary (reserved usage)
-# local1 is reserved for openstack-dashboard
-$syslog_log_facility_glance = 'LOG_LOCAL2'
-$syslog_log_facility_cinder = 'LOG_LOCAL3'
-$syslog_log_facility_neutron = 'LOG_LOCAL4'
-$syslog_log_facility_nova = 'LOG_LOCAL6'
-$syslog_log_facility_keystone = 'LOG_LOCAL7'
-# could be the same
-# local0 is free for use
-$syslog_log_facility_murano = 'LOG_LOCAL0'
-$syslog_log_facility_heat = 'LOG_LOCAL0'
-$syslog_log_facility_sahara = 'LOG_LOCAL0'
-$syslog_log_facility_ceilometer = 'LOG_LOCAL0'
-$syslog_log_facility_ceph = 'LOG_LOCAL0'
-
-### Monit ###
-# Monit for compute nodes.
-# If enabled, will install monit and configure its watchdogs to track
-# nova-compute/api/network (and openvswitch service, if neutron enabled)
-# at compute nodes.
-# TODO(bogdando) set to true once monit package shipped with Fuel ISO
-$use_monit = false
-
-$nova_rate_limits = {
- 'POST' => 100000,
- 'POST_SERVERS' => 100000,
- 'PUT' => 1000, 'GET' => 100000,
- 'DELETE' => 100000
-}
-$cinder_rate_limits = {
- 'POST' => 100000,
- 'POST_SERVERS' => 100000,
- 'PUT' => 100000, 'GET' => 100000,
- 'DELETE' => 100000
-}
-
-###
-class advanced_node_netconfig {
- $sdn = generate_network_config()
- notify {"SDN: ${sdn}": }
-}
-
-case $::operatingsystem {
- 'redhat' : {
- $queue_provider = 'qpid'
- $custom_mysql_setup_class = 'pacemaker_mysql'
- }
- default: {
- $queue_provider='rabbitmq'
- $custom_mysql_setup_class='galera'
- }
-}
-
-class os_common {
- # OPNFV check if pre_deploy.sh has been run, otherwise fail
- class {'opnfv::opncheck': stage => 'opncheck' }
- if ($::fuel_settings['neutron_mellanox']) {
- if ($::mellanox_mode != 'disabled') {
- class { 'mellanox_openstack::ofed_recompile' :
- stage => 'zero',
- }
- }
- if ($::fuel_settings['storage']['iser']) {
- class { 'mellanox_openstack::iser_rename':
- stage => 'zero',
- storage_parent => $::fuel_settings['neutron_mellanox']['storage_parent'],
- iser_interface_name => $::fuel_settings['neutron_mellanox']['iser_interface_name'],
- }
- Class['mellanox_openstack::ofed_recompile'] -> Class['mellanox_openstack::iser_rename']
- }
- }
- class {"l23network::hosts_file": stage => 'netconfig', nodes => $nodes_hash, extras => $extras_hash }
- class {'l23network': use_ovs=>$use_neutron, stage=> 'netconfig'}
- if $use_neutron {
- class {'advanced_node_netconfig': stage => 'netconfig' }
- } else {
- class {'osnailyfacter::network_setup': stage => 'netconfig'}
- }
-
- if ($::osfamily == 'RedHat') {
- package {'irqbalance': ensure => present} -> service {'irqbalance': ensure => running }
- }
-
- class { 'openstack::firewall':
- stage => 'openstack-firewall',
- nova_vnc_ip_range => $::fuel_settings['management_network_range'],
- }
-
- $base_syslog_rserver = {
- 'remote_type' => 'tcp',
- 'server' => $base_syslog_hash['syslog_server'],
- 'port' => $base_syslog_hash['syslog_port']
- }
-
- # setting kernel reserved ports
- # defaults are 49000,35357,41055,58882
- class { 'openstack::reserved_ports':
- stage => 'netconfig',
- }
-
- # setting service down time and report interval
- # to 60 and 180 for Nova respectively to allow kernel
- # to kill dead connections
- # (see zendesk #1158 as well)
- $nova_report_interval = '60'
- $nova_service_down_time = '180'
-
- $syslog_rserver = {
- 'remote_type' => $syslog_hash['syslog_transport'],
- 'server' => $syslog_hash['syslog_server'],
- 'port' => $syslog_hash['syslog_port'],
- }
- if $syslog_hash['syslog_server'] != "" and $syslog_hash['syslog_port'] != "" and $syslog_hash['syslog_transport'] != "" {
- $rservers = [$base_syslog_rserver, $syslog_rserver]
- } else {
- $rservers = [$base_syslog_rserver]
- }
-
- if $use_syslog {
- class { "::openstack::logging":
- stage => 'first',
- role => 'client',
- show_timezone => true,
- # log both locally include auth, and remote
- log_remote => true,
- log_local => true,
- log_auth_local => true,
- # keep four weekly log rotations, force rotate if 300M size have exceeded
- rotation => 'weekly',
- keep => '4',
- minsize => '10M',
- maxsize => '100M',
- # remote servers to send logs to
- rservers => $rservers,
- # should be true, if client is running at virtual node
- virtual => str2bool($::is_virtual),
- # Rabbit doesn't support syslog directly
- rabbit_log_level => 'NOTICE',
- debug => $debug,
- }
- }
-
- class { 'osnailyfacter::atop':
- stage => 'first',
- }
-
- class { 'osnailyfacter::ssh': }
-
- #case $role {
- # /controller/: { $hostgroup = 'controller' }
- # /swift-proxy/: { $hostgroup = 'swift-proxy' }
- # /storage/:{ $hostgroup = 'swift-storage' }
- # /compute/: { $hostgroup = 'compute' }
- # /cinder/: { $hostgroup = 'cinder' }
- # default: { $hostgroup = 'generic' }
- #}
-
- # if $nagios != 'false' {
- # class {'nagios':
- # proj_name => $proj_name,
- # services => [
- # 'host-alive','nova-novncproxy','keystone', 'nova-scheduler',
- # 'nova-consoleauth', 'nova-cert', 'haproxy', 'nova-api', 'glance-api',
- # 'glance-registry','horizon', 'rabbitmq', 'mysql',
- # ],
- # whitelist => ['127.0.0.1', $nagios_master],
- # hostgroup => $hostgroup ,
- # }
- # }
-
- # Workaround for fuel bug with firewall
- firewall {'003 remote rabbitmq ':
- sport => [ 4369, 5672, 15672, 41055, 55672, 61613 ],
- source => $::fuel_settings['master_ip'],
- proto => 'tcp',
- action => 'accept',
- require => Class['openstack::firewall'],
- }
-
- firewall {'004 remote puppet ':
- sport => [ 8140 ],
- source => $master_ip,
- proto => 'tcp',
- action => 'accept',
- require => Class['openstack::firewall'],
- }
-
- class { 'puppet::pull' :
- modules_source => $::fuel_settings['puppet_modules_source'],
- manifests_source => $::fuel_settings['puppet_manifests_source'],
- }
-} # OS_COMMON ENDS
-
-
-
-node default {
- case $::fuel_settings['deployment_mode'] {
- "singlenode": {
- include "osnailyfacter::cluster_simple"
- class {'os_common':}
- class {'opnfv':}
- }
- "multinode": {
- include "osnailyfacter::cluster_simple"
- class {'os_common':}
- class {'opnfv':}
- }
- /^(ha|ha_compact)$/: {
- include "osnailyfacter::cluster_ha"
- class {'os_common':}
- class {'opnfv':}
- }
- "rpmcache": { include osnailyfacter::rpmcache }
- }
-}
+++ /dev/null
-$fuel_settings = parseyaml($astute_settings_yaml)
-
-$openstack_version = {
- 'keystone' => 'installed',
- 'glance' => 'installed',
- 'horizon' => 'installed',
- 'nova' => 'installed',
- 'novncproxy' => 'installed',
- 'cinder' => 'installed',
-}
-
-tag("${::fuel_settings['deployment_id']}::${::fuel_settings['environment']}")
-
-#Stages configuration
-stage {'zero': } ->
-stage {'first': } ->
-stage {'openstack-custom-repo': } ->
-stage {'netconfig': } ->
-stage {'corosync_setup': } ->
-stage {'openstack-firewall': } -> Stage['main']
-
-class begin_deployment ()
-{
- $role = $::fuel_settings['role']
- notify { "***** Beginning deployment of node ${::hostname} with role $role *****": }
-}
-
-class {'begin_deployment': stage => 'zero' }
-
-stage {'glance-image':
- require => Stage['main'],
-}
-
-if $::fuel_settings['nodes'] {
- $nodes_hash = $::fuel_settings['nodes']
- $dns_nameservers=$::fuel_settings['dns_nameservers']
- $node = filter_nodes($nodes_hash,'name',$::hostname)
- if empty($node) {
- fail("Node $::hostname is not defined in the hash structure")
- }
-
- $default_gateway = $node[0]['default_gateway']
-
- $base_syslog_hash = $::fuel_settings['base_syslog']
- $syslog_hash = $::fuel_settings['syslog']
-
- $disable_offload = $::fuel_settings['disable_offload']
- if $disable_offload {
- L23network::L3::Ifconfig<||> {
- ethtool => {
- 'K' => ['gso off', 'gro off'],
- }
- }
- }
-
- $use_neutron = $::fuel_settings['quantum']
-
- if (!empty(filter_nodes($::fuel_settings['nodes'], 'role', 'ceph-osd')) or
- $::fuel_settings['storage']['volumes_ceph'] or
- $::fuel_settings['storage']['images_ceph'] or
- $::fuel_settings['storage']['objects_ceph']
- ) {
- $use_ceph = true
- } else {
- $use_ceph = false
- }
-
-
- if $use_neutron {
- prepare_network_config($::fuel_settings['network_scheme'])
- #
- $internal_int = get_network_role_property('management', 'interface')
- $internal_address = get_network_role_property('management', 'ipaddr')
- $internal_netmask = get_network_role_property('management', 'netmask')
- #
- $public_int = get_network_role_property('ex', 'interface')
- if $public_int {
- $public_address = get_network_role_property('ex', 'ipaddr')
- $public_netmask = get_network_role_property('ex', 'netmask')
-
- # TODO(Xarses): remove this after completing merge of
- # multiple-cluster-networks
- L23network::L3::Ifconfig<| title == $public_int |> {
- default_gateway => true
- }
- } else {
- # TODO(Xarses): remove this after completing merge of
- # multiple-cluster-networks
- $fw_admin_int = get_network_role_property('fw-admin', 'interface')
- L23network::L3::Ifconfig<| title == $fw_admin_int |> {
- default_gateway => true
- }
- }
- #
- $storage_address = get_network_role_property('storage', 'ipaddr')
- $storage_netmask = get_network_role_property('storage', 'netmask')
- } else {
- $internal_address = $node[0]['internal_address']
- $internal_netmask = $node[0]['internal_netmask']
- $public_address = $node[0]['public_address']
- $public_netmask = $node[0]['public_netmask']
- $storage_address = $node[0]['storage_address']
- $storage_netmask = $node[0]['storage_netmask']
- $public_br = $node[0]['public_br']
- $internal_br = $node[0]['internal_br']
- $public_int = $::fuel_settings['public_interface']
- $internal_int = $::fuel_settings['management_interface']
-
- # TODO(Xarses): remove this after completing merge of
- # multiple-cluster-networks
- L23network::L3::Ifconfig<| title == $public_int |> {
- default_gateway => true
- }
-
- }
-}
-
-if ($::fuel_settings['neutron_mellanox']) {
- $mellanox_mode = $::fuel_settings['neutron_mellanox']['plugin']
-} else {
- $mellanox_mode = 'disabled'
-}
-
-# This parameter specifies the verbosity level of log messages
-# in openstack components config.
-# Debug would have set DEBUG level and ignore verbose settings, if any.
-# Verbose would have set INFO level messages
-# In case of non debug and non verbose - WARNING, default level would have set.
-$verbose = true
-$debug = $::fuel_settings['debug']
-
-### Storage Settings ###
-# Determine if any ceph parts have been asked for.
-# This will ensure that monitors are set up on controllers, even if no
-# ceph-osd roles during deployment
-
-
-### Syslog ###
-#TODO(bogdando) move logging options to astute.yaml
-# Enable error messages reporting to rsyslog. Rsyslog must be installed in this case.
-$use_syslog = $::fuel_settings['use_syslog'] ? { default=>true }
-# Syslog facilities for main openstack services
-# should vary (reserved usage)
-# local1 is reserved for openstack-dashboard
-$syslog_log_facility_glance = 'LOG_LOCAL2'
-$syslog_log_facility_cinder = 'LOG_LOCAL3'
-$syslog_log_facility_neutron = 'LOG_LOCAL4'
-$syslog_log_facility_nova = 'LOG_LOCAL6'
-$syslog_log_facility_keystone = 'LOG_LOCAL7'
-# could be the same
-# local0 is free for use
-$syslog_log_facility_murano = 'LOG_LOCAL0'
-$syslog_log_facility_heat = 'LOG_LOCAL0'
-$syslog_log_facility_sahara = 'LOG_LOCAL0'
-$syslog_log_facility_ceilometer = 'LOG_LOCAL0'
-$syslog_log_facility_ceph = 'LOG_LOCAL0'
-
-### Monit ###
-# Monit for compute nodes.
-# If enabled, will install monit and configure its watchdogs to track
-# nova-compute/api/network (and openvswitch service, if neutron enabled)
-# at compute nodes.
-# TODO(bogdando) set to true once monit package shipped with Fuel ISO
-$use_monit = false
-
-$nova_rate_limits = {
- 'POST' => 100000,
- 'POST_SERVERS' => 100000,
- 'PUT' => 1000, 'GET' => 100000,
- 'DELETE' => 100000
-}
-$cinder_rate_limits = {
- 'POST' => 100000,
- 'POST_SERVERS' => 100000,
- 'PUT' => 100000, 'GET' => 100000,
- 'DELETE' => 100000
-}
-
-###
-class advanced_node_netconfig {
- $sdn = generate_network_config()
- notify {"SDN: ${sdn}": }
-}
-
-case $::operatingsystem {
- 'redhat' : {
- $queue_provider = 'qpid'
- $custom_mysql_setup_class = 'pacemaker_mysql'
- }
- default: {
- $queue_provider='rabbitmq'
- $custom_mysql_setup_class='galera'
- }
-}
-
-class os_common {
- if ($::fuel_settings['neutron_mellanox']) {
- if ($::mellanox_mode != 'disabled') {
- class { 'mellanox_openstack::ofed_recompile' :
- stage => 'zero',
- }
- }
- if ($::fuel_settings['storage']['iser']) {
- class { 'mellanox_openstack::iser_rename':
- stage => 'zero',
- storage_parent => $::fuel_settings['neutron_mellanox']['storage_parent'],
- iser_interface_name => $::fuel_settings['neutron_mellanox']['iser_interface_name'],
- }
- Class['mellanox_openstack::ofed_recompile'] -> Class['mellanox_openstack::iser_rename']
- }
- }
-
- class {"l23network::hosts_file": stage => 'netconfig', nodes => $nodes_hash }
- class {'l23network': use_ovs=>$use_neutron, stage=> 'netconfig'}
- if $use_neutron {
- class {'advanced_node_netconfig': stage => 'netconfig' }
- } else {
- class {'osnailyfacter::network_setup': stage => 'netconfig'}
- }
-
- if ($::osfamily == 'RedHat') {
- package {'irqbalance': ensure => present} -> service {'irqbalance': ensure => running }
- }
-
- class { 'openstack::firewall':
- stage => 'openstack-firewall',
- nova_vnc_ip_range => $::fuel_settings['management_network_range'],
- }
-
- $base_syslog_rserver = {
- 'remote_type' => 'tcp',
- 'server' => $base_syslog_hash['syslog_server'],
- 'port' => $base_syslog_hash['syslog_port']
- }
-
- # setting kernel reserved ports
- # defaults are 49000,35357,41055,58882
- class { 'openstack::reserved_ports':
- stage => 'netconfig',
- }
-
- # setting service down time and report interval
- # to 60 and 180 for Nova respectively to allow kernel
- # to kill dead connections
- # (see zendesk #1158 as well)
- $nova_report_interval = '60'
- $nova_service_down_time = '180'
-
- $syslog_rserver = {
- 'remote_type' => $syslog_hash['syslog_transport'],
- 'server' => $syslog_hash['syslog_server'],
- 'port' => $syslog_hash['syslog_port'],
- }
- if $syslog_hash['syslog_server'] != "" and $syslog_hash['syslog_port'] != "" and $syslog_hash['syslog_transport'] != "" {
- $rservers = [$base_syslog_rserver, $syslog_rserver]
- } else {
- $rservers = [$base_syslog_rserver]
- }
-
- if $use_syslog {
- class { "::openstack::logging":
- stage => 'first',
- role => 'client',
- show_timezone => true,
- # log both locally include auth, and remote
- log_remote => true,
- log_local => true,
- log_auth_local => true,
- # keep four weekly log rotations, force rotate if 300M size have exceeded
- rotation => 'weekly',
- keep => '4',
- minsize => '10M',
- maxsize => '100M',
- # remote servers to send logs to
- rservers => $rservers,
- # should be true, if client is running at virtual node
- virtual => str2bool($::is_virtual),
- # Rabbit doesn't support syslog directly
- rabbit_log_level => 'NOTICE',
- debug => $debug,
- }
- }
-
- class { 'osnailyfacter::atop':
- stage => 'first',
- }
-
- class { 'osnailyfacter::ssh': }
-
- #case $role {
- # /controller/: { $hostgroup = 'controller' }
- # /swift-proxy/: { $hostgroup = 'swift-proxy' }
- # /storage/:{ $hostgroup = 'swift-storage' }
- # /compute/: { $hostgroup = 'compute' }
- # /cinder/: { $hostgroup = 'cinder' }
- # default: { $hostgroup = 'generic' }
- #}
-
- # if $nagios != 'false' {
- # class {'nagios':
- # proj_name => $proj_name,
- # services => [
- # 'host-alive','nova-novncproxy','keystone', 'nova-scheduler',
- # 'nova-consoleauth', 'nova-cert', 'haproxy', 'nova-api', 'glance-api',
- # 'glance-registry','horizon', 'rabbitmq', 'mysql',
- # ],
- # whitelist => ['127.0.0.1', $nagios_master],
- # hostgroup => $hostgroup ,
- # }
- # }
-
- # Workaround for fuel bug with firewall
- firewall {'003 remote rabbitmq ':
- sport => [ 4369, 5672, 15672, 41055, 55672, 61613 ],
- source => $::fuel_settings['master_ip'],
- proto => 'tcp',
- action => 'accept',
- require => Class['openstack::firewall'],
- }
-
- firewall {'004 remote puppet ':
- sport => [ 8140 ],
- source => $master_ip,
- proto => 'tcp',
- action => 'accept',
- require => Class['openstack::firewall'],
- }
-
- class { 'puppet::pull' :
- modules_source => $::fuel_settings['puppet_modules_source'],
- manifests_source => $::fuel_settings['puppet_manifests_source'],
- }
-} # OS_COMMON ENDS
-
-
-
-node default {
- case $::fuel_settings['deployment_mode'] {
- "singlenode": {
- include "osnailyfacter::cluster_simple"
- class {'os_common':}
- }
- "multinode": {
- include "osnailyfacter::cluster_simple"
- class {'os_common':}
- }
- /^(ha|ha_compact)$/: {
- include "osnailyfacter::cluster_ha"
- class {'os_common':}
- }
- "rpmcache": { include osnailyfacter::rpmcache }
- }
-}
+++ /dev/null
-##############################################################################
-# Copyright (c) 2015 Ericsson AB and others.
-# stefan.k.berg@ericsson.com
-# jonas.bjurel@ericsson.com
-# 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
-##############################################################################
-
-TOP := $(shell pwd)
-
-.PHONY: all
-all:
-
-.PHONY: clean
-clean:
- @rm -rf tmp
- @rm -rf release
-
-.PHONY: validate-cache
-validate-cache:
- @echo "No cache validation schema available for $(shell pwd)"
- @echo "Continuing ..."
-
-.PHONY: release
-release:
- @cp -Rvp puppet/modules/* $(PUPPET_DEST)
+++ /dev/null
-##############################################################################
-# Copyright (c) 2015 Ericsson AB and others.
-# stefan.k.berg@ericsson.com
-# jonas.bjurel@ericsson.com
-# 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
-##############################################################################
-
-Addition to generate resolv.conf separately for compute hosts and controller
-hosts through Astute.
-
-The astute.yaml file should contain entries as those below to have them picked
-up during deployment:
-
-opnfv:
- dns:
- compute:
- - 100.100.100.2
- - 100.100.100.3
- controller:
- - 100.100.100.102
- - 100.100.100.104
-
-The suggested method for adding this information is to prepare for deployment
-with the Fuel GUI or CLI, but before actually deploying:
-
-1. Download the current deployment for all hosts: fuel --env 1 deployment --default
-2. Iterate through the hosts in "deployment_1" and add hosts configuration in
- the above format to their respective yaml file.
-3. Upload the modifed deployment information: fuel --env 1 deployment --upload
-
-After deploying, the additions will be included in /etc/astute.yaml of each
-host.
-
+++ /dev/null
-##############################################################################
-# Copyright (c) 2015 Ericsson AB and others.
-# stefan.k.berg@ericsson.com
-# jonas.bjurel@ericsson.com
-# 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
-##############################################################################
-
-# Class: opnfv::resolver
-#
-# Add resolver content passed through astute.yaml into resolv.conf
-# depending on the role
-#
-# Suitable yaml content:
-# <begin>
-# opnfv:
-# dns:
-# compute:
-# - 100.100.100.2
-# - 100.100.100.3
-# controller:
-# - 100.100.100.102
-# - 100.100.100.104
-# <end>
-#
-#
-#
-
-class opnfv::resolver()
-{
- if $::fuel_settings['role'] {
- if $::fuel_settings['role'] == 'primary-controller' {
- $role = 'controller'
- } else {
- $role = $::fuel_settings['role']
- }
-
- if ($::fuel_settings['opnfv']
- and $::fuel_settings['opnfv']['dns']
- and $::fuel_settings['opnfv']['dns'][$role]) {
- $nameservers=$::fuel_settings['opnfv']['dns'][$role]
-
- file { '/etc/resolv.conf':
- owner => root,
- group => root,
- mode => '0644',
- content => template('opnfv/resolv.conf.erb'),
- }
-
- # /etc/resolv.conf is re-generated at each boot by resolvconf, so we
- # need to store there as well.
-
- case $::operatingsystem {
- 'ubuntu': {
- file { '/etc/resolvconf/resolv.conf.d/head':
- owner => root,
- group => root,
- mode => '0644',
- content => template('opnfv/resolv.conf.erb'),
- }
- }
- 'centos': {
- exec { 'for file in ifcfg-eth*; do grep -q -F "PEERDNS=" $file || echo "PEERDNS=no" >> $file; done ':
- provider => 'shell',
- cwd => '/etc/sysconfig/network-scripts',
- }
- }
- }
- }
- }
-}
+++ /dev/null
-##############################################################################
-# Copyright (c) 2015 Ericsson AB and others.
-# stefan.k.berg@ericsson.com
-# jonas.bjurel@ericsson.com
-# 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
-##############################################################################
-
-# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
-# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
-# Modified by OPNFV.
-<% @nameservers.each do |ns| %>nameserver <%= ns %>
-<% end -%>
+++ /dev/null
-##############################################################################
-# Copyright (c) 2015 Ericsson AB and others.
-# stefan.k.berg@ericsson.com
-# jonas.bjurel@ericsson.com
-# 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
-##############################################################################
-
-In order to test the functionality without performing a full deployment,
-run "puppet apply" on the fake_init.pp which will call only the
-opnfv::resolvconf class.
+++ /dev/null
-##############################################################################
-# Copyright (c) 2015 Ericsson AB and others.
-# stefan.k.berg@ericsson.com
-# jonas.bjurel@ericsson.com
-# 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
-##############################################################################
-
-$fuel_settings = parseyaml($astute_settings_yaml)
-
-include opnfv::resolvconf
---- prepare-build-env.sh.orig 2015-08-11 22:12:19.750626481 +0200
-+++ prepare-build-env.sh 2015-08-11 22:43:42.308300848 +0200
-@@ -43,7 +43,7 @@
- trusty)
- GEMPKG="ruby ruby-dev"
- # we need multistrap version 2.1.6, let's install it from devops mirror
-- sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys D5A05778
-+ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 1D2B45A2
- echo "deb http://mirror.fuel-infra.org/devops/ubuntu/ ./" | sudo tee /etc/apt/sources.list.d/fuel-devops.list
- # be sure, that we will not update multistrap in future
- sudo tee /etc/apt/preferences.d/fuel-pin-300 <<EOF
+*** prepare-build-env.sh.orig Tue Sep 8 08:47:46 2015
+--- prepare-build-env.sh Tue Sep 8 08:48:22 2015
+***************
+*** 41,47 ****
+
+ trusty)
+ GEMPKG="ruby ruby-dev"
+! sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys D5A05778
+ echo "deb http://mirror.fuel-infra.org/devops/ubuntu/ ./" | sudo tee /etc/apt/sources.list.d/fuel-devops.list
+ sudo apt-get update && sudo apt-get -y install nodejs nodejs-legacy npm
+ ;;
+--- 41,47 ----
+
+ trusty)
+ GEMPKG="ruby ruby-dev"
+! sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 1D2B45A2
+ echo "deb http://mirror.fuel-infra.org/devops/ubuntu/ ./" | sudo tee /etc/apt/sources.list.d/fuel-devops.list
+ sudo apt-get update && sudo apt-get -y install nodejs nodejs-legacy npm
+ ;;
--- /dev/null
+*** prepare-build-env.sh.orig Tue Sep 8 10:29:08 2015
+--- prepare-build-env.sh Tue Sep 8 10:30:21 2015
+***************
+*** 43,49 ****
+ GEMPKG="ruby ruby-dev"
+ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 1D2B45A2
+ echo "deb http://mirror.fuel-infra.org/devops/ubuntu/ ./" | sudo tee /etc/apt/sources.list.d/fuel-devops.list
+! sudo apt-get update && sudo apt-get -y install nodejs nodejs-legacy npm
+ ;;
+
+ precise)
+--- 43,49 ----
+ GEMPKG="ruby ruby-dev"
+ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 1D2B45A2
+ echo "deb http://mirror.fuel-infra.org/devops/ubuntu/ ./" | sudo tee /etc/apt/sources.list.d/fuel-devops.list
+! sudo apt-get update && sudo apt-get -y install nodejs nodejs-legacy npm dosfstools xorriso
+ ;;
+
+ precise)
};
BinDirectory "pool/main" {
- Packages "dists/precise/main/binary-amd64/Packages";
- BinOverride "./indices/override.precise.main";
- ExtraOverride "./indices/override.precise.extra.main";
+ Packages "dists/trusty/main/binary-amd64/Packages";
+ BinOverride "./indices/override.trusty.main";
+ ExtraOverride "./indices/override.trusty.extra.main";
};
Default {
APT::FTPArchive::Release::Origin "Ubuntu";
APT::FTPArchive::Release::Label "Ubuntu";
-APT::FTPArchive::Release::Suite "precise";
-APT::FTPArchive::Release::Version "12.04";
-APT::FTPArchive::Release::Codename "precise";
+APT::FTPArchive::Release::Suite "trusty";
+APT::FTPArchive::Release::Version "1.04";
+APT::FTPArchive::Release::Codename "trusty";
APT::FTPArchive::Release::Architectures "amd64";
APT::FTPArchive::Release::Components "main";
-APT::FTPArchive::Release::Description "Ubuntu Precise 12.04 LTS";
+APT::FTPArchive::Release::Description "Ubuntu Trusty Tahr 14.04 LTS";
};
BinDirectory "pool/debian-installer" {
- Packages "dists/precise/main/debian-installer/binary-amd64/Packages";
- BinOverride "./indices/override.precise.main.debian-installer";
+ Packages "dists/trusty/main/debian-installer/binary-amd64/Packages";
+ BinOverride "./indices/override.trusty.main.debian-installer";
};
Default {
ssh-copy-id root@$FUELHOST
sshfs root@1${FUELHOST}:/ $TMP_HOSTMOUNT
- if [ -f $REPO/dists/precise/main/binary-amd64/Packages.backup ]; then
+ if [ -f $REPO/dists/trusty/main/binary-amd64/Packages.backup ]; then
echo "Error - found backup file for Packages!"
exit 1
fi
- if [ -f $REPO/dists/precise/main/binary-amd64/Packages.gz.backup ]; then
+ if [ -f $REPO/dists/trusty/main/binary-amd64/Packages.gz.backup ]; then
echo "Error - found backup file for Packages.gz!"
exit 1
fi
- if [ -f $REPO/dists/precise/Release.backup ]; then
+ if [ -f $REPO/dists/trusty/Release.backup ]; then
echo "Error - found backup file for Release!"
exit 1
fi
exit 1
fi
- cp $REPO/dists/precise/main/binary-amd64/Packages $REPO/dists/precise/main/binary-amd64/Packages.backup
- cp $REPO/dists/precise/main/binary-amd64/Packages.gz $REPO/dists/precise/main/binary-amd64/Packages.gz.backup
- cp $REPO/dists/precise/Release $REPO/dists/precise/Release.backup
+ cp $REPO/dists/trusty/main/binary-amd64/Packages $REPO/dists/trusty/main/binary-amd64/Packages.backup
+ cp $REPO/dists/trusty/main/binary-amd64/Packages.gz $REPO/dists/trusty/main/binary-amd64/Packages.gz.backup
+ cp $REPO/dists/trusty/Release $REPO/dists/trusty/Release.backup
cp -Rvp $DEST/etc/puppet $DEST/etc/puppet.backup
}
post_make_live() {
- echo "Installing into Puppet:"
- cd $TOP/release/puppet/modules
- for dir in *
- do
- echo " $dir"
- cp -Rp $dir $DEST/etc/puppet/modules
- done
+ if [ -d $TOP/release/puppet/modules ]; then
+ echo "Installing into Puppet:"
+ cd $TOP/release/puppet/modules
+ if [ `ls -1 | wc -l` -gt 0 ]; then
+ for dir in *
+ do
+ echo " $dir"
+ cp -Rp $dir $DEST/etc/puppet/modules
+ done
+ fi
+ fi
}
make_live() {
tar xzf $DEST/puppet-slave.tgz
cd $TOP/release/puppet/modules
- verify_orig_files $TMP_ISOPUPPET/release/puppet $TOP/release/puppet/modules
# Remove all .orig files before copying as they now have been verfied
- find $TOP/release/puppet/modules -type f -name '*.orig' -exec rm {} \;
-
- for dir in $TOP/release/puppet/modules/*
- do
- echo " $dir"
- cp -Rp $dir $TMP_ISOPUPPET/release/puppet
- done
- cd $TMP_ISOPUPPET/release/puppet
+ if [ -d $TOP/release/puppet/modules ]; then
+ if [ `ls -1 | wc -l` -gt 0 ]; then
+ verify_orig_files $TMP_ISOPUPPET/release/puppet $TOP/release/puppet/modules
+ find $TOP/release/puppet/modules -type f -name '*.orig' -exec rm {} \;
+ for dir in $TOP/release/puppet/modules/*
+ do
+ echo " $dir"
+ cp -Rp $dir $TMP_ISOPUPPET/release/puppet
+ done
+ fi
+ fi
+ cd $TMP_ISOPUPPET/release/puppet
tar czf $DEST/puppet-slave.tgz .
cd $TOP
rm -Rf $TMP_ISOPUPPET
make_iso() {
prep_make_iso
copy_packages
- iso_copy_puppet
+ #iso_copy_puppet
iso_modify_image
make_iso_image
}
do
echo " $udeb"
cp $udeb $REPO/pool/debian-installer
+ echo "Did not expect a package here, not supported"
+ exit 1
done
cd $TOP/release/packages/ubuntu/pool/main
do
echo " $deb"
cp $deb $REPO/pool/main
+ echo "Did not expect a package here, not supported"
+ exit 1
done
echo "Running Fuel package patch file"
for line in `cat $TOP/apply_patches | grep -v "^#" | grep -v "^$"`; do
echo "Line is $line"
+ echo "Did not expect a line here, not supported"
+ exit 1
ref=`echo $line | cut -d '>' -f 1`
origpkg=`echo $line| cut -d '>' -f 2`
url=`echo $line | cut -d '>' -f 3`
done
printf "Done running Fuel patch file\n\n"
-
echo "Running add packages file"
for line in `cat $TOP/add_opnfv_packages | grep -v "^#" | grep -v "^$"`; do
echo "Line is $line"
+ echo "Did not expect a line here, not supported"
+ exit 1
ref=`echo $line | cut -d '>' -f 1`
origpkg=`echo $line| cut -d '>' -f 2`
url=`echo $line | cut -d '>' -f 3`
printf "\n\n" | tee -a $REPORTFILE
for line in `cat $TOP/patch-packages/release/patch-replacements`
do
+ echo "Did not expect a line here, not supported"
+ exit 1
frompkg=`echo $line | cut -d ">" -f 1`
topkg=`echo $line | cut -d ">" -f 2`
echo "CM: Applying patch to $frompkg" | tee -a $REPORTFILE
APT_DEB_CONF="$TOP/install/apt-ftparchive-deb.conf"
APT_UDEB_CONF="$TOP/install/apt-ftparchive-udeb.conf"
- apt-ftparchive -c "${APT_REL_CONF}" generate "${APT_DEB_CONF}"
- apt-ftparchive generate "${APT_UDEB_CONF}"
+ echo Not running echo apt-ftparchive -c "${APT_REL_CONF}" generate "${APT_DEB_CONF}"
+ echo Not running apt-ftparchive -c "${APT_REL_CONF}" generate "${APT_DEB_CONF}"
+ echo Not running apt-ftparchive generate "${APT_UDEB_CONF}"
+ echo Not running apt-ftparchive generate "${APT_UDEB_CONF}"
# Fuel also needs this index file
- cat dists/precise/main/binary-amd64/Packages | \
- awk '/^Package:/{pkg=$2}
- /^Version:/{print pkg ": \"" $2 "\""}' > ubuntu-versions.yaml
- cp ubuntu-versions.yaml $DEST
+ # cat dists/trusty/main/binary-amd64/Packages | \
+ # awk '/^Package:/{pkg=$2}
+ # /^Version:/{print pkg ": \"" $2 "\""}' > ubuntu-versions.yaml
+ # cp ubuntu-versions.yaml $DEST
- apt-ftparchive -c "${APT_REL_CONF}" release dists/precise/ > dists/precise/Release
- gzip -9cf dists/precise/Release > dists/precise/Release.gz
+ # apt-ftparchive -c "${APT_REL_CONF}" release dists/trusty/ > dists/trusty/Release
+ # gzip -9cf dists/trusty/Release > dists/trusty/Release.gz
popd > /dev/null
NEWISO=$3
VOLUMEID="$4 $5"
REPORTFILE="${NEWISO}.txt"
+ echo "Opening reportfile at $REPORTFILE"
+ touch $REPORTFILE
if [ ! -f $ORIGISO ]; then
echo "Can't find original MOS 5.1 iso at $ORIGISO"
rm $CONF
REPO=$DEST/var/www/nailgun/ubuntu/fuelweb/x86_64
cd $REPO
-if [ ! -f $REPO/dists/precise/main/binary-amd64/Packages.backup ]; then
+if [ ! -f $REPO/dists/trusty/main/binary-amd64/Packages.backup ]; then
echo "Error - didn't find backup file for Packages!"
exit 1
fi
-if [ ! -f $REPO/dists/precise/main/binary-amd64/Packages.gz.backup ]; then
+if [ ! -f $REPO/dists/trusty/main/binary-amd64/Packages.gz.backup ]; then
echo "Error - didn't find backup file for Packages.gz!"
exit 1
fi
-if [ ! -f $REPO/dists/precise/Release.backup ]; then
+if [ ! -f $REPO/dists/trusty/Release.backup ]; then
echo "Error - didn't find backup file for Release!"
exit 1
fi
echo "Restoring backups of datafiles"
-rm -f $REPO/dists/precise/main/binary-amd64/Packages $REPO/dists/precise/main/binary-amd64/Packages.gz
-rm -f $REPO/dists/precise/Release $DEST/etc/puppet/manifests/site.pp
-mv $REPO/dists/precise/main/binary-amd64/Packages.backup $REPO/dists/precise/main/binary-amd64/Packages
-mv $REPO/dists/precise/main/binary-amd64/Packages.gz.backup $REPO/dists/precise/main/binary-amd64/Packages.gz
-mv $REPO/dists/precise/Release.backup $REPO/dists/precise/Release
+rm -f $REPO/dists/trusty/main/binary-amd64/Packages $REPO/dists/trusty/main/binary-amd64/Packages.gz
+rm -f $REPO/dists/trusty/Release $DEST/etc/puppet/manifests/site.pp
+mv $REPO/dists/trusty/main/binary-amd64/Packages.backup $REPO/dists/trusty/main/binary-amd64/Packages
+mv $REPO/dists/trusty/main/binary-amd64/Packages.gz.backup $REPO/dists/trusty/main/binary-amd64/Packages.gz
+mv $REPO/dists/trusty/Release.backup $REPO/dists/trusty/Release
mv $DEST/etc/puppet/manifests/site.pp.backup $DEST/etc/puppet/manifests/site.pp
# http://www.apache.org/licenses/LICENSE-2.0
##############################################################################
-SUBDIRS := debootstrap novnc neutron-common
+SUBDIRS :=
SUBCLEAN = $(addsuffix .clean,$(SUBDIRS))
.PHONY: $(SUBDIRS) $(SUBCLEAN) clean
+++ /dev/null
-##############################################################################
-# Copyright (c) 2015 Ericsson AB and others.
-# stefan.k.berg@ericsson.com
-# jonas.bjurel@ericsson.com
-# 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
-##############################################################################
-
-TOP := $(shell pwd)
-
-.PHONY: all
-all:
-
-.PHONY: clean
-clean:
- @rm -rf udebPackage
- @rm -rf *.udeb
- @rm -rf patch-replacements
- @rm -rf .udebpackage
-
-.PHONY: release
-release:
- ../tools/udeb_unpack debootstrap-udeb_1.0.4*.udeb $(ORIGISO)
- patch -s -p0 < debootstrap.patch
- ../tools/udeb_pack $(REVSTATE)
- @cp *.udeb $(UDEB_DEST)
+++ /dev/null
---- udebPackage/usr/share/debootstrap/scripts/gutsy.orig 2014-11-10 18:21:37.000000000 +0000
-+++ udebPackage/usr/share/debootstrap/scripts/gutsy 2015-04-15 09:28:44.290437000 +0000
-@@ -112,7 +112,8 @@
-
- p; progress $baseprog $bases INSTCORE "Installing core packages" #2
- ln -sf mawk "$TARGET/usr/bin/awk"
-- x_core_install base-files base-passwd
-+ x_core_install base-passwd
-+ x_core_install base-files
- p; progress $baseprog $bases INSTCORE "Installing core packages" #3
- x_core_install dpkg
-
+++ /dev/null
-TOP := $(shell pwd)
-
-.PHONY: all
-all:
-
-.PHONY: clean
-clean:
- @rm -rf package
- @rm -rf *.deb
- @rm -rf patch-replacements
- @rm -rf .package
-
-.PHONY: release
-release:
- ../tools/deb_unpack neutron-common_*.deb $(ORIGISO)
- patch -s -p0 < quota.patch
- ../tools/deb_pack $(REVSTATE)
- @cp *.deb ../release/packages
- @cat patch-replacements >> ../release/patch-replacements
+++ /dev/null
-*** package/etc/neutron/neutron.conf.orig 2015-05-25 15:50:09.933131041 +0200
---- package/etc/neutron/neutron.conf 2015-05-25 15:55:07.859210010 +0200
-***************
-*** 502,518 ****
- # default_quota = -1
-
- # Number of networks allowed per tenant. A negative value means unlimited.
-! # quota_network = 10
-
- # Number of subnets allowed per tenant. A negative value means unlimited.
-! # quota_subnet = 10
-
- # Number of ports allowed per tenant. A negative value means unlimited.
- # quota_port = 50
-
- # Number of security groups allowed per tenant. A negative value means
- # unlimited.
-! # quota_security_group = 10
-
- # Number of security group rules allowed per tenant. A negative value means
- # unlimited.
---- 502,521 ----
- # default_quota = -1
-
- # Number of networks allowed per tenant. A negative value means unlimited.
-! # This quota modified by OPNFV: 10 -> 50
-! quota_network = 50
-
- # Number of subnets allowed per tenant. A negative value means unlimited.
-! # This quota modified by OPNFV: 10 -> 50
-! quota_subnet = 50
-
- # Number of ports allowed per tenant. A negative value means unlimited.
- # quota_port = 50
-
- # Number of security groups allowed per tenant. A negative value means
- # unlimited.
-! # This quota modified by OPNFV: 10 -> 50
-! quota_security_group = 50
-
- # Number of security group rules allowed per tenant. A negative value means
- # unlimited.
-***************
-*** 538,547 ****
- # quota_health_monitor = -1
-
- # Number of routers allowed per tenant. A negative value means unlimited.
-! # quota_router = 10
-
- # Number of floating IPs allowed per tenant. A negative value means unlimited.
-! # quota_floatingip = 50
-
- # Number of firewalls allowed per tenant. A negative value means unlimited.
- # quota_firewall = 1
---- 541,552 ----
- # quota_health_monitor = -1
-
- # Number of routers allowed per tenant. A negative value means unlimited.
-! # This quota modified by OPNFV: 10 -> 50
-! quota_router = 50
-
- # Number of floating IPs allowed per tenant. A negative value means unlimited.
-! # This quota modified by OPNFV: 50 -> 100
-! quota_floatingip = 100
-
- # Number of firewalls allowed per tenant. A negative value means unlimited.
- # quota_firewall = 1
+++ /dev/null
-# This is a temporary patch which add missing files
-# inside novnc ubuntu package.
-# Related bug: https://bugs.launchpad.net/fuel/+bug/1433894
-TOP := $(shell pwd)
-
-.PHONY: all
-all:
-
-.PHONY: clean
-clean:
- @rm -rf package
- @rm -rf *.deb
- @rm -rf patch-replacements
- @rm -rf .package
-
-.PHONY: release
-release:
- ../tools/deb_unpack novnc_0.5.1*.deb $(ORIGISO)
- ./fix-missing.sh
- ../tools/deb_pack $(REVSTATE)
- @cp *.deb ../release/packages
- @cat patch-replacements >> ../release/patch-replacements
+++ /dev/null
-#!/bin/bash
-
-MISSING_FILES="keyboard.js keysymdef.js keysym.js"
-NOVNC_SOURCE="http://raw.githubusercontent.com/kanaka/noVNC/v0.5.1/include"
-
-for file in $MISSING_FILES
-do
- wget -P package/usr/share/novnc/include/ "$NOVNC_SOURCE/$file"
-done
# END of usage description
############################################################################
+############################################################################
+# Begin of string xor function
+#
+function xor()
+{
+ local res=(`echo "$1" | sed "s/../0x& /g"`)
+ shift 1
+ while [[ "$1" ]]; do
+ local one=(`echo "$1" | sed "s/../0x& /g"`)
+ local count1=${#res[@]}
+ if [ $count1 -lt ${#one[@]} ]
+ then
+ count1=${#one[@]}
+ fi
+ for (( i = 0; i < $count1; i++ ))
+ do
+ res[$i]=$((${one[$i]:-0} ^ ${res[$i]:-0}))
+ done
+ shift 1
+ done
+ printf "%02x" "${res[@]}"
+}
+#
+# END of string xor function
+############################################################################
+
############################################################################
# BEGIN of variables to customize
#
BUILD_SPEC="${BUILD_BASE}/config.mk"
CACHE_DIR="cache"
LOCAL_CACHE_ARCH_NAME="fuel-cache"
-REMOTE_CACHE_ARCH_NAME="fuel_cache-$(md5sum ${BUILD_SPEC}| cut -f1 -d " ")"
+
REMOTE_ACCESS_METHD=curl
INCLUDE_DIR=../include
#
BUILD_LOG=
BUILD_VERSION=
MAKE_ARGS=
+FUEL_GIT_SRC="$(make -f ../build/config.mk get-fuel-repo | cut -d " " -f1)"
+FUEL_GIT_BRANCH="$(make -f ../build/config.mk get-fuel-repo | cut -d " " -f2)"
+CACHE_MD5=$(md5sum ../build/cache.mk | cut -f1 -d " ")
+CONFIG_MD5=$(md5sum ../build/config.mk | cut -f1 -d " ")
+FUEL_COMMIT_ID=$(git ls-remote $FUEL_GIT_SRC -t $FUEL_GIT_BRANCH | cut -d $'\t' -f1)
+REMOTE_CACHE_ARCH_HASH_TMP="$(xor $CACHE_MD5 $CONFIG_MD5)"
+REMOTE_CACHE_ARCH_HASH="$(xor $REMOTE_CACHE_ARCH_HASH_TMP $FUEL_COMMIT_ID)"
+REMOTE_CACHE_ARCH_NAME="fuel_cache-$REMOTE_CACHE_ARCH_HASH"
#
# END of script assigned variables
############################################################################
while getopts "s:c:v:f:l:r:RtTh" OPTION
do
case $OPTION in
- h)
- usage
- rc=0
- exit $rc
- ;;
-
- s)
- BUILD_SPEC=${OPTARG}
- ;;
-
- c)
- BUILD_CACHE_URI=${OPTARG}
- ;;
-
- l)
- BUILD_LOG=${OPTARG}
- ;;
-
- v)
- BUILD_VERSION=${OPTARG}
- ;;
-
- f)
- BUILD_FLAGS=${OPTARG}
- ;;
-
- r) REMOTE_ACCESS_METHD=${OPTARG}
- ;;
-
- R)
- RECURSIVE=1
- ;;
-
- t)
- INTEGRATION_TEST=1
- ;;
-
- T)
- INTEGRATION_TEST=1
- FULL_INTEGRATION_TEST=1
- ;;
-
- *)
- echo "${OPTION} is not a valid argument"
- rc=100
- exit $rc
- ;;
+ h)
+ usage
+ rc=0
+ exit $rc
+ ;;
+
+ s)
+ BUILD_SPEC=${OPTARG}
+ ;;
+
+ c)
+ BUILD_CACHE_URI=${OPTARG}
+ ;;
+
+ l)
+ BUILD_LOG=${OPTARG}
+ ;;
+
+ v)
+ BUILD_VERSION=${OPTARG}
+ ;;
+
+ f)
+ BUILD_FLAGS=${OPTARG}
+ ;;
+
+ r) REMOTE_ACCESS_METHD=${OPTARG}
+ ;;
+
+ R)
+ RECURSIVE=1
+ ;;
+
+ t)
+ INTEGRATION_TEST=1
+ ;;
+
+ T)
+ INTEGRATION_TEST=1
+ FULL_INTEGRATION_TEST=1
+ ;;
+
+ *)
+ echo "${OPTION} is not a valid argument"
+ rc=100
+ exit $rc
+ ;;
esac
done
for ((i=0; i<${#BUILD_FLAGS};i++)); do
case ${BUILD_FLAGS:$i:1} in
- s)
- rc=0
- exit $rc
- ;;
-
- f)
- rc=1
- exit $rc
- ;;
-
- t)
- UNIT_TEST=1
- ;;
-
- i)
- INTERACTIVE=1
- ;;
-
- P)
- POPULATE_CACHE=1
- ;;
-
- d)
- DETACH=1
- echo "Detach is not yet supported - exiting ...."
- rc=100
- exit $rc
- ;;
-
- D)
- DEBUG=1
- ;;
-
- *)
- echo "${BUILD_FLAGS:$i:1} is not a valid build flag - exiting ...."
- rc=100
- exit $rc
- ;;
+ s)
+ rc=0
+ exit $rc
+ ;;
+
+ f)
+ rc=1
+ exit $rc
+ ;;
+
+ t)
+ UNIT_TEST=1
+ ;;
+
+ i)
+ INTERACTIVE=1
+ ;;
+
+ P)
+ POPULATE_CACHE=1
+ ;;
+
+ d)
+ DETACH=1
+ echo "Detach is not yet supported - exiting ...."
+ rc=100
+ exit $rc
+ ;;
+
+ D)
+ DEBUG=1
+ ;;
+
+ *)
+ echo "${BUILD_FLAGS:$i:1} is not a valid build flag - exiting ...."
+ rc=100
+ exit $rc
+ ;;
esac
done
if [ ! -z ${BUILD_LOG} ]; then
if [[ ${RECURSIVE} -ne 1 ]]; then
- set +e
- eval $0 -R $@ > ${BUILD_LOG} 2>&1
- rc=$?
- set -e
- if [ $rc -ne 0]; then
- exit $rc
- fi
+ set +e
+ eval $0 -R $@ > ${BUILD_LOG} 2>&1
+ rc=$?
+ set -e
+ if [ $rc -ne 0]; then
+ exit $rc
+ fi
fi
fi
if [ ! -z ${BUILD_CACHE_URI} ]; then
if [ ${POPULATE_CACHE} -ne 1 ]; then
- rm -rf ${CACHE_TMP}/cache
- mkdir -p ${CACHE_TMP}/cache
- echo "Downloading cach file ${BUILD_CACHE_URI}/${REMOTE_CACHE_ARCH_NAME} ..."
- set +e
- ${REMOTE_ACCESS_METHD} -o ${CACHE_TMP}/cache/${LOCAL_CACHE_ARCH_NAME}.tgz ${BUILD_CACHE_URI}/${REMOTE_CACHE_ARCH_NAME}.tgz
- rc=$?
- set -e
- if [ $rc -ne 0 ]; then
- echo "Remote cache does not exist, or is not accessible - a new cache will be built ..."
- POPULATE_CACHE=1
- else
- echo "Unpacking cache file ..."
- tar -C ${CACHE_TMP}/cache -xvf ${CACHE_TMP}/cache/${LOCAL_CACHE_ARCH_NAME}.tgz
- cp ${CACHE_TMP}/cache/cache/.versions ${BUILD_BASE}/.
- set +e
- make -C ${BUILD_BASE} validate-cache;
- rc=$?
- set -e
-
- if [ $rc -ne 0 ]; then
- echo "Cache invalid - a new cache will be built "
- POPULATE_CACHE=1
- else
- cp -rf ${CACHE_TMP}/cache/cache/. ${BUILD_BASE}
- fi
- rm -rf ${CACHE_TMP}/cache
- fi
+ rm -rf ${CACHE_TMP}/cache
+ mkdir -p ${CACHE_TMP}/cache
+ echo "Downloading cache archive ${BUILD_CACHE_URI}/${REMOTE_CACHE_ARCH_NAME} ..."
+ set +e
+ ${REMOTE_ACCESS_METHD} -o ${CACHE_TMP}/cache/${LOCAL_CACHE_ARCH_NAME}.tgz ${BUILD_CACHE_URI}/${REMOTE_CACHE_ARCH_NAME}.tgz
+ rc=$?
+ set -e
+ if [ $rc -ne 0 ]; then
+ echo "Remote cache does not exist, or is not accessible - a new cache will be built ..."
+ POPULATE_CACHE=1
+ else
+ echo "Unpacking cache archive ..."
+ set +e
+ tar -C ${CACHE_TMP}/cache -xvf ${CACHE_TMP}/cache/${LOCAL_CACHE_ARCH_NAME}.tgz
+ rc=$?
+ set -e
+ if [ $rc -ne 0 ]; then
+ echo "WARNING: The cache seems to be corrupt or has trailing garbage, will try to use brute force"
+ echo "Info about the cache below:"
+ set +e
+ file ${CACHE_TMP}/cache/${LOCAL_CACHE_ARCH_NAME}.tgz
+ tar -C ${CACHE_TMP}/cache -tvf ${CACHE_TMP}/cache/${LOCAL_CACHE_ARCH_NAME}.tgz
+ set -e
+ echo "Current time is: `date`"
+ set +e
+ pushd ${CACHE_TMP}/cache
+ gunzip -dcq ${CACHE_TMP}/cache/${LOCAL_CACHE_ARCH_NAME}.tgz | tar -xvf -
+ rc=$?
+ set -e
+ popd
+ if [ $rc -ne 0 ]; then
+ echo "ERROR: Not able to resolve the cache corruption"
+ POPULATE_CACHE=1
+ else
+ echo "The chache corruption was resolved"
+ cp ${CACHE_TMP}/cache/cache/.versions ${BUILD_BASE}/.
+ set +e
+ make -C ${BUILD_BASE} validate-cache;
+ rc=$?
+ set -e
+ if [ $rc -ne 0 ]; then
+ echo "Cache invalid - a new cache will be built "
+ POPULATE_CACHE=1
+ else
+ echo "Cache is up to date and will be used"
+ cp -rf ${CACHE_TMP}/cache/cache/. ${BUILD_BASE}
+ fi
+ fi
+ else
+ echo "Cache archive is intact"
+ cp ${CACHE_TMP}/cache/cache/.versions ${BUILD_BASE}/.
+ set +e
+ make -C ${BUILD_BASE} validate-cache;
+ rc=$?
+ set -e
+
+ if [ $rc -ne 0 ]; then
+ echo "Cache invalid - a new cache will be built "
+ POPULATE_CACHE=1
+ else
+ echo "Cache is up to date and will be used"
+ cp -rf ${CACHE_TMP}/cache/cache/. ${BUILD_BASE}
+ fi
+ fi
+ rm -rf ${CACHE_TMP}/cache
+ fi
fi
fi
if [ ${POPULATE_CACHE} -eq 1 ]; then
if [ ${DEBUG} -eq 0 ]; then
- set +e
- cd ${BUILD_BASE} && make clean
- rc=$?
- set -e
- if [ $rc -ne 0 ]; then
- echo "Build - make clean failed, exiting ..."
- rc=100
- exit $rc
- fi
+ set +e
+ cd ${BUILD_BASE} && make clean
+ rc=$?
+ set -e
+ if [ $rc -ne 0 ]; then
+ echo "Build - make clean failed, exiting ..."
+ rc=100
+ exit $rc
+ fi
fi
fi
rc=$?
set -e
if [ $rc -gt 0 ]; then
- echo "Build: make all failed, exiting ..."
- rc=200
- exit $rc
+ echo "Build: make all failed, exiting ..."
+ rc=200
+ exit $rc
fi
else
-debug_make
+ debug_make
fi
set +e
make -C ${BUILD_BASE} prepare-cache
if [ $POPULATE_CACHE -eq 1 ]; then
if [ ! -z ${BUILD_CACHE_URI} ]; then
- echo "Building cache ..."
- tar --dereference -C ${BUILD_BASE} -caf ${BUILD_BASE}/${LOCAL_CACHE_ARCH_NAME}.tgz ${CACHE_DIR}
- echo "Uploading cache ${BUILD_CACHE_URI}/${REMOTE_CACHE_ARCH_NAME}"
- ${REMOTE_ACCESS_METHD} -T ${BUILD_BASE}/${LOCAL_CACHE_ARCH_NAME}.tgz ${BUILD_CACHE_URI}/${REMOTE_CACHE_ARCH_NAME}.tgz
- rm ${BUILD_BASE}/${LOCAL_CACHE_ARCH_NAME}.tgz
+ echo "Building cache ..."
+ tar --dereference -C ${BUILD_BASE} -caf ${BUILD_BASE}/${LOCAL_CACHE_ARCH_NAME}.tgz ${CACHE_DIR}
+ set +e
+ tar -C ${CACHE_TMP}/cache -tvf ${BUILD_BASE}/${LOCAL_CACHE_ARCH_NAME}.tgz
+ rc=$?
+ set -e
+ if [ $rc -ne 0 ]; then
+ echo "WARNING the cache archive generated seems to be corrupt, or containing trailing garbage"
+ else
+ echo "The Cache archive build is intact"
+ fi
+ echo "Uploading cache ${BUILD_CACHE_URI}/${REMOTE_CACHE_ARCH_NAME}"
+ ${REMOTE_ACCESS_METHD} -T ${BUILD_BASE}/${LOCAL_CACHE_ARCH_NAME}.tgz ${BUILD_CACHE_URI}/${REMOTE_CACHE_ARCH_NAME}.tgz
+ rm ${BUILD_BASE}/${LOCAL_CACHE_ARCH_NAME}.tgz
fi
fi
echo "Success!!!"
interface_yaml = ('%s/node_%s/interfaces.yaml'
% (self.yaml_config_dir, node_id))
check_file_exists(interface_yaml)
- backup(interface_yaml)
+ backup('%s/node_%s' % (self.yaml_config_dir, node_id))
with io.open(interface_yaml) as stream:
interfaces = yaml.load(stream)
class Deploy(object):
- def __init__(self, dea_file, blade_node_file, plugins_dir,
- no_health_check):
+ def __init__(self, dea_file, blade_node_file, no_health_check):
self.dea = DeploymentEnvironmentAdapter(dea_file)
self.blade_node_file = blade_node_file
- self.plugins_dir = plugins_dir
self.no_health_check = no_health_check
self.macs_per_blade = {}
self.blades = self.dea.get_node_ids()
self.node_roles_dict, self.no_health_check)
dep.deploy()
- def install_plugins(self):
- log('Installing Fuel Plugins')
- if self.plugins_dir and os.path.isdir(self.plugins_dir):
- for f in glob.glob('%s/*.rpm' % self.plugins_dir):
- log('Found plugin %s, installing ...' % f)
- r, c = exec_cmd('fuel plugins --install %s' % f, False)
- if c > 0 and 'does not update installed package' not in r:
- err('Installation of Fuel Plugin %s failed' % f)
-
def deploy(self):
- self.install_plugins()
-
self.get_blade_node_mapping()
self.assign_roles_to_cluster_node_ids()
help='Deployment Environment Adapter: dea.yaml')
parser.add_argument('blade_node_file', action='store',
help='Blade Node mapping: blade_node.yaml')
- parser.add_argument('plugins_dir', nargs='?', action='store',
- help='Plugins directory')
args = parser.parse_args()
check_file_exists(args.dea_file)
check_file_exists(args.blade_node_file)
- return (args.dea_file, args.blade_node_file, args.plugins_dir,
- args.no_health_check)
+ return (args.dea_file, args.blade_node_file, args.no_health_check)
def main():
-
- dea_file, blade_node_file, plugins_dir, no_health_check = parse_arguments()
-
- deploy = Deploy(dea_file, blade_node_file, plugins_dir, no_health_check)
+ dea_file, blade_node_file, no_health_check = parse_arguments()
+ deploy = Deploy(dea_file, blade_node_file, no_health_check)
deploy.deploy()
if __name__ == '__main__':
parse = common.parse
err = common.err
log = common.log
-literal_unicode = common.literal_unicode
-literal_unicode_representer = common.literal_unicode_representer
-yaml.add_representer(literal_unicode, literal_unicode_representer)
-backup = common.backup
class Deployment(object):
self.node_id_roles_dict = node_id_roles_dict
self.no_health_check = no_health_check
- def download_deployment_info(self):
- log('Download deployment info for environment %s' % self.env_id)
- deployment_dir = ('%s/deployment_%s'
- % (self.yaml_config_dir, self.env_id))
- if os.path.exists(deployment_dir):
- shutil.rmtree(deployment_dir)
- exec_cmd('fuel deployment --env %s --download --dir %s'
- % (self.env_id, self.yaml_config_dir))
-
- def upload_deployment_info(self):
- log('Upload deployment info for environment %s' % self.env_id)
- exec_cmd('fuel --env %s deployment --upload --dir %s'
- % (self.env_id, self.yaml_config_dir))
-
- def __update_opnfv_dict(self, opnfv_dict, key, node_type, val):
- if val:
- if key not in opnfv_dict:
- opnfv_dict.update({key: {}})
- opnfv_dict[key].update({node_type: val})
-
- def config_opnfv(self):
- log('Configure OPNFV settings on environment %s' % self.env_id)
- self.download_deployment_info()
-
- opnfv = {'opnfv': {}}
- dns_list = self.dea.get_dns_list()
- host_list = self.dea.get_hosts()
-
- ntp_list_for_controller = ''
- for ntp in self.dea.get_ntp_list():
- ntp_list_for_controller += 'server %s\n' % ntp
-
- ntp_list_for_compute = ''
- for controller_file in glob.glob(
- '%s/deployment_%s/*controller*.yaml'
- % (self.yaml_config_dir, self.env_id)):
- with io.open(controller_file) as stream:
- controller = yaml.load(stream)
- ntp_list_for_compute += 'server %s\n' % controller['fqdn']
-
- self.__update_opnfv_dict(
- opnfv['opnfv'], 'dns', 'controller', dns_list[:])
- self.__update_opnfv_dict(
- opnfv['opnfv'], 'dns', 'compute', dns_list[:])
- self.__update_opnfv_dict(
- opnfv['opnfv'], 'ntp', 'controller',
- literal_unicode(ntp_list_for_controller))
- self.__update_opnfv_dict(
- opnfv['opnfv'], 'ntp', 'compute',
- literal_unicode(ntp_list_for_compute))
-
- if host_list:
- opnfv['opnfv'].update({'hosts': host_list})
-
- for node_file in glob.glob('%s/deployment_%s/*.yaml'
- % (self.yaml_config_dir, self.env_id)):
- with io.open(node_file) as stream:
- node = yaml.load(stream)
- node.update(opnfv)
- with io.open(node_file, 'w') as stream:
- yaml.dump(node, stream, default_flow_style=False)
-
- self.upload_deployment_info()
-
def run_deploy(self):
WAIT_LOOP = 180
SLEEP_TIME = 60
err('Healthcheck failed!')
def deploy(self):
- self.config_opnfv()
self.run_deploy()
self.verify_node_status()
if not self.no_health_check:
import logging
import argparse
import shutil
+import stat
import errno
N = {'id': 0, 'status': 1, 'name': 2, 'cluster': 3, 'ip': 4, 'mac': 5,
'changes': 5, 'pending_release_id': 6}
R = {'id': 0, 'name': 1, 'state': 2, 'operating_system': 3, 'version': 4}
RO = {'name': 0, 'conflicts': 1}
-
+CWD = os.getcwd()
LOG = logging.getLogger(__name__)
LOG.setLevel(logging.DEBUG)
formatter = logging.Formatter('%(message)s')
out_handler = logging.FileHandler('autodeploy.log', mode='w')
out_handler.setFormatter(formatter)
LOG.addHandler(out_handler)
-
+os.chmod('autodeploy.log', stat.S_IRWXU | stat.S_IRWXG | stat.S_IRWXO)
def exec_cmd(cmd, check=True):
process = subprocess.Popen(cmd,
def check_file_exists(file_path):
+ if not os.path.dirname(file_path):
+ file_path = '%s/%s' % (CWD, file_path)
if not os.path.isfile(file_path):
err('ERROR: File %s not found\n' % file_path)
def check_dir_exists(dir_path):
+ if not os.path.dirname(dir_path):
+ dir_path = '%s/%s' % (CWD, dir_path)
if not os.path.isdir(dir_path):
err('ERROR: Directory %s not found\n' % dir_path)
def delete(f):
if os.path.isfile(f):
log('Deleting file %s' % f)
- os.remove(file)
+ os.remove(f)
elif os.path.isdir(f):
log('Deleting directory %s' % f)
shutil.rmtree(f)
sys.exit(2)
-class literal_unicode(unicode):
- pass
-
-
-def literal_unicode_representer(dumper, data):
- return dumper.represent_scalar(u'tag:yaml.org,2002:str', data, style='|')
-
-
def backup(path):
src = path
dst = path + '_orig'
settings = self.get_property('settings')
ntp_list = settings['editable']['external_ntp']['ntp_list']['value']
return [n.strip() for n in ntp_list.split(',')]
-
- def get_hosts(self):
- opnfv = self.get_property('opnfv')
- hosts_list = []
- for host in opnfv['hosts']:
- if host['address'] and host['fqdn']:
- hosts_list.append(host)
- return hosts_list
fuel = InstallFuelMaster(self.dea_file, self.dha_file,
self.fuel_conf['ip'], self.fuel_username,
self.fuel_password, self.fuel_node_id,
- self.iso_file, WORK_DIR)
+ self.iso_file, WORK_DIR,
+ self.fuel_plugins_dir)
fuel.install()
def patch_iso(self, new_iso):
def deploy_env(self):
dep = CloudDeploy(self.dea, self.dha, self.fuel_conf['ip'],
self.fuel_username, self.fuel_password,
- self.dea_file, self.fuel_plugins_dir, WORK_DIR,
- self.no_health_check)
+ self.dea_file, WORK_DIR, self.no_health_check)
return dep.deploy()
def setup_execution_environment(self):
parser.add_argument('-c', dest='cleanup', action='store_true',
default=False,
help='Cleanup after deploy')
- parser.add_argument('-iso', dest='iso_file', action='store', nargs='?',
- default='%s/OPNFV.iso' % CWD,
- help='ISO File [default: OPNFV.iso]')
- parser.add_argument('-dea', dest='dea_file', action='store', nargs='?',
- default='%s/dea.yaml' % CWD,
- help='Deployment Environment Adapter: dea.yaml')
- parser.add_argument('-dha', dest='dha_file', action='store', nargs='?',
- default='%s/dha.yaml' % CWD,
- help='Deployment Hardware Adapter: dha.yaml')
+ if {'-iso', '-dea', '-dha', '-h'}.intersection(sys.argv):
+ parser.add_argument('-iso', dest='iso_file', action='store', nargs='?',
+ default='%s/OPNFV.iso' % CWD,
+ help='ISO File [default: OPNFV.iso]')
+ parser.add_argument('-dea', dest='dea_file', action='store', nargs='?',
+ default='%s/dea.yaml' % CWD,
+ help='Deployment Environment Adapter: dea.yaml')
+ parser.add_argument('-dha', dest='dha_file', action='store', nargs='?',
+ default='%s/dha.yaml' % CWD,
+ help='Deployment Hardware Adapter: dha.yaml')
+ else:
+ parser.add_argument('iso_file', action='store', nargs='?',
+ default='%s/OPNFV.iso' % CWD,
+ help='ISO File [default: OPNFV.iso]')
+ parser.add_argument('dea_file', action='store', nargs='?',
+ default='%s/dea.yaml' % CWD,
+ help='Deployment Environment Adapter: dea.yaml')
+ parser.add_argument('dha_file', action='store', nargs='?',
+ default='%s/dha.yaml' % CWD,
+ help='Deployment Hardware Adapter: dha.yaml')
parser.add_argument('-s', dest='storage_dir', action='store',
default='%s/images' % CWD,
help='Storage Directory [default: images]')
CLOUD_DEPLOY_FILE = 'deploy.py'
BLADE_RESTART_TIMES = 3
-PLUGINS_DIR = '~/plugins'
class CloudDeploy(object):
def __init__(self, dea, dha, fuel_ip, fuel_username, fuel_password,
- dea_file, fuel_plugins_dir, work_dir, no_health_check):
+ dea_file, work_dir, no_health_check):
self.dea = dea
self.dha = dha
self.fuel_ip = fuel_ip
self.fuel_username = fuel_username
self.fuel_password = fuel_password
self.dea_file = dea_file
- self.fuel_plugins_dir = fuel_plugins_dir
self.work_dir = work_dir
self.no_health_check = no_health_check
self.file_dir = os.path.dirname(os.path.realpath(__file__))
for f in glob.glob('%s/cloud/*' % self.file_dir):
s.scp_put(f, self.work_dir)
- def upload_plugin_files(self):
- with self.ssh as s:
- s.exec_cmd('rm -rf %s' % PLUGINS_DIR, False)
- s.exec_cmd('mkdir %s' % PLUGINS_DIR)
- if self.fuel_plugins_dir:
- for f in glob.glob('%s/*.rpm' % self.fuel_plugins_dir):
- s.scp_put(f, PLUGINS_DIR)
-
def power_off_nodes(self):
for node_id in self.node_ids:
self.dha.node_power_off(node_id)
blade_node_file = '%s/%s' % (
self.work_dir, os.path.basename(self.blade_node_file))
with self.ssh as s:
- status = s.run('python %s %s %s %s %s'
- % (('-nh' if self.no_health_check else ''),
- deploy_app, dea_file, blade_node_file,
- PLUGINS_DIR))
+ status = s.run(
+ 'python %s %s %s %s' % (
+ deploy_app, ('-nh' if self.no_health_check else ''),
+ dea_file, blade_node_file))
return status
def check_supported_release(self):
self.upload_cloud_deployment_files()
- self.upload_plugin_files()
-
return self.run_cloud_deploy(CLOUD_DEPLOY_FILE)
import common
import time
import os
+import glob
from ssh_client import SSHClient
from dha_adapters.libvirt_adapter import LibvirtAdapter
TRANSPLANT_FUEL_SETTINGS = 'transplant_fuel_settings.py'
BOOTSTRAP_ADMIN = '/usr/local/sbin/bootstrap_admin_node'
FUEL_CLIENT_CONFIG = '/etc/fuel/client/config.yaml'
+PLUGINS_DIR = '~/plugins'
class InstallFuelMaster(object):
def __init__(self, dea_file, dha_file, fuel_ip, fuel_username,
- fuel_password, fuel_node_id, iso_file, work_dir):
+ fuel_password, fuel_node_id, iso_file, work_dir,
+ fuel_plugins_dir):
self.dea_file = dea_file
self.dha = LibvirtAdapter(dha_file)
self.fuel_ip = fuel_ip
self.iso_file = iso_file
self.iso_dir = os.path.dirname(self.iso_file)
self.work_dir = work_dir
+ self.fuel_plugins_dir = fuel_plugins_dir
self.file_dir = os.path.dirname(os.path.realpath(__file__))
self.ssh = SSHClient(self.fuel_ip, self.fuel_username,
self.fuel_password)
self.dha.node_set_boot_order(self.fuel_node_id, ['disk', 'iso'])
- self.proceed_with_installation()
+ try:
+ self.proceed_with_installation()
+ except Exception as e:
+ self.post_install_cleanup()
+ err(e)
def proceed_with_installation(self):
log('Eject ISO')
self.delete_deprecated_fuel_client_config_from_fuel_6_1()
+ self.upload_plugin_files()
+
+ self.install_plugins()
+
self.post_install_cleanup()
log('Fuel Master installed successfully !')
+ def upload_plugin_files(self):
+ with self.ssh as s:
+ s.exec_cmd('mkdir %s' % PLUGINS_DIR)
+ if self.fuel_plugins_dir:
+ for f in glob.glob('%s/*.rpm' % self.fuel_plugins_dir):
+ s.scp_put(f, PLUGINS_DIR)
+
+ def install_plugins(self):
+ log('Installing Fuel Plugins')
+ with self.ssh as s:
+ r = s.exec_cmd('find %s -type f -name \'*.rpm\'' % PLUGINS_DIR)
+ for f in r.splitlines():
+ log('Found plugin %s, installing ...' % f)
+ r, e = s.exec_cmd('fuel plugins --install %s' % f, False)
+ if e and 'does not update installed package' not in r:
+ raise Exception('Installation of Fuel Plugin %s '
+ 'failed: %s' % (f, e))
+
def wait_for_node_up(self):
WAIT_LOOP = 60
SLEEP_TIME = 10
self.ssh.close()
if not success:
- err('Could not SSH into Fuel VM %s' % self.fuel_ip)
+ raise Exception('Could not SSH into Fuel VM %s' % self.fuel_ip)
def wait_until_fuel_menu_up(self):
WAIT_LOOP = 60
else:
break
if not fuel_menu_pid:
- err('Could not find the Fuel Menu Process ID')
+ raise Exception('Could not find the Fuel Menu Process ID')
return fuel_menu_pid
def get_fuel_menu_pid(self, printout, search):
- fuel_menu_pid = None
for line in printout.splitlines():
- if search in line:
- fuel_menu_pid = clean(line)[1]
- break
- return fuel_menu_pid
+ if line.endswith(search):
+ return clean(line)[1]
def ssh_exec_cmd(self, cmd, check=True):
with self.ssh:
time.sleep(SLEEP_TIME)
if not install_completed:
- self.post_install_cleanup()
- err('Fuel installation did not complete')
+ raise Exception('Fuel installation did not complete')
def post_install_cleanup(self):
log('Eject ISO file %s' % self.iso_file)
parse = common.parse
err = common.err
log = common.log
-delete_file = common.delete_file
+delete = common.delete
commafy = common.commafy
DEA_1 = '''
tr_name = None
with open(node_file[0]) as f:
node_config = yaml.load(f)
- transformation = node_config['network_scheme']['transformations']
+ transformation = {'transformations':
+ node_config['network_scheme']['transformations']}
if transformations:
tr_name = self.check_dict_exists(transformations, transformation)
if not tr_name:
self.write_yaml(self.dha_file, {'nodes': dha_nodes}, False)
self.write_yaml(self.dea_file, {'nodes': dea_nodes})
- self.write_yaml(self.dea_file, {'interfaces': interfaces})
- self.write_yaml(self.dea_file, {'transformations': transformations})
+ self.write_yaml(self.dea_file, interfaces)
+ self.write_yaml(self.dea_file, transformations)
self.reap_fuel_node_info()
self.write_yaml(self.dha_file, {'disks': DISKS})
self.write_yaml(self.dha_file, dha_nodes)
def reap_environment_info(self):
- self.write_yaml(self.dea_file,
- {'environment_name': self.env[E['name']]})
- self.write_yaml(self.dea_file,
- {'environment_mode': self.env[E['mode']]})
+ network_file = ('%s/network_%s.yaml'
+ % (self.temp_dir, self.env_id))
+ network = self.read_yaml(network_file)
+ env = {'environment':
+ {'name': self.env[E['name']],
+ 'mode': self.env[E['mode']],
+ 'net_segment_type':
+ network['networking_parameters']['segmentation_type']}}
+ self.write_yaml(self.dea_file, env)
wanted_release = None
rel_list = parse(exec_cmd('fuel release'))
for rel in rel_list:
def reap_fuel_settings(self):
data = self.read_yaml('/etc/fuel/astute.yaml')
fuel = {}
- del(data['ADMIN_NETWORK']['mac'])
- del(data['ADMIN_NETWORK']['interface'])
+ del data['ADMIN_NETWORK']['mac']
+ del data['ADMIN_NETWORK']['interface']
for key in ['ADMIN_NETWORK', 'HOSTNAME', 'DNS_DOMAIN', 'DNS_SEARCH',
'DNS_UPSTREAM', 'NTP1', 'NTP2', 'NTP3', 'FUEL_ACCESS']:
fuel[key] = data[key]
+ for key in fuel['ADMIN_NETWORK'].keys():
+ if key not in ['ipaddress', 'netmask',
+ 'dhcp_pool_start', 'dhcp_pool_end']:
+ del fuel['ADMIN_NETWORK'][key]
self.write_yaml(self.dea_file, {'fuel': fuel})
def reap_network_settings(self):
settings = self.read_yaml(settings_file)
self.write_yaml(self.dea_file, {'settings': settings})
- def get_opnfv_astute(self, role):
- node_files = glob.glob('%s/deployment_%s/*%s*.yaml'
- % (self.temp_dir, self.env_id, role))
- node_config = self.read_yaml(node_files[0])
- return node_config['opnfv'] if 'opnfv' in node_config else {}
-
- def reap_opnfv_astute(self):
- controller_opnfv_astute = self.get_opnfv_astute('controller')
- compute_opnfv_astute = self.get_opnfv_astute('compute')
- opnfv = {}
- opnfv['opnfv'] = {
- 'controller': controller_opnfv_astute,
- 'compute': compute_opnfv_astute}
- self.write_yaml(self.dea_file, opnfv)
-
def get_interface(self, real_node_id):
exec_cmd('fuel node --node-id %s --network --download --dir %s'
% (real_node_id, self.temp_dir))
return data
def intro(self):
- delete_file(self.dea_file)
- delete_file(self.dha_file)
+ delete(self.dea_file)
+ delete(self.dha_file)
self.temp_dir = exec_cmd('mktemp -d')
date = time.strftime('%c')
self.write(self.dea_file,
self.reap_environment_info()
self.reap_nodes_interfaces_transformations()
self.reap_fuel_settings()
- self.reap_opnfv_astute()
self.reap_network_settings()
self.reap_settings()
self.finale()
# DEA API version supported
version:
created:
-comment: Test environment Ericsson Montreal
+comment: Config for Ericsson Montreal Lab - HA deployment with Ceph and Opendaylight
environment:
- name: opnfv_virt
+ name: opnfv
mode: ha
net_segment_type: gre
wanted_release: Juno on Ubuntu 14.04.1
interfaces: interfaces_1
transformations: transformations_2
role: ceph-osd,compute
-opnfv:
- hosts:
- - name:
- address:
- fqdn:
fuel:
ADMIN_NETWORK:
ipaddress: 10.40.0.2
- netmask: 255.255.255.0
+ netmask: 255.255.0.0
dhcp_pool_start: 10.40.0.3
dhcp_pool_end: 10.40.0.254
DNS_UPSTREAM: 10.118.32.193
bridge: br-mesh
name: eth2.20
network:
+ management_vip: 192.168.0.2
+ management_vrouter_vip: 192.168.0.3
networking_parameters:
base_mac: fa:16:3e:00:00:00
dns_nameservers:
- - 10.118.34.220
- 10.118.34.225
meta:
- cidr: 10.118.34.192/24
+ cidr: 172.16.0.0/24
configurable: true
floating_range_var: floating_ranges
ip_range:
- - 10.118.34.220
- - 10.118.34.225
+ - 172.16.0.2
+ - 172.16.0.126
map_priority: 1
name: public
notation: ip_ranges
vlan_start: null
name: public
vlan_start: null
+ - cidr: 192.168.2.0/24
+ gateway: null
+ ip_ranges:
+ - - 192.168.2.2
+ - 192.168.2.254
+ meta:
+ assign_vip: 192.168.2.0/24
+ configurable: true
+ map_priority: 2
+ name: private
+ notation: cidr
+ render_addr_mask: private
+ render_type: cidr
+ seg_type: gre
+ use_gateway: false
+ vlan_start: 103
+ name: private
+ vlan_start: 20
- cidr: 192.168.0.0/24
gateway: null
ip_ranges:
vips:
- haproxy
- vrouter
- vlan_start: 320
+ vlan_start: 101
name: management
vlan_start: 320
- cidr: 192.168.1.0/24
gateway: null
ip_ranges:
- - - 192.168.1.1
+ - - 192.168.1.2
- 192.168.1.254
meta:
cidr: 192.168.1.0/24
render_addr_mask: storage
render_type: cidr
use_gateway: false
- vlan_start: 220
+ vlan_start: 102
name: storage
vlan_start: 220
- - cidr: 192.168.2.0/24
- gateway: null
- ip_ranges:
- - - 192.168.2.1
- - 192.168.2.254
- meta:
- assign_vip: 192.168.2.0/24
- configurable: true
- map_priority: 2
- name: private
- notation: cidr
- render_addr_mask: private
- render_type: cidr
- seg_type: gre
- use_gateway: false
- vlan_start: 20
- name: private
- vlan_start: 20
- - cidr: 10.40.0.0/24
+ - cidr: 10.40.0.0/16
gateway: 10.40.0.2
ip_ranges:
- - 10.40.0.3
- - 10.40.255.254
+ - 10.40.0.254
meta:
configurable: false
map_priority: 0
use_gateway: true
name: fuelweb_admin
vlan_start: null
+ public_vip: 10.118.34.220
+ public_vrouter_vip: 10.118.34.221
settings:
editable:
access:
# DHA API version supported
version:
created:
-comment: Test environment Ericsson Montreal
+comment: Config for Ericsson Montreal Lab
# Adapter to use for this definition
adapter: hp
# DEA API version supported
version:
created:
-comment: Config for LF POD1 - HA deployment with Ceph
+comment: Config for LF POD1 - HA deployment with Ceph and Opendaylight
environment:
- name: opnfv_virt
+ name: opnfv
mode: ha
net_segment_type: gre
wanted_release: Juno on Ubuntu 14.04.1
interfaces: interfaces_1
transformations: transformations_2
role: ceph-osd,compute
-opnfv:
- hosts:
- - name:
- address:
- fqdn:
fuel:
ADMIN_NETWORK:
ipaddress: 10.20.0.2
bridge: br-mesh
name: eth1.302
network:
+ management_vip: 192.168.0.2
+ management_vrouter_vip: 192.168.0.3
networking_parameters:
base_mac: fa:16:3e:00:00:00
dns_nameservers:
- 8.8.4.4
- 8.8.8.8
floating_ranges:
- - - 172.30.9.80
- - 172.30.9.89
+ - - 172.30.9.160
+ - 172.30.9.254
gre_id_range:
- 2
- 65535
- cidr: 172.30.9.0/24
gateway: 172.30.9.1
ip_ranges:
- - - 172.30.9.70
- - 172.30.9.79
+ - - 172.30.9.64
+ - 172.30.9.159
meta:
- cidr: 172.30.9.0/24
+ cidr: 172.16.0.0/24
configurable: true
floating_range_var: floating_ranges
ip_range:
- - 172.30.9.70
- - 172.30.9.79
+ - 172.16.0.2
+ - 172.16.0.126
map_priority: 1
name: public
notation: ip_ranges
vlan_start: null
name: public
vlan_start: null
+ - cidr: 192.168.2.0/24
+ gateway: null
+ ip_ranges:
+ - - 192.168.2.2
+ - 192.168.2.254
+ meta:
+ assign_vip: 192.168.2.0/24
+ configurable: true
+ map_priority: 2
+ name: private
+ notation: cidr
+ render_addr_mask: private
+ render_type: cidr
+ seg_type: gre
+ use_gateway: false
+ vlan_start: 103
+ name: private
+ vlan_start: 302
- cidr: 192.168.0.0/24
gateway: null
ip_ranges:
- - - 192.168.0.1
+ - - 192.168.0.2
- 192.168.0.254
meta:
cidr: 192.168.0.0/24
vips:
- haproxy
- vrouter
- vlan_start: 300
+ vlan_start: 101
name: management
vlan_start: 300
- cidr: 192.168.1.0/24
gateway: null
ip_ranges:
- - - 192.168.1.1
+ - - 192.168.1.2
- 192.168.1.254
meta:
cidr: 192.168.1.0/24
render_addr_mask: storage
render_type: cidr
use_gateway: false
- vlan_start: 301
+ vlan_start: 102
name: storage
vlan_start: 301
- - cidr: 192.168.2.0/24
- gateway: null
- ip_ranges:
- - - 192.168.2.1
- - 192.168.2.254
- meta:
- assign_vip: 192.168.2.0/24
- configurable: true
- map_priority: 2
- name: private
- notation: cidr
- render_addr_mask: private
- render_type: cidr
- seg_type: gre
- use_gateway: false
- vlan_start: 302
- name: private
- vlan_start: 302
- - cidr: 10.20.0.0/24
+ - cidr: 10.20.0.0/16
gateway: 10.20.0.2
ip_ranges:
- - 10.20.0.3
- - 10.20.255.254
+ - 10.20.0.254
meta:
configurable: false
map_priority: 0
use_gateway: true
name: fuelweb_admin
vlan_start: null
+ public_vip: 172.30.9.64
+ public_vrouter_vip: 172.30.9.65
settings:
editable:
access:
--- /dev/null
+title: Deployment Environment Adapter (DEA)
+# DEA API version supported
+version:
+created:
+comment: Config for LF POD2 - HA deployment with Ceph and Opendaylight
+environment:
+ name: opnfv
+ mode: ha
+ net_segment_type: gre
+wanted_release: Juno on Ubuntu 14.04.1
+nodes:
+- id: 1
+ interfaces: interfaces_1
+ transformations: transformations_1
+ role: ceph-osd,controller
+- id: 2
+ interfaces: interfaces_1
+ transformations: transformations_1
+ role: ceph-osd,controller
+- id: 3
+ interfaces: interfaces_1
+ transformations: transformations_1
+ role: ceph-osd,controller
+- id: 4
+ interfaces: interfaces_1
+ transformations: transformations_2
+ role: ceph-osd,compute
+- id: 5
+ interfaces: interfaces_1
+ transformations: transformations_2
+ role: ceph-osd,compute
+fuel:
+ ADMIN_NETWORK:
+ ipaddress: 10.20.0.2
+ netmask: 255.255.0.0
+ dhcp_pool_start: 10.20.0.3
+ dhcp_pool_end: 10.20.0.254
+ DNS_UPSTREAM: 8.8.8.8
+ DNS_DOMAIN: domain.tld
+ DNS_SEARCH: domain.tld
+ FUEL_ACCESS:
+ user: admin
+ password: admin
+ HOSTNAME: opnfv
+ NTP1: 0.pool.ntp.org
+ NTP2: 1.pool.ntp.org
+ NTP3: 2.pool.ntp.org
+interfaces_1:
+ eth0:
+ - fuelweb_admin
+ - management
+ - storage
+ - private
+ eth2:
+ - public
+transformations_1:
+ transformations:
+ - action: add-br
+ name: br-fw-admin
+ - action: add-br
+ name: br-mgmt
+ - action: add-br
+ name: br-storage
+ - action: add-br
+ name: br-ex
+ - action: add-br
+ name: br-floating
+ provider: ovs
+ - action: add-patch
+ bridges:
+ - br-floating
+ - br-ex
+ mtu: 65000
+ provider: ovs
+ - action: add-br
+ name: br-mesh
+ - action: add-port
+ bridge: br-fw-admin
+ name: eth0
+ - action: add-port
+ bridge: br-mgmt
+ name: eth0.300
+ - action: add-port
+ bridge: br-storage
+ name: eth0.301
+ - action: add-port
+ bridge: br-mesh
+ name: eth0.302
+ - action: add-port
+ bridge: br-ex
+ name: eth2
+transformations_2:
+ transformations:
+ - action: add-br
+ name: br-fw-admin
+ - action: add-br
+ name: br-mgmt
+ - action: add-br
+ name: br-storage
+ - action: add-br
+ name: br-mesh
+ - action: add-port
+ bridge: br-fw-admin
+ name: eth0
+ - action: add-port
+ bridge: br-mgmt
+ name: eth0.300
+ - action: add-port
+ bridge: br-storage
+ name: eth0.301
+ - action: add-port
+ bridge: br-mesh
+ name: eth0.302
+network:
+ management_vip: 192.168.0.2
+ management_vrouter_vip: 192.168.0.3
+ networking_parameters:
+ base_mac: fa:16:3e:00:00:00
+ dns_nameservers:
+ - 8.8.4.4
+ - 8.8.8.8
+ floating_ranges:
+ - - 172.30.10.160
+ - 172.30.10.254
+ gre_id_range:
+ - 2
+ - 65535
+ internal_cidr: 192.168.111.0/24
+ internal_gateway: 192.168.111.1
+ net_l23_provider: ovs
+ segmentation_type: gre
+ vlan_range:
+ - 1000
+ - 1030
+ networks:
+ - cidr: 172.30.10.0/24
+ gateway: 172.30.10.1
+ ip_ranges:
+ - - 172.30.10.64
+ - 172.30.10.159
+ meta:
+ cidr: 172.16.0.0/24
+ configurable: true
+ floating_range_var: floating_ranges
+ ip_range:
+ - 172.16.0.2
+ - 172.16.0.126
+ map_priority: 1
+ name: public
+ notation: ip_ranges
+ render_addr_mask: public
+ render_type: null
+ use_gateway: true
+ vips:
+ - haproxy
+ - vrouter
+ vlan_start: null
+ name: public
+ vlan_start: null
+ - cidr: 192.168.2.0/24
+ gateway: null
+ ip_ranges:
+ - - 192.168.2.2
+ - 192.168.2.254
+ meta:
+ cidr: 192.168.2.0/24
+ configurable: true
+ map_priority: 2
+ name: private
+ notation: cidr
+ render_addr_mask: private
+ render_type: cidr
+ seg_type: gre
+ use_gateway: false
+ vlan_start: 103
+ name: private
+ vlan_start: 302
+ - cidr: 192.168.0.0/24
+ gateway: null
+ ip_ranges:
+ - - 192.168.0.2
+ - 192.168.0.254
+ meta:
+ cidr: 192.168.0.0/24
+ configurable: true
+ map_priority: 2
+ name: management
+ notation: cidr
+ render_addr_mask: internal
+ render_type: cidr
+ use_gateway: false
+ vips:
+ - haproxy
+ - vrouter
+ vlan_start: 101
+ name: management
+ vlan_start: 300
+ - cidr: 192.168.1.0/24
+ gateway: null
+ ip_ranges:
+ - - 192.168.1.2
+ - 192.168.1.254
+ meta:
+ cidr: 192.168.1.0/24
+ configurable: true
+ map_priority: 2
+ name: storage
+ notation: cidr
+ render_addr_mask: storage
+ render_type: cidr
+ use_gateway: false
+ vlan_start: 102
+ name: storage
+ vlan_start: 301
+ - cidr: 10.20.0.0/16
+ gateway: 10.20.0.2
+ ip_ranges:
+ - - 10.20.0.3
+ - 10.20.0.254
+ meta:
+ configurable: false
+ map_priority: 0
+ notation: ip_ranges
+ render_addr_mask: null
+ render_type: null
+ unmovable: true
+ use_gateway: true
+ name: fuelweb_admin
+ vlan_start: null
+ public_vip: 172.30.10.64
+ public_vrouter_vip: 172.30.10.65
+settings:
+ editable:
+ access:
+ email:
+ description: Email address for Administrator
+ label: Email
+ regex:
+ error: Invalid email
+ source: ^\S+@\S+$
+ type: text
+ value: admin@localhost
+ weight: 40
+ metadata:
+ label: Access
+ weight: 10
+ password:
+ description: Password for Administrator
+ label: Password
+ regex:
+ error: Empty password
+ source: \S
+ type: password
+ value: admin
+ weight: 20
+ tenant:
+ description: Tenant (project) name for Administrator
+ label: Tenant
+ regex:
+ error: Invalid tenant name
+ source: ^(?!services$)(?!nova$)(?!glance$)(?!keystone$)(?!neutron$)(?!cinder$)(?!swift$)(?!ceph$)(?![Gg]uest$)(?!.*
+ +.*$).+
+ type: text
+ value: admin
+ weight: 30
+ user:
+ description: Username for Administrator
+ label: Username
+ regex:
+ error: Invalid username
+ source: ^(?!services$)(?!nova$)(?!glance$)(?!keystone$)(?!neutron$)(?!cinder$)(?!swift$)(?!ceph$)(?![Gg]uest$)(?!.*
+ +.*$).+
+ type: text
+ value: admin
+ weight: 10
+ additional_components:
+ ceilometer:
+ description: If selected, Ceilometer component will be installed
+ label: Install Ceilometer
+ type: checkbox
+ value: false
+ weight: 40
+ heat:
+ description: ''
+ label: ''
+ type: hidden
+ value: true
+ weight: 30
+ metadata:
+ label: Additional Components
+ weight: 20
+ mongo:
+ description: If selected, You can use external Mongo DB as ceilometer backend
+ label: Use external Mongo DB
+ restrictions:
+ - settings:additional_components.ceilometer.value == false
+ type: checkbox
+ value: false
+ weight: 40
+ murano:
+ description: If selected, Murano component will be installed
+ label: Install Murano
+ restrictions:
+ - cluster:net_provider != 'neutron'
+ type: checkbox
+ value: false
+ weight: 20
+ sahara:
+ description: If selected, Sahara component will be installed
+ label: Install Sahara
+ type: checkbox
+ value: false
+ weight: 10
+ common:
+ auth_key:
+ description: Public key(s) to include in authorized_keys on deployed nodes
+ label: Public Key
+ type: textarea
+ value: ''
+ weight: 70
+ auto_assign_floating_ip:
+ description: If selected, OpenStack will automatically assign a floating IP
+ to a new instance
+ label: Auto assign floating IP
+ restrictions:
+ - action: hide
+ condition: cluster:net_provider == 'neutron'
+ type: checkbox
+ value: false
+ weight: 40
+ debug:
+ description: Debug logging mode provides more information, but requires more
+ disk space.
+ label: OpenStack debug logging
+ type: checkbox
+ value: false
+ weight: 20
+ libvirt_type:
+ label: Hypervisor type
+ type: radio
+ value: kvm
+ values:
+ - data: kvm
+ description: Choose this type of hypervisor if you run OpenStack on hardware
+ label: KVM
+ - data: qemu
+ description: Choose this type of hypervisor if you run OpenStack on virtual
+ hosts.
+ label: QEMU
+ weight: 30
+ metadata:
+ label: Common
+ weight: 30
+ nova_quota:
+ description: Quotas are used to limit CPU and memory usage for tenants. Enabling
+ quotas will increase load on the Nova database.
+ label: Nova quotas
+ type: checkbox
+ value: false
+ weight: 25
+ puppet_debug:
+ description: Debug puppet logging mode provides more information, but requires
+ more disk space.
+ label: Puppet debug logging
+ type: checkbox
+ value: true
+ weight: 20
+ resume_guests_state_on_host_boot:
+ description: Whether to resume previous guests state when the host reboots.
+ If enabled, this option causes guests assigned to the host to resume their
+ previous state. If the guest was running a restart will be attempted when
+ nova-compute starts. If the guest was not running previously, a restart will
+ not be attempted.
+ label: Resume guests state on host boot
+ type: checkbox
+ value: true
+ weight: 60
+ use_cow_images:
+ description: For most cases you will want qcow format. If it's disabled, raw
+ image format will be used to run VMs. OpenStack with raw format currently
+ does not support snapshotting.
+ label: Use qcow format for images
+ type: checkbox
+ value: true
+ weight: 50
+ use_vcenter:
+ type: hidden
+ value: false
+ weight: 30
+ corosync:
+ group:
+ description: ''
+ label: Group
+ type: text
+ value: 226.94.1.1
+ weight: 10
+ metadata:
+ label: Corosync
+ restrictions:
+ - action: hide
+ condition: 'true'
+ weight: 50
+ port:
+ description: ''
+ label: Port
+ type: text
+ value: '12000'
+ weight: 20
+ verified:
+ description: Set True only if multicast is configured correctly on router.
+ label: Need to pass network verification.
+ type: checkbox
+ value: false
+ weight: 10
+ external_dns:
+ dns_list:
+ description: List of upstream DNS servers, separated by comma
+ label: DNS list
+ regex:
+ error: Invalid IP address list
+ source: ^\*$|^(?:\d|1?\d\d|2[0-4]\d|25[0-5])(?:\.(?:\d|1?\d\d|2[0-4]\d|25[0-5])){3}(?:\s*,\s*(?:\d|1?\d\d|2[0-4]\d|25[0-5])(?:\.(?:\d|1?\d\d|2[0-4]\d|25[0-5])){3})*$
+ type: text
+ value: 8.8.4.4, 8.8.8.8
+ weight: 10
+ metadata:
+ label: Host OS DNS Servers
+ weight: 90
+ external_mongo:
+ hosts_ip:
+ description: IP Addresses of MongoDB. Use comma to split IPs
+ label: MongoDB hosts IP
+ regex:
+ error: Invalid hosts ip sequence
+ source: ^(((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?),)*((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$
+ type: text
+ value: ''
+ weight: 30
+ metadata:
+ label: External MongoDB
+ restrictions:
+ - action: hide
+ condition: settings:additional_components.mongo.value == false
+ weight: 20
+ mongo_db_name:
+ description: Mongo database name
+ label: Database name
+ regex:
+ error: Invalid database name
+ source: ^\w+$
+ type: text
+ value: ceilometer
+ weight: 30
+ mongo_password:
+ description: Mongo database password
+ label: Password
+ regex:
+ error: Password contains spaces
+ source: ^\S*$
+ type: password
+ value: ceilometer
+ weight: 30
+ mongo_replset:
+ description: Name for Mongo replication set
+ label: Replset
+ type: text
+ value: ''
+ weight: 30
+ mongo_user:
+ description: Mongo database username
+ label: Username
+ regex:
+ error: Empty username
+ source: ^\w+$
+ type: text
+ value: ceilometer
+ weight: 30
+ external_ntp:
+ metadata:
+ label: Host OS NTP Servers
+ weight: 100
+ ntp_list:
+ description: List of upstream NTP servers, separated by comma
+ label: NTP server list
+ regex:
+ error: Invalid NTP server list
+ source: ^\s*(?:(?:\w+(?:-+\w+)*\.)+[a-z]+|\d{1,3}(?:\.\d{1,3}){3})\s*(?:,\s*(?:(?:\w+(?:-+\w+)*\.)+[a-z]+|\d{1,3}(\.\d{1,3}){3})\s*)*$
+ type: text
+ value: 0.pool.ntp.org, 1.pool.ntp.org
+ weight: 10
+ kernel_params:
+ kernel:
+ description: Default kernel parameters
+ label: Initial parameters
+ type: text
+ value: console=ttyS0,9600 console=tty0 net.ifnames=0 biosdevname=0 rootdelay=90
+ nomodeset
+ weight: 45
+ metadata:
+ label: Kernel parameters
+ weight: 40
+ murano_settings:
+ metadata:
+ label: Murano Settings
+ restrictions:
+ - action: hide
+ condition: settings:additional_components.murano.value == false
+ weight: 20
+ murano_repo_url:
+ description: ''
+ label: Murano Repository URL
+ type: text
+ value: http://storage.apps.openstack.org/
+ weight: 10
+ neutron_mellanox:
+ metadata:
+ enabled: true
+ label: Mellanox Neutron components
+ restrictions:
+ - action: hide
+ condition: not ('experimental' in version:feature_groups)
+ toggleable: false
+ weight: 50
+ plugin:
+ label: Mellanox drivers and SR-IOV plugin
+ type: radio
+ value: disabled
+ values:
+ - data: disabled
+ description: If selected, Mellanox drivers, Neutron and Cinder plugin will
+ not be installed.
+ label: Mellanox drivers and plugins disabled
+ restrictions:
+ - settings:storage.iser.value == true
+ - data: drivers_only
+ description: If selected, Mellanox Ethernet drivers will be installed to support
+ networking over Mellanox NIC. Mellanox Neutron plugin will not be installed.
+ label: Install only Mellanox drivers
+ restrictions:
+ - settings:common.libvirt_type.value != 'kvm'
+ - data: ethernet
+ description: If selected, both Mellanox Ethernet drivers and Mellanox network
+ acceleration (Neutron) plugin will be installed.
+ label: Install Mellanox drivers and SR-IOV plugin
+ restrictions:
+ - settings:common.libvirt_type.value != 'kvm' or not (cluster:net_provider
+ == 'neutron' and networking_parameters:segmentation_type == 'vlan')
+ weight: 60
+ vf_num:
+ description: Note that one virtual function will be reserved to the storage
+ network, in case of choosing iSER.
+ label: Number of virtual NICs
+ restrictions:
+ - settings:neutron_mellanox.plugin.value != 'ethernet'
+ type: text
+ value: '16'
+ weight: 70
+ opendaylight:
+ metadata:
+ enabled: true
+ label: OpenDaylight plugin
+ plugin_id: 1
+ restrictions:
+ - cluster:net_provider != 'neutron': Only neutron is supported by OpenDaylight
+ toggleable: true
+ weight: 70
+ rest_api_port:
+ description: Port on which ODL REST API will be available.
+ label: Port number
+ regex:
+ error: Invalid port number
+ source: ^([1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])$
+ type: text
+ value: '8282'
+ weight: 40
+ use_vxlan:
+ description: Configure neutron to use VXLAN tunneling
+ label: Use vxlan
+ restrictions:
+ - action: disable
+ condition: networking_parameters:segmentation_type == 'vlan'
+ message: Neutron with GRE segmentation required
+ type: checkbox
+ value: true
+ weight: 20
+ vni_range_end:
+ description: VXLAN VNI IDs range end
+ label: VNI range end
+ regex:
+ error: Invalid ID number
+ source: ^\d+$
+ restrictions:
+ - action: hide
+ condition: networking_parameters:segmentation_type == 'vlan'
+ type: text
+ value: '10000'
+ weight: 31
+ vni_range_start:
+ description: VXLAN VNI IDs range start
+ label: VNI range start
+ regex:
+ error: Invalid ID number
+ source: ^\d+$
+ restrictions:
+ - action: hide
+ condition: networking_parameters:segmentation_type == 'vlan'
+ type: text
+ value: '10'
+ weight: 30
+ provision:
+ metadata:
+ label: Provision
+ weight: 80
+ method:
+ description: Which provision method to use for this cluster.
+ label: Provision method
+ type: radio
+ value: image
+ values:
+ - data: image
+ description: Copying pre-built images on a disk.
+ label: Image
+ - data: cobbler
+ description: Install from scratch using anaconda or debian-installer.
+ label: (DEPRECATED) Classic (use anaconda or debian-installer)
+ public_network_assignment:
+ assign_to_all_nodes:
+ description: When disabled, public network will be assigned to controllers only
+ label: Assign public network to all nodes
+ type: checkbox
+ value: false
+ weight: 10
+ metadata:
+ label: Public network assignment
+ restrictions:
+ - action: hide
+ condition: cluster:net_provider != 'neutron'
+ weight: 50
+ repo_setup:
+ metadata:
+ always_editable: true
+ label: Repositories
+ weight: 50
+ repos:
+ description: 'Please note: the first repository will be considered the operating
+ system mirror that will be used during node provisioning.
+
+ To create a local repository mirror on the Fuel master node, please follow
+ the instructions provided by running "fuel-createmirror --help" on the Fuel
+ master node.
+
+ Please make sure your Fuel master node has Internet access to the repository
+ before attempting to create a mirror.
+
+ For more details, please refer to the documentation (https://docs.mirantis.com/openstack/fuel/fuel-6.1/operations.html#external-ubuntu-ops).
+
+ '
+ extra_priority: null
+ type: custom_repo_configuration
+ value:
+ - name: ubuntu
+ priority: null
+ section: main universe multiverse
+ suite: trusty
+ type: deb
+ uri: http://archive.ubuntu.com/ubuntu/
+ - name: ubuntu-updates
+ priority: null
+ section: main universe multiverse
+ suite: trusty-updates
+ type: deb
+ uri: http://archive.ubuntu.com/ubuntu/
+ - name: ubuntu-security
+ priority: null
+ section: main universe multiverse
+ suite: trusty-security
+ type: deb
+ uri: http://archive.ubuntu.com/ubuntu/
+ - name: mos
+ priority: 1050
+ section: main restricted
+ suite: mos6.1
+ type: deb
+ uri: http://10.20.0.2:8080/2014.2.2-6.1/ubuntu/x86_64
+ - name: mos-updates
+ priority: 1050
+ section: main restricted
+ suite: mos6.1-updates
+ type: deb
+ uri: http://mirror.fuel-infra.org/mos/ubuntu/
+ - name: mos-security
+ priority: 1050
+ section: main restricted
+ suite: mos6.1-security
+ type: deb
+ uri: http://mirror.fuel-infra.org/mos/ubuntu/
+ - name: mos-holdback
+ priority: 1100
+ section: main restricted
+ suite: mos6.1-holdback
+ type: deb
+ uri: http://mirror.fuel-infra.org/mos/ubuntu/
+ - name: Auxiliary
+ priority: 1150
+ section: main restricted
+ suite: auxiliary
+ type: deb
+ uri: http://10.20.0.2:8080/2014.2.2-6.1/ubuntu/auxiliary
+ storage:
+ ephemeral_ceph:
+ description: Configures Nova to store ephemeral volumes in RBD. This works best
+ if Ceph is enabled for volumes and images, too. Enables live migration of
+ all types of Ceph backed VMs (without this option, live migration will only
+ work with VMs launched from Cinder volumes).
+ label: Ceph RBD for ephemeral volumes (Nova)
+ type: checkbox
+ value: true
+ weight: 75
+ images_ceph:
+ description: Configures Glance to use the Ceph RBD backend to store images.
+ If enabled, this option will prevent Swift from installing.
+ label: Ceph RBD for images (Glance)
+ restrictions:
+ - settings:storage.images_vcenter.value == true: Only one Glance backend could
+ be selected.
+ type: checkbox
+ value: true
+ weight: 30
+ images_vcenter:
+ description: Configures Glance to use the vCenter/ESXi backend to store images.
+ If enabled, this option will prevent Swift from installing.
+ label: VMWare vCenter/ESXi datastore for images (Glance)
+ restrictions:
+ - action: hide
+ condition: settings:common.use_vcenter.value != true
+ - condition: settings:storage.images_ceph.value == true
+ message: Only one Glance backend could be selected.
+ type: checkbox
+ value: false
+ weight: 35
+ iser:
+ description: 'High performance block storage: Cinder volumes over iSER protocol
+ (iSCSI over RDMA). This feature requires SR-IOV capabilities in the NIC, and
+ will use a dedicated virtual function for the storage network.'
+ label: iSER protocol for volumes (Cinder)
+ restrictions:
+ - settings:storage.volumes_lvm.value != true or settings:common.libvirt_type.value
+ != 'kvm'
+ - action: hide
+ condition: not ('experimental' in version:feature_groups)
+ type: checkbox
+ value: false
+ weight: 11
+ metadata:
+ label: Storage
+ weight: 60
+ objects_ceph:
+ description: Configures RadosGW front end for Ceph RBD. This exposes S3 and
+ Swift API Interfaces. If enabled, this option will prevent Swift from installing.
+ label: Ceph RadosGW for objects (Swift API)
+ restrictions:
+ - settings:storage.images_ceph.value == false
+ type: checkbox
+ value: false
+ weight: 80
+ osd_pool_size:
+ description: Configures the default number of object replicas in Ceph. This
+ number must be equal to or lower than the number of deployed 'Storage - Ceph
+ OSD' nodes.
+ label: Ceph object replication factor
+ regex:
+ error: Invalid number
+ source: ^[1-9]\d*$
+ type: text
+ value: '2'
+ weight: 85
+ volumes_ceph:
+ description: Configures Cinder to store volumes in Ceph RBD images.
+ label: Ceph RBD for volumes (Cinder)
+ restrictions:
+ - settings:storage.volumes_lvm.value == true
+ type: checkbox
+ value: true
+ weight: 20
+ volumes_lvm:
+ description: It is recommended to have at least one Storage - Cinder LVM node.
+ label: Cinder LVM over iSCSI for volumes
+ restrictions:
+ - settings:storage.volumes_ceph.value == true
+ type: checkbox
+ value: false
+ weight: 10
+ syslog:
+ metadata:
+ label: Syslog
+ weight: 50
+ syslog_port:
+ description: Remote syslog port
+ label: Port
+ regex:
+ error: Invalid Syslog port
+ source: ^([1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])$
+ type: text
+ value: '514'
+ weight: 20
+ syslog_server:
+ description: Remote syslog hostname
+ label: Hostname
+ type: text
+ value: ''
+ weight: 10
+ syslog_transport:
+ label: Syslog transport protocol
+ type: radio
+ value: tcp
+ values:
+ - data: udp
+ description: ''
+ label: UDP
+ - data: tcp
+ description: ''
+ label: TCP
+ weight: 30
+ workloads_collector:
+ enabled:
+ type: hidden
+ value: true
+ metadata:
+ label: Workloads Collector User
+ restrictions:
+ - action: hide
+ condition: 'true'
+ weight: 10
+ password:
+ type: password
+ value: pBkLbu1k
+ tenant:
+ type: text
+ value: services
+ user:
+ type: text
+ value: fuel_stats_user
# DHA API version supported
version:
created:
-comment: Config for LF POD2
+comment: Config for LF POD2 and Opendaylight
# Adapter to use for this definition
adapter: ipmi
nodes:
- id: 1
- pxeMac: 00:25:b5:a0:00:2b
+ pxeMac: 00:25:b5:a0:00:2a
ipmiIp: 172.30.8.75
ipmiUser: admin
ipmiPass: octopus
- id: 2
- pxeMac: 00:25:b5:a0:00:3b
+ pxeMac: 00:25:b5:a0:00:3a
ipmiIp: 172.30.8.65
ipmiUser: admin
ipmiPass: octopus
- id: 3
- pxeMac: 00:25:b5:a0:00:4b
+ pxeMac: 00:25:b5:a0:00:4a
ipmiIp: 172.30.8.74
ipmiUser: admin
ipmiPass: octopus
- id: 4
- pxeMac: 00:25:b5:a0:00:5b
+ pxeMac: 00:25:b5:a0:00:5a
ipmiIp: 172.30.8.73
ipmiUser: admin
ipmiPass: octopus
- id: 5
- pxeMac: 00:25:b5:a0:00:6b
+ pxeMac: 00:25:b5:a0:00:6a
ipmiIp: 172.30.8.72
ipmiUser: admin
ipmiPass: octopus
password: r00tme
disks:
- fuel: 30G
+ fuel: 50G
\ No newline at end of file
+++ /dev/null
-title: Deployment Hardware Adapter (DHA)
-# DHA API version supported
-version:
-created:
-comment: Config for LF POD2
-
-# Adapter to use for this definition
-adapter: ipmi
-
-# Node list.
-# Mandatory property is id, all other properties are adapter specific.
-
-nodes:
-- id: 1
- pxeMac: 00:25:B5:A0:00:2A
- ipmiIp: 172.30.8.75
- ipmiUser: admin
- ipmiPass: octopus
-- id: 2
- pxeMac: 00:25:B5:A0:00:3A
- ipmiIp: 172.30.8.65
- ipmiUser: admin
- ipmiPass: octopus
-- id: 3
- pxeMac: 00:25:B5:A0:00:4A
- ipmiIp: 172.30.8.74
- ipmiUser: admin
- ipmiPass: octopus
-- id: 4
- pxeMac: 00:25:B5:A0:00:5A
- ipmiIp: 172.30.8.73
- ipmiUser: admin
- ipmiPass: octopus
-- id: 5
- pxeMac: 00:25:B5:A0:00:6A
- ipmiIp: 172.30.8.72
- ipmiUser: admin
- ipmiPass: octopus
-# Adding the Fuel node as node id 6 which may not be correct - please
-# adjust as needed.
-- id: 6
- libvirtName: fuel-opnfv
- libvirtTemplate: templates/hardware_environment/vms/fuel.xml
- isFuel: yes
- username: root
- password: r00tme
-
-disks:
- fuel: 50G
\ No newline at end of file
# DEA API version supported
version:
created:
-comment: Config for LF POD2 - HA deployment with Ceph
+comment: Config for OPNFV BOX - HA deployment with Ceph
environment:
name: opnfv_virt
mode: ha
title: Deployment Hardware Adapter (DHA)
# DHA API version supported
-version: 1.1
-created: Mon May 4 09:03:46 UTC 2015
-comment: Test environment Ericsson Montreal
+version:
+created:
+comment: Config for OPNFV BOX
# Adapter to use for this definition
-adapter: hp
+adapter: ipmi
# Node list.
# Mandatory property is id, all other properties are adapter specific.
nodes:
- id: 1
- pxeMac: 14:58:D0:54:7A:D8
- ipmiIp: 10.118.32.198
+ pxeMac: b8:ae:ed:76:4d:a4
+ ipmiIp: <ipmi_ip>
ipmiUser: <username>
ipmiPass: <password>
- id: 2
- pxeMac: 14:58:D0:55:E2:E0
- ipmiIp: 10.118.32.202
+ pxeMac: b8:ae:ed:76:4d:94
+ ipmiIp: <ipmi_ip>
ipmiUser: <username>
ipmiPass: <password>
- id: 3
- pxeMac: 9C:B6:54:8A:25:C0
- ipmiIp: 10.118.32.213
+ pxeMac: b8:ae:ed:76:4c:eb
+ ipmiIp: <ipmi_ip>
ipmiUser: <username>
ipmiPass: <password>
- id: 4
- pxeMac: 14:58:D0:54:28:80
- ipmiIp: 10.118.32.201
+ pxeMac: b8:ae:ed:76:37:62
+ ipmiIp: <ipmi_ip>
ipmiUser: <username>
ipmiPass: <password>
- id: 5
- pxeMac: 14:58:D0:54:E7:88
- ipmiIp: 10.118.32.203
+ pxeMac: b8:ae:ed:76:4d:95
+ ipmiIp: <ipmi_ip>
ipmiUser: <username>
ipmiPass: <password>
-- id: 6
- pxeMac: 14:58:D0:54:7A:28
- ipmiIp: 10.118.32.205
- ipmiUser: <username>
- ipmiPass: <password>
-# Adding the Fuel node as node id 7 which may not be correct - please
+# Adding the Fuel node as node id 6 which may not be correct - please
# adjust as needed.
-- id: 7
+- id: 6
libvirtName: fuel-opnfv
libvirtTemplate: templates/hardware_environment/vms/fuel.xml
isFuel: yes
password: r00tme
disks:
- fuel: 30G
\ No newline at end of file
+ fuel: 50G
\ No newline at end of file
+++ /dev/null
-title: Deployment Environment Adapter (DEA)
-# DEA API version supported
-version:
-created:
-comment: Test environment Ericsson Montreal
-environment:
- name: opnfv_virt
- mode: ha
- net_segment_type: vlan
-wanted_release: Juno on Ubuntu 12.04.4
-nodes:
-- id: 1
- interfaces: interfaces_1
- transformations: transformations_1
- role: ceph-osd,controller
-- id: 2
- interfaces: interfaces_1
- transformations: transformations_1
- role: ceph-osd,controller
-- id: 3
- interfaces: interfaces_1
- transformations: transformations_1
- role: ceph-osd,controller
-- id: 4
- interfaces: interfaces_1
- transformations: transformations_2
- role: ceph-osd,compute
-- id: 5
- interfaces: interfaces_1
- transformations: transformations_2
- role: ceph-osd,compute
-- id: 6
- interfaces: interfaces_1
- transformations: transformations_2
- role: ceph-osd,compute
-opnfv:
- hosts:
- - name:
- address:
- fqdn:
-fuel:
- ADMIN_NETWORK:
- ipaddress: 10.40.0.2
- netmask: 255.255.255.0
- dhcp_pool_start: 10.40.0.3
- dhcp_pool_end: 10.40.0.254
- DNS_UPSTREAM: 10.118.32.193
- DNS_DOMAIN: opnfvericsson.ca
- DNS_SEARCH: opnfvericsson.ca
- FUEL_ACCESS:
- user: admin
- password: admin
- HOSTNAME: opnfv
- NTP1: 10.118.34.219
- NTP2:
- NTP3:
-interfaces_1:
- eth0:
- - fuelweb_admin
- eth2:
- - public
- - management
- - storage
- - private
-transformations_1:
- transformations:
- - action: add-br
- name: br-eth0
- - action: add-port
- bridge: br-eth0
- name: eth0
- - action: add-br
- name: br-eth1
- - action: add-port
- bridge: br-eth1
- name: eth1
- - action: add-br
- name: br-eth2
- - action: add-port
- bridge: br-eth2
- name: eth2
- - action: add-br
- name: br-eth3
- - action: add-port
- bridge: br-eth3
- name: eth3
- - action: add-br
- name: br-eth4
- - action: add-port
- bridge: br-eth4
- name: eth4
- - action: add-br
- name: br-eth5
- - action: add-port
- bridge: br-eth5
- name: eth5
- - action: add-br
- name: br-ex
- - action: add-br
- name: br-mgmt
- - action: add-br
- name: br-storage
- - action: add-br
- name: br-fw-admin
- - action: add-br
- name: br-prv
- - action: add-patch
- bridges:
- - br-eth2
- - br-storage
- tags:
- - 220
- - 0
- vlan_ids:
- - 220
- - 0
- - action: add-patch
- bridges:
- - br-eth2
- - br-mgmt
- tags:
- - 320
- - 0
- vlan_ids:
- - 320
- - 0
- - action: add-patch
- bridges:
- - br-eth0
- - br-fw-admin
- - action: add-patch
- bridges:
- - br-eth2
- - br-ex
- tags:
- - 20
- - 0
- vlan_ids:
- - 20
- - 0
- - action: add-patch
- bridges:
- - br-eth2
- - br-prv
-transformations_2:
- transformations:
- - action: add-br
- name: br-eth0
- - action: add-port
- bridge: br-eth0
- name: eth0
- - action: add-br
- name: br-eth1
- - action: add-port
- bridge: br-eth1
- name: eth1
- - action: add-br
- name: br-eth2
- - action: add-port
- bridge: br-eth2
- name: eth2
- - action: add-br
- name: br-eth3
- - action: add-port
- bridge: br-eth3
- name: eth3
- - action: add-br
- name: br-eth4
- - action: add-port
- bridge: br-eth4
- name: eth4
- - action: add-br
- name: br-eth5
- - action: add-port
- bridge: br-eth5
- name: eth5
- - action: add-br
- name: br-mgmt
- - action: add-br
- name: br-storage
- - action: add-br
- name: br-fw-admin
- - action: add-br
- name: br-prv
- - action: add-patch
- bridges:
- - br-eth2
- - br-storage
- tags:
- - 220
- - 0
- vlan_ids:
- - 220
- - 0
- - action: add-patch
- bridges:
- - br-eth2
- - br-mgmt
- tags:
- - 320
- - 0
- vlan_ids:
- - 320
- - 0
- - action: add-patch
- bridges:
- - br-eth0
- - br-fw-admin
- - action: add-patch
- bridges:
- - br-eth2
- - br-prv
-network:
- networking_parameters:
- base_mac: fa:16:3e:00:00:00
- dns_nameservers:
- - 10.118.32.193
- floating_ranges:
- - - 10.118.34.226
- - 10.118.34.230
- gre_id_range:
- - 2
- - 65535
- internal_cidr: 192.168.111.0/24
- internal_gateway: 192.168.111.1
- net_l23_provider: ovs
- segmentation_type: vlan
- vlan_range:
- - 2022
- - 2023
- networks:
- - cidr: 10.118.34.192/24
- gateway: 10.118.34.193
- ip_ranges:
- - - 10.118.34.220
- - 10.118.34.225
- meta:
- assign_vip: true
- cidr: 10.118.34.192/24
- configurable: true
- floating_range_var: floating_ranges
- ip_range:
- - 10.118.34.220
- - 10.118.34.225
- map_priority: 1
- name: public
- notation: ip_ranges
- render_addr_mask: public
- render_type: null
- use_gateway: true
- vlan_start: null
- name: public
- vlan_start: null
- - cidr: 192.168.0.0/24
- gateway: null
- ip_ranges:
- - - 192.168.0.2
- - 192.168.0.254
- meta:
- assign_vip: true
- cidr: 192.168.0.0/24
- configurable: true
- map_priority: 2
- name: management
- notation: cidr
- render_addr_mask: internal
- render_type: cidr
- use_gateway: false
- vlan_start: 320
- name: management
- vlan_start: 320
- - cidr: 192.168.1.0/24
- gateway: null
- ip_ranges:
- - - 192.168.1.2
- - 192.168.1.254
- meta:
- assign_vip: false
- cidr: 192.168.1.0/24
- configurable: true
- map_priority: 2
- name: storage
- notation: cidr
- render_addr_mask: storage
- render_type: cidr
- use_gateway: false
- vlan_start: 220
- name: storage
- vlan_start: 220
- - cidr: null
- gateway: null
- ip_ranges: []
- meta:
- assign_vip: false
- configurable: false
- map_priority: 2
- name: private
- neutron_vlan_range: true
- notation: null
- render_addr_mask: null
- render_type: null
- seg_type: vlan
- use_gateway: false
- vlan_start: null
- name: private
- vlan_start: null
- - cidr: 10.40.0.0/24
- gateway: null
- ip_ranges:
- - - 10.40.0.3
- - 10.40.0.254
- meta:
- assign_vip: false
- configurable: false
- map_priority: 0
- notation: ip_ranges
- render_addr_mask: null
- render_type: null
- unmovable: true
- use_gateway: true
- name: fuelweb_admin
- vlan_start: null
-settings:
- editable:
- access:
- email:
- description: Email address for Administrator
- label: email
- type: text
- value: admin@localhost
- weight: 40
- metadata:
- label: Access
- weight: 10
- password:
- description: Password for Administrator
- label: password
- type: password
- value: admin
- weight: 20
- tenant:
- description: Tenant (project) name for Administrator
- label: tenant
- regex:
- error: Invalid tenant name
- source: ^(?!services$)(?!nova$)(?!glance$)(?!keystone$)(?!neutron$)(?!cinder$)(?!swift$)(?!ceph$)(?![Gg]uest$).*
- type: text
- value: admin
- weight: 30
- user:
- description: Username for Administrator
- label: username
- regex:
- error: Invalid username
- source: ^(?!services$)(?!nova$)(?!glance$)(?!keystone$)(?!neutron$)(?!cinder$)(?!swift$)(?!ceph$)(?![Gg]uest$).*
- type: text
- value: admin
- weight: 10
- additional_components:
- ceilometer:
- description: If selected, Ceilometer component will be installed
- label: Install Ceilometer
- type: checkbox
- value: false
- weight: 40
- heat:
- description: ''
- label: ''
- type: hidden
- value: true
- weight: 30
- metadata:
- label: Additional Components
- weight: 20
- murano:
- description: If selected, Murano component will be installed
- label: Install Murano
- restrictions:
- - cluster:net_provider != 'neutron'
- type: checkbox
- value: false
- weight: 20
- sahara:
- description: If selected, Sahara component will be installed
- label: Install Sahara
- type: checkbox
- value: false
- weight: 10
- common:
- auth_key:
- description: Public key(s) to include in authorized_keys on deployed nodes
- label: Public Key
- type: text
- value: ''
- weight: 70
- auto_assign_floating_ip:
- description: If selected, OpenStack will automatically assign a floating IP
- to a new instance
- label: Auto assign floating IP
- restrictions:
- - cluster:net_provider == 'neutron'
- type: checkbox
- value: false
- weight: 40
- compute_scheduler_driver:
- label: Scheduler driver
- type: radio
- value: nova.scheduler.filter_scheduler.FilterScheduler
- values:
- - data: nova.scheduler.filter_scheduler.FilterScheduler
- description: Currently the most advanced OpenStack scheduler. See the OpenStack
- documentation for details.
- label: Filter scheduler
- - data: nova.scheduler.simple.SimpleScheduler
- description: This is 'naive' scheduler which tries to find the least loaded
- host
- label: Simple scheduler
- weight: 40
- debug:
- description: Debug logging mode provides more information, but requires more
- disk space.
- label: OpenStack debug logging
- type: checkbox
- value: false
- weight: 20
- disable_offload:
- description: If set, generic segmentation offload (gso) and generic receive
- offload (gro) on physical nics will be disabled. See ethtool man.
- label: Disable generic offload on physical nics
- restrictions:
- - action: hide
- condition: cluster:net_provider == 'neutron' and networking_parameters:segmentation_type
- == 'gre'
- type: checkbox
- value: true
- weight: 80
- libvirt_type:
- label: Hypervisor type
- type: radio
- value: kvm
- values:
- - data: kvm
- description: Choose this type of hypervisor if you run OpenStack on hardware
- label: KVM
- restrictions:
- - settings:common.libvirt_type.value == 'vcenter'
- - data: qemu
- description: Choose this type of hypervisor if you run OpenStack on virtual
- hosts.
- label: QEMU
- restrictions:
- - settings:common.libvirt_type.value == 'vcenter'
- - data: vcenter
- description: Choose this type of hypervisor if you run OpenStack in a vCenter
- environment.
- label: vCenter
- restrictions:
- - settings:common.libvirt_type.value != 'vcenter' or cluster:net_provider
- == 'neutron'
- weight: 30
- metadata:
- label: Common
- weight: 30
- nova_quota:
- description: Quotas are used to limit CPU and memory usage for tenants. Enabling
- quotas will increase load on the Nova database.
- label: Nova quotas
- type: checkbox
- value: false
- weight: 25
- resume_guests_state_on_host_boot:
- description: Whether to resume previous guests state when the host reboots.
- If enabled, this option causes guests assigned to the host to resume their
- previous state. If the guest was running a restart will be attempted when
- nova-compute starts. If the guest was not running previously, a restart
- will not be attempted.
- label: Resume guests state on host boot
- type: checkbox
- value: true
- weight: 60
- use_cow_images:
- description: For most cases you will want qcow format. If it's disabled, raw
- image format will be used to run VMs. OpenStack with raw format currently
- does not support snapshotting.
- label: Use qcow format for images
- type: checkbox
- value: true
- weight: 50
- corosync:
- group:
- description: ''
- label: Group
- type: text
- value: 226.94.1.1
- weight: 10
- metadata:
- label: Corosync
- restrictions:
- - action: hide
- condition: 'true'
- weight: 50
- port:
- description: ''
- label: Port
- type: text
- value: '12000'
- weight: 20
- verified:
- description: Set True only if multicast is configured correctly on router.
- label: Need to pass network verification.
- type: checkbox
- value: false
- weight: 10
- external_dns:
- dns_list:
- description: List of upstream DNS servers, separated by comma
- label: DNS list
- type: text
- value: 10.118.32.193
- weight: 10
- metadata:
- label: Upstream DNS
- weight: 90
- external_ntp:
- metadata:
- label: Upstream NTP
- weight: 100
- ntp_list:
- description: List of upstream NTP servers, separated by comma
- label: NTP servers list
- type: text
- value: 10.118.34.219
- weight: 10
- kernel_params:
- kernel:
- description: Default kernel parameters
- label: Initial parameters
- type: text
- value: console=ttyS0,9600 console=tty0 rootdelay=90 nomodeset
- weight: 45
- metadata:
- label: Kernel parameters
- weight: 40
- neutron_mellanox:
- metadata:
- enabled: true
- label: Mellanox Neutron components
- toggleable: false
- weight: 50
- plugin:
- label: Mellanox drivers and SR-IOV plugin
- type: radio
- value: disabled
- values:
- - data: disabled
- description: If selected, Mellanox drivers, Neutron and Cinder plugin will
- not be installed.
- label: Mellanox drivers and plugins disabled
- restrictions:
- - settings:storage.iser.value == true
- - data: drivers_only
- description: If selected, Mellanox Ethernet drivers will be installed to
- support networking over Mellanox NIC. Mellanox Neutron plugin will not
- be installed.
- label: Install only Mellanox drivers
- restrictions:
- - settings:common.libvirt_type.value != 'kvm'
- - data: ethernet
- description: If selected, both Mellanox Ethernet drivers and Mellanox network
- acceleration (Neutron) plugin will be installed.
- label: Install Mellanox drivers and SR-IOV plugin
- restrictions:
- - settings:common.libvirt_type.value != 'kvm' or not (cluster:net_provider
- == 'neutron' and networking_parameters:segmentation_type == 'vlan')
- weight: 60
- vf_num:
- description: Note that one virtual function will be reserved to the storage
- network, in case of choosing iSER.
- label: Number of virtual NICs
- restrictions:
- - settings:neutron_mellanox.plugin.value != 'ethernet'
- type: text
- value: '16'
- weight: 70
- nsx_plugin:
- connector_type:
- description: Default network transport type to use
- label: NSX connector type
- type: select
- value: stt
- values:
- - data: gre
- label: GRE
- - data: ipsec_gre
- label: GRE over IPSec
- - data: stt
- label: STT
- - data: ipsec_stt
- label: STT over IPSec
- - data: bridge
- label: Bridge
- weight: 80
- l3_gw_service_uuid:
- description: UUID for the default L3 gateway service to use with this cluster
- label: L3 service UUID
- regex:
- error: Invalid L3 gateway service UUID
- source: '[a-f\d]{8}-[a-f\d]{4}-[a-f\d]{4}-[a-f\d]{4}-[a-f\d]{12}'
- type: text
- value: ''
- weight: 50
- metadata:
- enabled: false
- label: VMware NSX
- restrictions:
- - action: hide
- condition: cluster:net_provider != 'neutron' or networking_parameters:net_l23_provider
- != 'nsx'
- weight: 20
- nsx_controllers:
- description: One or more IPv4[:port] addresses of NSX controller node, separated
- by comma (e.g. 10.30.30.2,192.168.110.254:443)
- label: NSX controller endpoint
- regex:
- error: Invalid controller endpoints, specify valid IPv4[:port] pair
- source: ^(([\d]|[1-9][\d]|1[\d]{2}|2[0-4][\d]|25[0-5])\.){3}([\d]|[1-9][\d]|1[\d]{2}|2[0-4][\d]|25[0-5])(:(6553[0-5]|655[0-2][\d]|65[0-4][\d]{2}|6[0-4][\d]{3}|5[\d]{4}|[\d][\d]{0,3}))?(,(([\d]|[1-9][\d]|1[\d]{2}|2[0-4][\d]|25[0-5])\.){3}([\d]|[1-9][\d]|1[\d]{2}|2[0-4][\d]|25[0-5])(:(6553[0-5]|655[0-2][\d]|65[0-4][\d]{2}|6[0-4][\d]{3}|5[\d]{4}|[\d][\d]{0,3}))?)*$
- type: text
- value: ''
- weight: 60
- nsx_password:
- description: Password for Administrator
- label: NSX password
- regex:
- error: Empty password
- source: \S
- type: password
- value: ''
- weight: 30
- nsx_username:
- description: NSX administrator's username
- label: NSX username
- regex:
- error: Empty username
- source: \S
- type: text
- value: admin
- weight: 20
- packages_url:
- description: URL to NSX specific packages
- label: URL to NSX bits
- regex:
- error: Invalid URL, specify valid HTTP/HTTPS URL with IPv4 address (e.g.
- http://10.20.0.2/nsx)
- source: ^https?://(([\d]|[1-9][\d]|1[\d]{2}|2[0-4][\d]|25[0-5])\.){3}([\d]|[1-9][\d]|1[\d]{2}|2[0-4][\d]|25[0-5])(:(6553[0-5]|655[0-2][\d]|65[0-4][\d]{2}|6[0-4][\d]{3}|5[\d]{4}|[\d][\d]{0,3}))?(/.*)?$
- type: text
- value: ''
- weight: 70
- replication_mode:
- description: ''
- label: NSX cluster has Service nodes
- type: checkbox
- value: true
- weight: 90
- transport_zone_uuid:
- description: UUID of the pre-existing default NSX Transport zone
- label: Transport zone UUID
- regex:
- error: Invalid transport zone UUID
- source: '[a-f\d]{8}-[a-f\d]{4}-[a-f\d]{4}-[a-f\d]{4}-[a-f\d]{12}'
- type: text
- value: ''
- weight: 40
- provision:
- metadata:
- label: Provision
- restrictions:
- - action: hide
- condition: not ('experimental' in version:feature_groups)
- weight: 80
- method:
- description: Which provision method to use for this cluster.
- label: Provision method
- type: radio
- value: cobbler
- values:
- - data: image
- description: Copying pre-built images on a disk.
- label: Image
- - data: cobbler
- description: Install from scratch using anaconda or debian-installer.
- label: Classic (use anaconda or debian-installer)
- public_network_assignment:
- assign_to_all_nodes:
- description: When disabled, public network will be assigned to controllers
- and zabbix-server only
- label: Assign public network to all nodes
- type: checkbox
- value: false
- weight: 10
- metadata:
- label: Public network assignment
- restrictions:
- - action: hide
- condition: cluster:net_provider != 'neutron'
- weight: 50
- storage:
- ephemeral_ceph:
- description: Configures Nova to store ephemeral volumes in RBD. This works
- best if Ceph is enabled for volumes and images, too. Enables live migration
- of all types of Ceph backed VMs (without this option, live migration will
- only work with VMs launched from Cinder volumes).
- label: Ceph RBD for ephemeral volumes (Nova)
- restrictions:
- - settings:common.libvirt_type.value == 'vcenter'
- type: checkbox
- value: true
- weight: 75
- images_ceph:
- description: Configures Glance to use the Ceph RBD backend to store images.
- If enabled, this option will prevent Swift from installing.
- label: Ceph RBD for images (Glance)
- type: checkbox
- value: true
- weight: 30
- images_vcenter:
- description: Configures Glance to use the vCenter/ESXi backend to store images.
- If enabled, this option will prevent Swift from installing.
- label: VMWare vCenter/ESXi datastore for images (Glance)
- restrictions:
- - settings:common.libvirt_type.value != 'vcenter'
- type: checkbox
- value: false
- weight: 35
- iser:
- description: 'High performance block storage: Cinder volumes over iSER protocol
- (iSCSI over RDMA). This feature requires SR-IOV capabilities in the NIC,
- and will use a dedicated virtual function for the storage network.'
- label: iSER protocol for volumes (Cinder)
- restrictions:
- - settings:storage.volumes_lvm.value != true or settings:common.libvirt_type.value
- != 'kvm'
- type: checkbox
- value: false
- weight: 11
- metadata:
- label: Storage
- weight: 60
- objects_ceph:
- description: Configures RadosGW front end for Ceph RBD. This exposes S3 and
- Swift API Interfaces. If enabled, this option will prevent Swift from installing.
- label: Ceph RadosGW for objects (Swift API)
- restrictions:
- - settings:storage.images_ceph.value == false
- type: checkbox
- value: false
- weight: 80
- osd_pool_size:
- description: Configures the default number of object replicas in Ceph. This
- number must be equal to or lower than the number of deployed 'Storage -
- Ceph OSD' nodes.
- label: Ceph object replication factor
- regex:
- error: Invalid number
- source: ^[1-9]\d*$
- restrictions:
- - settings:common.libvirt_type.value == 'vcenter'
- type: text
- value: '2'
- weight: 85
- vc_datacenter:
- description: Inventory path to a datacenter. If you want to use ESXi host
- as datastore, it should be "ha-datacenter".
- label: Datacenter name
- regex:
- error: Empty datacenter
- source: \S
- restrictions:
- - action: hide
- condition: settings:storage.images_vcenter.value == false or settings:common.libvirt_type.value
- != 'vcenter'
- type: text
- value: ''
- weight: 65
- vc_datastore:
- description: Datastore associated with the datacenter.
- label: Datastore name
- regex:
- error: Empty datastore
- source: \S
- restrictions:
- - action: hide
- condition: settings:storage.images_vcenter.value == false or settings:common.libvirt_type.value
- != 'vcenter'
- type: text
- value: ''
- weight: 60
- vc_host:
- description: IP Address of vCenter/ESXi
- label: vCenter/ESXi IP
- regex:
- error: Specify valid IPv4 address
- source: ^(([\d]|[1-9][\d]|1[\d]{2}|2[0-4][\d]|25[0-5])\.){3}([\d]|[1-9][\d]|1[\d]{2}|2[0-4][\d]|25[0-5])$
- restrictions:
- - action: hide
- condition: settings:storage.images_vcenter.value == false or settings:common.libvirt_type.value
- != 'vcenter'
- type: text
- value: ''
- weight: 45
- vc_image_dir:
- description: The name of the directory where the glance images will be stored
- in the VMware datastore.
- label: Datastore Images directory
- regex:
- error: Empty images directory
- source: \S
- restrictions:
- - action: hide
- condition: settings:storage.images_vcenter.value == false or settings:common.libvirt_type.value
- != 'vcenter'
- type: text
- value: /openstack_glance
- weight: 70
- vc_password:
- description: vCenter/ESXi admin password
- label: Password
- regex:
- error: Empty password
- source: \S
- restrictions:
- - action: hide
- condition: settings:storage.images_vcenter.value == false or settings:common.libvirt_type.value
- != 'vcenter'
- type: password
- value: ''
- weight: 55
- vc_user:
- description: vCenter/ESXi admin username
- label: Username
- regex:
- error: Empty username
- source: \S
- restrictions:
- - action: hide
- condition: settings:storage.images_vcenter.value == false or settings:common.libvirt_type.value
- != 'vcenter'
- type: text
- value: ''
- weight: 50
- volumes_ceph:
- description: Configures Cinder to store volumes in Ceph RBD images.
- label: Ceph RBD for volumes (Cinder)
- restrictions:
- - settings:storage.volumes_lvm.value == true or settings:common.libvirt_type.value
- == 'vcenter'
- type: checkbox
- value: true
- weight: 20
- volumes_lvm:
- description: Requires at least one Storage - Cinder LVM node.
- label: Cinder LVM over iSCSI for volumes
- restrictions:
- - settings:storage.volumes_ceph.value == true
- type: checkbox
- value: false
- weight: 10
- volumes_vmdk:
- description: Configures Cinder to store volumes via VMware vCenter.
- label: VMware vCenter for volumes (Cinder)
- restrictions:
- - settings:common.libvirt_type.value != 'vcenter' or settings:storage.volumes_lvm.value
- == true
- type: checkbox
- value: false
- weight: 15
- syslog:
- metadata:
- label: Syslog
- weight: 50
- syslog_port:
- description: Remote syslog port
- label: Port
- regex:
- error: Invalid Syslog port
- source: ^([1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])$
- type: text
- value: '514'
- weight: 20
- syslog_server:
- description: Remote syslog hostname
- label: Hostname
- type: text
- value: ''
- weight: 10
- syslog_transport:
- label: Syslog transport protocol
- type: radio
- value: tcp
- values:
- - data: udp
- description: ''
- label: UDP
- - data: tcp
- description: ''
- label: TCP
- weight: 30
- vcenter:
- cluster:
- description: vCenter cluster name. If you have multiple clusters, use comma
- to separate names
- label: Cluster
- regex:
- error: Invalid cluster list
- source: ^([^,\ ]+([\ ]*[^,\ ])*)(,[^,\ ]+([\ ]*[^,\ ])*)*$
- type: text
- value: ''
- weight: 40
- datastore_regex:
- description: The Datastore regexp setting specifies the data stores to use
- with Compute. For example, "nas.*". If you want to use all available datastores,
- leave this field blank
- label: Datastore regexp
- regex:
- error: Invalid datastore regexp
- source: ^(\S.*\S|\S|)$
- type: text
- value: ''
- weight: 50
- host_ip:
- description: IP Address of vCenter
- label: vCenter IP
- regex:
- error: Specify valid IPv4 address
- source: ^(([\d]|[1-9][\d]|1[\d]{2}|2[0-4][\d]|25[0-5])\.){3}([\d]|[1-9][\d]|1[\d]{2}|2[0-4][\d]|25[0-5])$
- type: text
- value: ''
- weight: 10
- metadata:
- label: vCenter
- restrictions:
- - action: hide
- condition: settings:common.libvirt_type.value != 'vcenter'
- weight: 20
- use_vcenter:
- description: ''
- label: ''
- type: hidden
- value: true
- weight: 5
- vc_password:
- description: vCenter admin password
- label: Password
- regex:
- error: Empty password
- source: \S
- type: password
- value: admin
- weight: 30
- vc_user:
- description: vCenter admin username
- label: Username
- regex:
- error: Empty username
- source: \S
- type: text
- value: admin
- weight: 20
- vlan_interface:
- description: Physical ESXi host ethernet adapter for VLAN networking (e.g.
- vmnic1). If empty "vmnic0" is used by default
- label: ESXi VLAN interface
- restrictions:
- - action: hide
- condition: cluster:net_provider != 'nova_network' or networking_parameters:net_manager
- != 'VlanManager'
- type: text
- value: ''
- weight: 60
- zabbix:
- metadata:
- label: Zabbix Access
- restrictions:
- - action: hide
- condition: not ('experimental' in version:feature_groups)
- weight: 70
- password:
- description: Password for Zabbix Administrator
- label: password
- type: password
- value: zabbix
- weight: 20
- username:
- description: Username for Zabbix Administrator
- label: username
- type: text
- value: admin
- weight: 10
\ No newline at end of file
+++ /dev/null
-title: Deployment Hardware Adapter (DHA)
-# DHA API version supported
-version: 1.1
-created: Mon May 4 09:03:46 UTC 2015
-comment: Test environment Ericsson Montreal
-
-# Adapter to use for this definition
-adapter: hp
-
-# Node list.
-# Mandatory property is id, all other properties are adapter specific.
-
-nodes:
-- id: 1
- pxeMac: 14:58:D0:54:7A:D8
- ipmiIp: 10.118.32.198
- ipmiUser: <username>
- ipmiPass: <password>
-- id: 2
- pxeMac: 14:58:D0:55:E2:E0
- ipmiIp: 10.118.32.202
- ipmiUser: <username>
- ipmiPass: <password>
-- id: 3
- pxeMac: 9C:B6:54:8A:25:C0
- ipmiIp: 10.118.32.213
- ipmiUser: <username>
- ipmiPass: <password>
-- id: 4
- pxeMac: 14:58:D0:54:28:80
- ipmiIp: 10.118.32.201
- ipmiUser: <username>
- ipmiPass: <password>
-- id: 5
- pxeMac: 14:58:D0:54:E7:88
- ipmiIp: 10.118.32.203
- ipmiUser: <username>
- ipmiPass: <password>
-- id: 6
- pxeMac: 14:58:D0:54:7A:28
- ipmiIp: 10.118.32.205
- ipmiUser: <username>
- ipmiPass: <password>
-# Adding the Fuel node as node id 7 which may not be correct - please
-# adjust as needed.
-- id: 7
- libvirtName: fuel-opnfv
- libvirtTemplate: templates/hardware_environment/vms/fuel.xml
- isFuel: yes
- username: root
- password: r00tme
-
-disks:
- fuel: 30G
\ No newline at end of file
+++ /dev/null
-title: Deployment Environment Adapter (DEA)
-# DEA API version supported
-version:
-created:
-comment: Test environment Ericsson Montreal
-environment:
- name: opnfv_virt
- mode: multinode
- net_segment_type: vlan
-wanted_release: Juno on Ubuntu 12.04.4
-nodes:
-- id: 1
- interfaces: interfaces_1
- transformations: transformations_1
- role: ceph-osd,controller
-- id: 2
- interfaces: interfaces_1
- transformations: transformations_2
- role: ceph-osd,compute
-- id: 3
- interfaces: interfaces_1
- transformations: transformations_2
- role: ceph-osd,compute
-- id: 4
- interfaces: interfaces_1
- transformations: transformations_2
- role: ceph-osd,compute
-- id: 5
- interfaces: interfaces_1
- transformations: transformations_2
- role: ceph-osd,compute
-- id: 6
- interfaces: interfaces_1
- transformations: transformations_2
- role: ceph-osd,compute
-opnfv:
- hosts:
- - name:
- address:
- fqdn:
-fuel:
- ADMIN_NETWORK:
- ipaddress: 10.40.0.2
- netmask: 255.255.255.0
- dhcp_pool_start: 10.40.0.3
- dhcp_pool_end: 10.40.0.254
- DNS_UPSTREAM: 10.118.32.193
- DNS_DOMAIN: opnfvericsson.ca
- DNS_SEARCH: opnfvericsson.ca
- FUEL_ACCESS:
- user: admin
- password: admin
- HOSTNAME: opnfv
- NTP1: 10.118.34.219
- NTP2:
- NTP3:
-interfaces_1:
- eth0:
- - fuelweb_admin
- eth2:
- - public
- - management
- - storage
- - private
-transformations_1:
- transformations:
- - action: add-br
- name: br-eth0
- - action: add-port
- bridge: br-eth0
- name: eth0
- - action: add-br
- name: br-eth1
- - action: add-port
- bridge: br-eth1
- name: eth1
- - action: add-br
- name: br-eth2
- - action: add-port
- bridge: br-eth2
- name: eth2
- - action: add-br
- name: br-eth3
- - action: add-port
- bridge: br-eth3
- name: eth3
- - action: add-br
- name: br-eth4
- - action: add-port
- bridge: br-eth4
- name: eth4
- - action: add-br
- name: br-eth5
- - action: add-port
- bridge: br-eth5
- name: eth5
- - action: add-br
- name: br-ex
- - action: add-br
- name: br-mgmt
- - action: add-br
- name: br-storage
- - action: add-br
- name: br-fw-admin
- - action: add-br
- name: br-prv
- - action: add-patch
- bridges:
- - br-eth2
- - br-storage
- tags:
- - 220
- - 0
- vlan_ids:
- - 220
- - 0
- - action: add-patch
- bridges:
- - br-eth2
- - br-mgmt
- tags:
- - 320
- - 0
- vlan_ids:
- - 320
- - 0
- - action: add-patch
- bridges:
- - br-eth0
- - br-fw-admin
- - action: add-patch
- bridges:
- - br-eth2
- - br-ex
- - action: add-patch
- bridges:
- - br-eth2
- - br-prv
-transformations_2:
- transformations:
- - action: add-br
- name: br-eth0
- - action: add-port
- bridge: br-eth0
- name: eth0
- - action: add-br
- name: br-eth1
- - action: add-port
- bridge: br-eth1
- name: eth1
- - action: add-br
- name: br-eth2
- - action: add-port
- bridge: br-eth2
- name: eth2
- - action: add-br
- name: br-eth3
- - action: add-port
- bridge: br-eth3
- name: eth3
- - action: add-br
- name: br-eth4
- - action: add-port
- bridge: br-eth4
- name: eth4
- - action: add-br
- name: br-eth5
- - action: add-port
- bridge: br-eth5
- name: eth5
- - action: add-br
- name: br-mgmt
- - action: add-br
- name: br-storage
- - action: add-br
- name: br-fw-admin
- - action: add-br
- name: br-prv
- - action: add-patch
- bridges:
- - br-eth2
- - br-storage
- tags:
- - 220
- - 0
- vlan_ids:
- - 220
- - 0
- - action: add-patch
- bridges:
- - br-eth2
- - br-mgmt
- tags:
- - 320
- - 0
- vlan_ids:
- - 320
- - 0
- - action: add-patch
- bridges:
- - br-eth0
- - br-fw-admin
- - action: add-patch
- bridges:
- - br-eth2
- - br-prv
-network:
- networking_parameters:
- base_mac: fa:16:3e:00:00:00
- dns_nameservers:
- - 10.118.32.193
- floating_ranges:
- - - 10.118.36.48
- - 10.118.36.62
- gre_id_range:
- - 2
- - 65535
- internal_cidr: 192.168.111.0/24
- internal_gateway: 192.168.111.1
- net_l23_provider: ovs
- segmentation_type: vlan
- vlan_range:
- - 2022
- - 2023
- networks:
- - cidr: 10.118.36.32/27
- gateway: 10.118.36.1
- ip_ranges:
- - - 10.118.36.33
- - 10.118.36.47
- meta:
- assign_vip: true
- cidr: 172.16.0.0/24
- configurable: true
- floating_range_var: floating_ranges
- ip_range:
- - 172.16.0.2
- - 172.16.0.126
- map_priority: 1
- name: public
- notation: ip_ranges
- render_addr_mask: public
- render_type: null
- use_gateway: true
- vlan_start: null
- name: public
- vlan_start: null
- - cidr: 192.168.0.0/24
- gateway: null
- ip_ranges:
- - - 192.168.0.2
- - 192.168.0.254
- meta:
- assign_vip: true
- cidr: 192.168.0.0/24
- configurable: true
- map_priority: 2
- name: management
- notation: cidr
- render_addr_mask: internal
- render_type: cidr
- use_gateway: false
- vlan_start: 320
- name: management
- vlan_start: 320
- - cidr: 192.168.1.0/24
- gateway: null
- ip_ranges:
- - - 192.168.1.2
- - 192.168.1.254
- meta:
- assign_vip: false
- cidr: 192.168.1.0/24
- configurable: true
- map_priority: 2
- name: storage
- notation: cidr
- render_addr_mask: storage
- render_type: cidr
- use_gateway: false
- vlan_start: 220
- name: storage
- vlan_start: 220
- - cidr: null
- gateway: null
- ip_ranges: []
- meta:
- assign_vip: false
- configurable: false
- map_priority: 2
- name: private
- neutron_vlan_range: true
- notation: null
- render_addr_mask: null
- render_type: null
- seg_type: vlan
- use_gateway: false
- vlan_start: null
- name: private
- vlan_start: null
- - cidr: 10.40.0.0/24
- gateway: null
- ip_ranges:
- - - 10.40.0.3
- - 10.40.0.254
- meta:
- assign_vip: false
- configurable: false
- map_priority: 0
- notation: ip_ranges
- render_addr_mask: null
- render_type: null
- unmovable: true
- use_gateway: true
- name: fuelweb_admin
- vlan_start: null
-settings:
- editable:
- access:
- email:
- description: Email address for Administrator
- label: email
- type: text
- value: admin@localhost
- weight: 40
- metadata:
- label: Access
- weight: 10
- password:
- description: Password for Administrator
- label: password
- type: password
- value: admin
- weight: 20
- tenant:
- description: Tenant (project) name for Administrator
- label: tenant
- regex:
- error: Invalid tenant name
- source: ^(?!services$)(?!nova$)(?!glance$)(?!keystone$)(?!neutron$)(?!cinder$)(?!swift$)(?!ceph$)(?![Gg]uest$).*
- type: text
- value: admin
- weight: 30
- user:
- description: Username for Administrator
- label: username
- regex:
- error: Invalid username
- source: ^(?!services$)(?!nova$)(?!glance$)(?!keystone$)(?!neutron$)(?!cinder$)(?!swift$)(?!ceph$)(?![Gg]uest$).*
- type: text
- value: admin
- weight: 10
- additional_components:
- ceilometer:
- description: If selected, Ceilometer component will be installed
- label: Install Ceilometer
- type: checkbox
- value: false
- weight: 40
- heat:
- description: ''
- label: ''
- type: hidden
- value: true
- weight: 30
- metadata:
- label: Additional Components
- weight: 20
- murano:
- description: If selected, Murano component will be installed
- label: Install Murano
- restrictions:
- - cluster:net_provider != 'neutron'
- type: checkbox
- value: false
- weight: 20
- sahara:
- description: If selected, Sahara component will be installed
- label: Install Sahara
- type: checkbox
- value: false
- weight: 10
- common:
- auth_key:
- description: Public key(s) to include in authorized_keys on deployed nodes
- label: Public Key
- type: text
- value: ''
- weight: 70
- auto_assign_floating_ip:
- description: If selected, OpenStack will automatically assign a floating IP
- to a new instance
- label: Auto assign floating IP
- restrictions:
- - cluster:net_provider == 'neutron'
- type: checkbox
- value: false
- weight: 40
- compute_scheduler_driver:
- label: Scheduler driver
- type: radio
- value: nova.scheduler.filter_scheduler.FilterScheduler
- values:
- - data: nova.scheduler.filter_scheduler.FilterScheduler
- description: Currently the most advanced OpenStack scheduler. See the OpenStack
- documentation for details.
- label: Filter scheduler
- - data: nova.scheduler.simple.SimpleScheduler
- description: This is 'naive' scheduler which tries to find the least loaded
- host
- label: Simple scheduler
- weight: 40
- debug:
- description: Debug logging mode provides more information, but requires more
- disk space.
- label: OpenStack debug logging
- type: checkbox
- value: false
- weight: 20
- disable_offload:
- description: If set, generic segmentation offload (gso) and generic receive
- offload (gro) on physical nics will be disabled. See ethtool man.
- label: Disable generic offload on physical nics
- restrictions:
- - action: hide
- condition: cluster:net_provider == 'neutron' and networking_parameters:segmentation_type
- == 'gre'
- type: checkbox
- value: true
- weight: 80
- libvirt_type:
- label: Hypervisor type
- type: radio
- value: kvm
- values:
- - data: kvm
- description: Choose this type of hypervisor if you run OpenStack on hardware
- label: KVM
- restrictions:
- - settings:common.libvirt_type.value == 'vcenter'
- - data: qemu
- description: Choose this type of hypervisor if you run OpenStack on virtual
- hosts.
- label: QEMU
- restrictions:
- - settings:common.libvirt_type.value == 'vcenter'
- - data: vcenter
- description: Choose this type of hypervisor if you run OpenStack in a vCenter
- environment.
- label: vCenter
- restrictions:
- - settings:common.libvirt_type.value != 'vcenter' or cluster:net_provider
- == 'neutron'
- weight: 30
- metadata:
- label: Common
- weight: 30
- nova_quota:
- description: Quotas are used to limit CPU and memory usage for tenants. Enabling
- quotas will increase load on the Nova database.
- label: Nova quotas
- type: checkbox
- value: false
- weight: 25
- resume_guests_state_on_host_boot:
- description: Whether to resume previous guests state when the host reboots.
- If enabled, this option causes guests assigned to the host to resume their
- previous state. If the guest was running a restart will be attempted when
- nova-compute starts. If the guest was not running previously, a restart
- will not be attempted.
- label: Resume guests state on host boot
- type: checkbox
- value: true
- weight: 60
- use_cow_images:
- description: For most cases you will want qcow format. If it's disabled, raw
- image format will be used to run VMs. OpenStack with raw format currently
- does not support snapshotting.
- label: Use qcow format for images
- type: checkbox
- value: true
- weight: 50
- corosync:
- group:
- description: ''
- label: Group
- type: text
- value: 226.94.1.1
- weight: 10
- metadata:
- label: Corosync
- restrictions:
- - action: hide
- condition: 'true'
- weight: 50
- port:
- description: ''
- label: Port
- type: text
- value: '12000'
- weight: 20
- verified:
- description: Set True only if multicast is configured correctly on router.
- label: Need to pass network verification.
- type: checkbox
- value: false
- weight: 10
- external_dns:
- dns_list:
- description: List of upstream DNS servers, separated by comma
- label: DNS list
- type: text
- value: 10.118.32.193
- weight: 10
- metadata:
- label: Upstream DNS
- weight: 90
- external_ntp:
- metadata:
- label: Upstream NTP
- weight: 100
- ntp_list:
- description: List of upstream NTP servers, separated by comma
- label: NTP servers list
- type: text
- value: 10.118.34.219
- weight: 10
- kernel_params:
- kernel:
- description: Default kernel parameters
- label: Initial parameters
- type: text
- value: console=ttyS0,9600 console=tty0 rootdelay=90 nomodeset
- weight: 45
- metadata:
- label: Kernel parameters
- weight: 40
- neutron_mellanox:
- metadata:
- enabled: true
- label: Mellanox Neutron components
- toggleable: false
- weight: 50
- plugin:
- label: Mellanox drivers and SR-IOV plugin
- type: radio
- value: disabled
- values:
- - data: disabled
- description: If selected, Mellanox drivers, Neutron and Cinder plugin will
- not be installed.
- label: Mellanox drivers and plugins disabled
- restrictions:
- - settings:storage.iser.value == true
- - data: drivers_only
- description: If selected, Mellanox Ethernet drivers will be installed to
- support networking over Mellanox NIC. Mellanox Neutron plugin will not
- be installed.
- label: Install only Mellanox drivers
- restrictions:
- - settings:common.libvirt_type.value != 'kvm'
- - data: ethernet
- description: If selected, both Mellanox Ethernet drivers and Mellanox network
- acceleration (Neutron) plugin will be installed.
- label: Install Mellanox drivers and SR-IOV plugin
- restrictions:
- - settings:common.libvirt_type.value != 'kvm' or not (cluster:net_provider
- == 'neutron' and networking_parameters:segmentation_type == 'vlan')
- weight: 60
- vf_num:
- description: Note that one virtual function will be reserved to the storage
- network, in case of choosing iSER.
- label: Number of virtual NICs
- restrictions:
- - settings:neutron_mellanox.plugin.value != 'ethernet'
- type: text
- value: '16'
- weight: 70
- nsx_plugin:
- connector_type:
- description: Default network transport type to use
- label: NSX connector type
- type: select
- value: stt
- values:
- - data: gre
- label: GRE
- - data: ipsec_gre
- label: GRE over IPSec
- - data: stt
- label: STT
- - data: ipsec_stt
- label: STT over IPSec
- - data: bridge
- label: Bridge
- weight: 80
- l3_gw_service_uuid:
- description: UUID for the default L3 gateway service to use with this cluster
- label: L3 service UUID
- regex:
- error: Invalid L3 gateway service UUID
- source: '[a-f\d]{8}-[a-f\d]{4}-[a-f\d]{4}-[a-f\d]{4}-[a-f\d]{12}'
- type: text
- value: ''
- weight: 50
- metadata:
- enabled: false
- label: VMware NSX
- restrictions:
- - action: hide
- condition: cluster:net_provider != 'neutron' or networking_parameters:net_l23_provider
- != 'nsx'
- weight: 20
- nsx_controllers:
- description: One or more IPv4[:port] addresses of NSX controller node, separated
- by comma (e.g. 10.30.30.2,192.168.110.254:443)
- label: NSX controller endpoint
- regex:
- error: Invalid controller endpoints, specify valid IPv4[:port] pair
- source: ^(([\d]|[1-9][\d]|1[\d]{2}|2[0-4][\d]|25[0-5])\.){3}([\d]|[1-9][\d]|1[\d]{2}|2[0-4][\d]|25[0-5])(:(6553[0-5]|655[0-2][\d]|65[0-4][\d]{2}|6[0-4][\d]{3}|5[\d]{4}|[\d][\d]{0,3}))?(,(([\d]|[1-9][\d]|1[\d]{2}|2[0-4][\d]|25[0-5])\.){3}([\d]|[1-9][\d]|1[\d]{2}|2[0-4][\d]|25[0-5])(:(6553[0-5]|655[0-2][\d]|65[0-4][\d]{2}|6[0-4][\d]{3}|5[\d]{4}|[\d][\d]{0,3}))?)*$
- type: text
- value: ''
- weight: 60
- nsx_password:
- description: Password for Administrator
- label: NSX password
- regex:
- error: Empty password
- source: \S
- type: password
- value: ''
- weight: 30
- nsx_username:
- description: NSX administrator's username
- label: NSX username
- regex:
- error: Empty username
- source: \S
- type: text
- value: admin
- weight: 20
- packages_url:
- description: URL to NSX specific packages
- label: URL to NSX bits
- regex:
- error: Invalid URL, specify valid HTTP/HTTPS URL with IPv4 address (e.g.
- http://10.20.0.2/nsx)
- source: ^https?://(([\d]|[1-9][\d]|1[\d]{2}|2[0-4][\d]|25[0-5])\.){3}([\d]|[1-9][\d]|1[\d]{2}|2[0-4][\d]|25[0-5])(:(6553[0-5]|655[0-2][\d]|65[0-4][\d]{2}|6[0-4][\d]{3}|5[\d]{4}|[\d][\d]{0,3}))?(/.*)?$
- type: text
- value: ''
- weight: 70
- replication_mode:
- description: ''
- label: NSX cluster has Service nodes
- type: checkbox
- value: true
- weight: 90
- transport_zone_uuid:
- description: UUID of the pre-existing default NSX Transport zone
- label: Transport zone UUID
- regex:
- error: Invalid transport zone UUID
- source: '[a-f\d]{8}-[a-f\d]{4}-[a-f\d]{4}-[a-f\d]{4}-[a-f\d]{12}'
- type: text
- value: ''
- weight: 40
- provision:
- metadata:
- label: Provision
- restrictions:
- - action: hide
- condition: not ('experimental' in version:feature_groups)
- weight: 80
- method:
- description: Which provision method to use for this cluster.
- label: Provision method
- type: radio
- value: cobbler
- values:
- - data: image
- description: Copying pre-built images on a disk.
- label: Image
- - data: cobbler
- description: Install from scratch using anaconda or debian-installer.
- label: Classic (use anaconda or debian-installer)
- public_network_assignment:
- assign_to_all_nodes:
- description: When disabled, public network will be assigned to controllers
- and zabbix-server only
- label: Assign public network to all nodes
- type: checkbox
- value: false
- weight: 10
- metadata:
- label: Public network assignment
- restrictions:
- - action: hide
- condition: cluster:net_provider != 'neutron'
- weight: 50
- storage:
- ephemeral_ceph:
- description: Configures Nova to store ephemeral volumes in RBD. This works
- best if Ceph is enabled for volumes and images, too. Enables live migration
- of all types of Ceph backed VMs (without this option, live migration will
- only work with VMs launched from Cinder volumes).
- label: Ceph RBD for ephemeral volumes (Nova)
- restrictions:
- - settings:common.libvirt_type.value == 'vcenter'
- type: checkbox
- value: true
- weight: 75
- images_ceph:
- description: Configures Glance to use the Ceph RBD backend to store images.
- If enabled, this option will prevent Swift from installing.
- label: Ceph RBD for images (Glance)
- type: checkbox
- value: true
- weight: 30
- images_vcenter:
- description: Configures Glance to use the vCenter/ESXi backend to store images.
- If enabled, this option will prevent Swift from installing.
- label: VMWare vCenter/ESXi datastore for images (Glance)
- restrictions:
- - settings:common.libvirt_type.value != 'vcenter'
- type: checkbox
- value: false
- weight: 35
- iser:
- description: 'High performance block storage: Cinder volumes over iSER protocol
- (iSCSI over RDMA). This feature requires SR-IOV capabilities in the NIC,
- and will use a dedicated virtual function for the storage network.'
- label: iSER protocol for volumes (Cinder)
- restrictions:
- - settings:storage.volumes_lvm.value != true or settings:common.libvirt_type.value
- != 'kvm'
- type: checkbox
- value: false
- weight: 11
- metadata:
- label: Storage
- weight: 60
- objects_ceph:
- description: Configures RadosGW front end for Ceph RBD. This exposes S3 and
- Swift API Interfaces. If enabled, this option will prevent Swift from installing.
- label: Ceph RadosGW for objects (Swift API)
- restrictions:
- - settings:storage.images_ceph.value == false
- type: checkbox
- value: false
- weight: 80
- osd_pool_size:
- description: Configures the default number of object replicas in Ceph. This
- number must be equal to or lower than the number of deployed 'Storage -
- Ceph OSD' nodes.
- label: Ceph object replication factor
- regex:
- error: Invalid number
- source: ^[1-9]\d*$
- restrictions:
- - settings:common.libvirt_type.value == 'vcenter'
- type: text
- value: '2'
- weight: 85
- vc_datacenter:
- description: Inventory path to a datacenter. If you want to use ESXi host
- as datastore, it should be "ha-datacenter".
- label: Datacenter name
- regex:
- error: Empty datacenter
- source: \S
- restrictions:
- - action: hide
- condition: settings:storage.images_vcenter.value == false or settings:common.libvirt_type.value
- != 'vcenter'
- type: text
- value: ''
- weight: 65
- vc_datastore:
- description: Datastore associated with the datacenter.
- label: Datastore name
- regex:
- error: Empty datastore
- source: \S
- restrictions:
- - action: hide
- condition: settings:storage.images_vcenter.value == false or settings:common.libvirt_type.value
- != 'vcenter'
- type: text
- value: ''
- weight: 60
- vc_host:
- description: IP Address of vCenter/ESXi
- label: vCenter/ESXi IP
- regex:
- error: Specify valid IPv4 address
- source: ^(([\d]|[1-9][\d]|1[\d]{2}|2[0-4][\d]|25[0-5])\.){3}([\d]|[1-9][\d]|1[\d]{2}|2[0-4][\d]|25[0-5])$
- restrictions:
- - action: hide
- condition: settings:storage.images_vcenter.value == false or settings:common.libvirt_type.value
- != 'vcenter'
- type: text
- value: ''
- weight: 45
- vc_image_dir:
- description: The name of the directory where the glance images will be stored
- in the VMware datastore.
- label: Datastore Images directory
- regex:
- error: Empty images directory
- source: \S
- restrictions:
- - action: hide
- condition: settings:storage.images_vcenter.value == false or settings:common.libvirt_type.value
- != 'vcenter'
- type: text
- value: /openstack_glance
- weight: 70
- vc_password:
- description: vCenter/ESXi admin password
- label: Password
- regex:
- error: Empty password
- source: \S
- restrictions:
- - action: hide
- condition: settings:storage.images_vcenter.value == false or settings:common.libvirt_type.value
- != 'vcenter'
- type: password
- value: ''
- weight: 55
- vc_user:
- description: vCenter/ESXi admin username
- label: Username
- regex:
- error: Empty username
- source: \S
- restrictions:
- - action: hide
- condition: settings:storage.images_vcenter.value == false or settings:common.libvirt_type.value
- != 'vcenter'
- type: text
- value: ''
- weight: 50
- volumes_ceph:
- description: Configures Cinder to store volumes in Ceph RBD images.
- label: Ceph RBD for volumes (Cinder)
- restrictions:
- - settings:storage.volumes_lvm.value == true or settings:common.libvirt_type.value
- == 'vcenter'
- type: checkbox
- value: true
- weight: 20
- volumes_lvm:
- description: Requires at least one Storage - Cinder LVM node.
- label: Cinder LVM over iSCSI for volumes
- restrictions:
- - settings:storage.volumes_ceph.value == true
- type: checkbox
- value: false
- weight: 10
- volumes_vmdk:
- description: Configures Cinder to store volumes via VMware vCenter.
- label: VMware vCenter for volumes (Cinder)
- restrictions:
- - settings:common.libvirt_type.value != 'vcenter' or settings:storage.volumes_lvm.value
- == true
- type: checkbox
- value: false
- weight: 15
- syslog:
- metadata:
- label: Syslog
- weight: 50
- syslog_port:
- description: Remote syslog port
- label: Port
- regex:
- error: Invalid Syslog port
- source: ^([1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])$
- type: text
- value: '514'
- weight: 20
- syslog_server:
- description: Remote syslog hostname
- label: Hostname
- type: text
- value: ''
- weight: 10
- syslog_transport:
- label: Syslog transport protocol
- type: radio
- value: tcp
- values:
- - data: udp
- description: ''
- label: UDP
- - data: tcp
- description: ''
- label: TCP
- weight: 30
- vcenter:
- cluster:
- description: vCenter cluster name. If you have multiple clusters, use comma
- to separate names
- label: Cluster
- regex:
- error: Invalid cluster list
- source: ^([^,\ ]+([\ ]*[^,\ ])*)(,[^,\ ]+([\ ]*[^,\ ])*)*$
- type: text
- value: ''
- weight: 40
- datastore_regex:
- description: The Datastore regexp setting specifies the data stores to use
- with Compute. For example, "nas.*". If you want to use all available datastores,
- leave this field blank
- label: Datastore regexp
- regex:
- error: Invalid datastore regexp
- source: ^(\S.*\S|\S|)$
- type: text
- value: ''
- weight: 50
- host_ip:
- description: IP Address of vCenter
- label: vCenter IP
- regex:
- error: Specify valid IPv4 address
- source: ^(([\d]|[1-9][\d]|1[\d]{2}|2[0-4][\d]|25[0-5])\.){3}([\d]|[1-9][\d]|1[\d]{2}|2[0-4][\d]|25[0-5])$
- type: text
- value: ''
- weight: 10
- metadata:
- label: vCenter
- restrictions:
- - action: hide
- condition: settings:common.libvirt_type.value != 'vcenter'
- weight: 20
- use_vcenter:
- description: ''
- label: ''
- type: hidden
- value: true
- weight: 5
- vc_password:
- description: vCenter admin password
- label: Password
- regex:
- error: Empty password
- source: \S
- type: password
- value: admin
- weight: 30
- vc_user:
- description: vCenter admin username
- label: Username
- regex:
- error: Empty username
- source: \S
- type: text
- value: admin
- weight: 20
- vlan_interface:
- description: Physical ESXi host ethernet adapter for VLAN networking (e.g.
- vmnic1). If empty "vmnic0" is used by default
- label: ESXi VLAN interface
- restrictions:
- - action: hide
- condition: cluster:net_provider != 'nova_network' or networking_parameters:net_manager
- != 'VlanManager'
- type: text
- value: ''
- weight: 60
- zabbix:
- metadata:
- label: Zabbix Access
- restrictions:
- - action: hide
- condition: not ('experimental' in version:feature_groups)
- weight: 70
- password:
- description: Password for Zabbix Administrator
- label: password
- type: password
- value: zabbix
- weight: 20
- username:
- description: Username for Zabbix Administrator
- label: username
- type: text
- value: admin
- weight: 10
\ No newline at end of file
+++ /dev/null
-title: Deployment Environment Adapter (DEA)
-# DEA API version supported
-version:
-created:
-comment: Config for LF POD1 - HA deployment with Ceph
-environment:
- name: opnfv_virt
- mode: ha
- net_segment_type: vlan
-wanted_release: Juno on Ubuntu 12.04.4
-nodes:
-- id: 1
- interfaces: interfaces_1
- transformations: transformations_1
- role: ceph-osd,controller
-- id: 2
- interfaces: interfaces_1
- transformations: transformations_1
- role: ceph-osd,controller
-- id: 3
- interfaces: interfaces_1
- transformations: transformations_1
- role: ceph-osd,controller
-- id: 4
- interfaces: interfaces_1
- transformations: transformations_2
- role: ceph-osd,compute
-- id: 5
- interfaces: interfaces_1
- transformations: transformations_2
- role: ceph-osd,compute
-opnfv:
- hosts:
- - name:
- address:
- fqdn:
-fuel:
- ADMIN_NETWORK:
- ipaddress: 10.20.0.2
- netmask: 255.255.0.0
- dhcp_pool_start: 10.20.0.3
- dhcp_pool_end: 10.20.0.254
- DNS_UPSTREAM: 8.8.8.8
- DNS_DOMAIN: domain.tld
- DNS_SEARCH: domain.tld
- FUEL_ACCESS:
- user: admin
- password: admin
- HOSTNAME: opnfv
- NTP1: 0.pool.ntp.org
- NTP2: 1.pool.ntp.org
- NTP3: 2.pool.ntp.org
-interfaces_1:
- eth0:
- - public
- eth1:
- - fuelweb_admin
- - management
- - storage
- - private
-transformations_1:
- transformations:
- - action: add-br
- name: br-eth0
- - action: add-port
- bridge: br-eth0
- name: eth0
- - action: add-br
- name: br-eth1
- - action: add-port
- bridge: br-eth1
- name: eth1
- - action: add-br
- name: br-ex
- - action: add-br
- name: br-mgmt
- - action: add-br
- name: br-storage
- - action: add-br
- name: br-fw-admin
- - action: add-patch
- bridges:
- - br-eth1
- - br-storage
- tags:
- - 301
- - 0
- vlan_ids:
- - 301
- - 0
- - action: add-patch
- bridges:
- - br-eth1
- - br-mgmt
- tags:
- - 300
- - 0
- vlan_ids:
- - 300
- - 0
- - action: add-patch
- bridges:
- - br-eth1
- - br-fw-admin
- trunks:
- - 0
- - action: add-patch
- bridges:
- - br-eth0
- - br-ex
- trunks:
- - 0
- - action: add-br
- name: br-prv
- - action: add-patch
- bridges:
- - br-eth1
- - br-prv
-transformations_2:
- transformations:
- - action: add-br
- name: br-eth0
- - action: add-port
- bridge: br-eth0
- name: eth0
- - action: add-br
- name: br-eth1
- - action: add-port
- bridge: br-eth1
- name: eth1
- - action: add-br
- name: br-mgmt
- - action: add-br
- name: br-storage
- - action: add-br
- name: br-fw-admin
- - action: add-patch
- bridges:
- - br-eth1
- - br-storage
- tags:
- - 301
- - 0
- vlan_ids:
- - 301
- - 0
- - action: add-patch
- bridges:
- - br-eth1
- - br-mgmt
- tags:
- - 300
- - 0
- vlan_ids:
- - 300
- - 0
- - action: add-patch
- bridges:
- - br-eth1
- - br-fw-admin
- trunks:
- - 0
- - action: add-br
- name: br-prv
- - action: add-patch
- bridges:
- - br-eth1
- - br-prv
-network:
- networking_parameters:
- base_mac: fa:16:3e:00:00:00
- dns_nameservers:
- - 8.8.4.4
- - 8.8.8.8
- floating_ranges:
- - - 172.30.9.80
- - 172.30.9.89
- gre_id_range:
- - 2
- - 65535
- internal_cidr: 192.168.111.0/24
- internal_gateway: 192.168.111.1
- net_l23_provider: ovs
- segmentation_type: vlan
- vlan_range:
- - 1000
- - 1010
- networks:
- - cidr: 172.30.9.0/24
- gateway: 172.30.9.1
- ip_ranges:
- - - 172.30.9.70
- - 172.30.9.79
- meta:
- assign_vip: true
- cidr: 172.16.0.0/24
- configurable: true
- floating_range_var: floating_ranges
- ip_range:
- - 172.16.0.2
- - 172.16.0.126
- map_priority: 1
- name: public
- notation: ip_ranges
- render_addr_mask: public
- render_type: null
- use_gateway: true
- vlan_start: null
- name: public
- vlan_start: null
- - cidr: 192.168.0.0/24
- gateway: null
- ip_ranges:
- - - 192.168.0.2
- - 192.168.0.254
- meta:
- assign_vip: true
- cidr: 192.168.0.0/24
- configurable: true
- map_priority: 2
- name: management
- notation: cidr
- render_addr_mask: internal
- render_type: cidr
- use_gateway: false
- vlan_start: 101
- name: management
- vlan_start: 300
- - cidr: 192.168.1.0/24
- gateway: null
- ip_ranges:
- - - 192.168.1.2
- - 192.168.1.254
- meta:
- assign_vip: false
- cidr: 192.168.1.0/24
- configurable: true
- map_priority: 2
- name: storage
- notation: cidr
- render_addr_mask: storage
- render_type: cidr
- use_gateway: false
- vlan_start: 102
- name: storage
- vlan_start: 301
- - cidr: null
- gateway: null
- ip_ranges: []
- meta:
- assign_vip: false
- configurable: false
- map_priority: 2
- name: private
- neutron_vlan_range: true
- notation: null
- render_addr_mask: null
- render_type: null
- seg_type: vlan
- use_gateway: false
- vlan_start: null
- name: private
- vlan_start: null
- - cidr: 10.20.0.0/16
- gateway: null
- ip_ranges:
- - - 10.20.0.3
- - 10.20.255.254
- meta:
- assign_vip: false
- configurable: false
- map_priority: 0
- notation: ip_ranges
- render_addr_mask: null
- render_type: null
- unmovable: true
- use_gateway: true
- name: fuelweb_admin
- vlan_start: null
-settings:
- editable:
- access:
- email:
- description: Email address for Administrator
- label: email
- type: text
- value: admin@localhost
- weight: 40
- metadata:
- label: Access
- weight: 10
- password:
- description: Password for Administrator
- label: password
- type: password
- value: admin
- weight: 20
- tenant:
- description: Tenant (project) name for Administrator
- label: tenant
- regex:
- error: Invalid tenant name
- source: ^(?!services$)(?!nova$)(?!glance$)(?!keystone$)(?!neutron$)(?!cinder$)(?!swift$)(?!ceph$)(?![Gg]uest$).*
- type: text
- value: admin
- weight: 30
- user:
- description: Username for Administrator
- label: username
- regex:
- error: Invalid username
- source: ^(?!services$)(?!nova$)(?!glance$)(?!keystone$)(?!neutron$)(?!cinder$)(?!swift$)(?!ceph$)(?![Gg]uest$).*
- type: text
- value: admin
- weight: 10
- additional_components:
- ceilometer:
- description: If selected, Ceilometer component will be installed
- label: Install Ceilometer
- type: checkbox
- value: false
- weight: 40
- heat:
- description: ''
- label: ''
- type: hidden
- value: true
- weight: 30
- metadata:
- label: Additional Components
- weight: 20
- murano:
- description: If selected, Murano component will be installed
- label: Install Murano
- restrictions:
- - cluster:net_provider != 'neutron'
- type: checkbox
- value: false
- weight: 20
- sahara:
- description: If selected, Sahara component will be installed
- label: Install Sahara
- type: checkbox
- value: false
- weight: 10
- common:
- auth_key:
- description: Public key(s) to include in authorized_keys on deployed nodes
- label: Public Key
- type: text
- value: ''
- weight: 70
- auto_assign_floating_ip:
- description: If selected, OpenStack will automatically assign a floating IP
- to a new instance
- label: Auto assign floating IP
- restrictions:
- - cluster:net_provider == 'neutron'
- type: checkbox
- value: false
- weight: 40
- compute_scheduler_driver:
- label: Scheduler driver
- type: radio
- value: nova.scheduler.filter_scheduler.FilterScheduler
- values:
- - data: nova.scheduler.filter_scheduler.FilterScheduler
- description: Currently the most advanced OpenStack scheduler. See the OpenStack
- documentation for details.
- label: Filter scheduler
- - data: nova.scheduler.simple.SimpleScheduler
- description: This is 'naive' scheduler which tries to find the least loaded
- host
- label: Simple scheduler
- weight: 40
- debug:
- description: Debug logging mode provides more information, but requires more
- disk space.
- label: OpenStack debug logging
- type: checkbox
- value: false
- weight: 20
- disable_offload:
- description: If set, generic segmentation offload (gso) and generic receive
- offload (gro) on physical nics will be disabled. See ethtool man.
- label: Disable generic offload on physical nics
- restrictions:
- - action: hide
- condition: cluster:net_provider == 'neutron' and networking_parameters:segmentation_type
- == 'gre'
- type: checkbox
- value: true
- weight: 80
- libvirt_type:
- label: Hypervisor type
- type: radio
- value: kvm
- values:
- - data: kvm
- description: Choose this type of hypervisor if you run OpenStack on hardware
- label: KVM
- restrictions:
- - settings:common.libvirt_type.value == 'vcenter'
- - data: qemu
- description: Choose this type of hypervisor if you run OpenStack on virtual
- hosts.
- label: QEMU
- restrictions:
- - settings:common.libvirt_type.value == 'vcenter'
- - data: vcenter
- description: Choose this type of hypervisor if you run OpenStack in a vCenter
- environment.
- label: vCenter
- restrictions:
- - settings:common.libvirt_type.value != 'vcenter' or cluster:net_provider
- == 'neutron'
- weight: 30
- metadata:
- label: Common
- weight: 30
- nova_quota:
- description: Quotas are used to limit CPU and memory usage for tenants. Enabling
- quotas will increase load on the Nova database.
- label: Nova quotas
- type: checkbox
- value: false
- weight: 25
- resume_guests_state_on_host_boot:
- description: Whether to resume previous guests state when the host reboots.
- If enabled, this option causes guests assigned to the host to resume their
- previous state. If the guest was running a restart will be attempted when
- nova-compute starts. If the guest was not running previously, a restart
- will not be attempted.
- label: Resume guests state on host boot
- type: checkbox
- value: true
- weight: 60
- use_cow_images:
- description: For most cases you will want qcow format. If it's disabled, raw
- image format will be used to run VMs. OpenStack with raw format currently
- does not support snapshotting.
- label: Use qcow format for images
- type: checkbox
- value: true
- weight: 50
- corosync:
- group:
- description: ''
- label: Group
- type: text
- value: 226.94.1.1
- weight: 10
- metadata:
- label: Corosync
- restrictions:
- - action: hide
- condition: 'true'
- weight: 50
- port:
- description: ''
- label: Port
- type: text
- value: '12000'
- weight: 20
- verified:
- description: Set True only if multicast is configured correctly on router.
- label: Need to pass network verification.
- type: checkbox
- value: false
- weight: 10
- external_dns:
- dns_list:
- description: List of upstream DNS servers, separated by comma
- label: DNS list
- type: text
- value: 8.8.8.8, 8.8.4.4
- weight: 10
- metadata:
- label: Upstream DNS
- weight: 90
- external_ntp:
- metadata:
- label: Upstream NTP
- weight: 100
- ntp_list:
- description: List of upstream NTP servers, separated by comma
- label: NTP servers list
- type: text
- value: 0.pool.ntp.org, 1.pool.ntp.org
- weight: 10
- kernel_params:
- kernel:
- description: Default kernel parameters
- label: Initial parameters
- type: text
- value: console=ttyS0,9600 console=tty0 rootdelay=90 nomodeset
- weight: 45
- metadata:
- label: Kernel parameters
- weight: 40
- neutron_mellanox:
- metadata:
- enabled: true
- label: Mellanox Neutron components
- toggleable: false
- weight: 50
- plugin:
- label: Mellanox drivers and SR-IOV plugin
- type: radio
- value: disabled
- values:
- - data: disabled
- description: If selected, Mellanox drivers, Neutron and Cinder plugin will
- not be installed.
- label: Mellanox drivers and plugins disabled
- restrictions:
- - settings:storage.iser.value == true
- - data: drivers_only
- description: If selected, Mellanox Ethernet drivers will be installed to
- support networking over Mellanox NIC. Mellanox Neutron plugin will not
- be installed.
- label: Install only Mellanox drivers
- restrictions:
- - settings:common.libvirt_type.value != 'kvm'
- - data: ethernet
- description: If selected, both Mellanox Ethernet drivers and Mellanox network
- acceleration (Neutron) plugin will be installed.
- label: Install Mellanox drivers and SR-IOV plugin
- restrictions:
- - settings:common.libvirt_type.value != 'kvm' or not (cluster:net_provider
- == 'neutron' and networking_parameters:segmentation_type == 'vlan')
- weight: 60
- vf_num:
- description: Note that one virtual function will be reserved to the storage
- network, in case of choosing iSER.
- label: Number of virtual NICs
- restrictions:
- - settings:neutron_mellanox.plugin.value != 'ethernet'
- type: text
- value: '16'
- weight: 70
- nsx_plugin:
- connector_type:
- description: Default network transport type to use
- label: NSX connector type
- type: select
- value: stt
- values:
- - data: gre
- label: GRE
- - data: ipsec_gre
- label: GRE over IPSec
- - data: stt
- label: STT
- - data: ipsec_stt
- label: STT over IPSec
- - data: bridge
- label: Bridge
- weight: 80
- l3_gw_service_uuid:
- description: UUID for the default L3 gateway service to use with this cluster
- label: L3 service UUID
- regex:
- error: Invalid L3 gateway service UUID
- source: '[a-f\d]{8}-[a-f\d]{4}-[a-f\d]{4}-[a-f\d]{4}-[a-f\d]{12}'
- type: text
- value: ''
- weight: 50
- metadata:
- enabled: false
- label: VMware NSX
- restrictions:
- - action: hide
- condition: cluster:net_provider != 'neutron' or networking_parameters:net_l23_provider
- != 'nsx'
- weight: 20
- nsx_controllers:
- description: One or more IPv4[:port] addresses of NSX controller node, separated
- by comma (e.g. 10.30.30.2,192.168.110.254:443)
- label: NSX controller endpoint
- regex:
- error: Invalid controller endpoints, specify valid IPv4[:port] pair
- source: ^(([\d]|[1-9][\d]|1[\d]{2}|2[0-4][\d]|25[0-5])\.){3}([\d]|[1-9][\d]|1[\d]{2}|2[0-4][\d]|25[0-5])(:(6553[0-5]|655[0-2][\d]|65[0-4][\d]{2}|6[0-4][\d]{3}|5[\d]{4}|[\d][\d]{0,3}))?(,(([\d]|[1-9][\d]|1[\d]{2}|2[0-4][\d]|25[0-5])\.){3}([\d]|[1-9][\d]|1[\d]{2}|2[0-4][\d]|25[0-5])(:(6553[0-5]|655[0-2][\d]|65[0-4][\d]{2}|6[0-4][\d]{3}|5[\d]{4}|[\d][\d]{0,3}))?)*$
- type: text
- value: ''
- weight: 60
- nsx_password:
- description: Password for Administrator
- label: NSX password
- regex:
- error: Empty password
- source: \S
- type: password
- value: ''
- weight: 30
- nsx_username:
- description: NSX administrator's username
- label: NSX username
- regex:
- error: Empty username
- source: \S
- type: text
- value: admin
- weight: 20
- packages_url:
- description: URL to NSX specific packages
- label: URL to NSX bits
- regex:
- error: Invalid URL, specify valid HTTP/HTTPS URL with IPv4 address (e.g.
- http://10.20.0.2/nsx)
- source: ^https?://(([\d]|[1-9][\d]|1[\d]{2}|2[0-4][\d]|25[0-5])\.){3}([\d]|[1-9][\d]|1[\d]{2}|2[0-4][\d]|25[0-5])(:(6553[0-5]|655[0-2][\d]|65[0-4][\d]{2}|6[0-4][\d]{3}|5[\d]{4}|[\d][\d]{0,3}))?(/.*)?$
- type: text
- value: ''
- weight: 70
- replication_mode:
- description: ''
- label: NSX cluster has Service nodes
- type: checkbox
- value: true
- weight: 90
- transport_zone_uuid:
- description: UUID of the pre-existing default NSX Transport zone
- label: Transport zone UUID
- regex:
- error: Invalid transport zone UUID
- source: '[a-f\d]{8}-[a-f\d]{4}-[a-f\d]{4}-[a-f\d]{4}-[a-f\d]{12}'
- type: text
- value: ''
- weight: 40
- provision:
- metadata:
- label: Provision
- restrictions:
- - action: hide
- condition: not ('experimental' in version:feature_groups)
- weight: 80
- method:
- description: Which provision method to use for this cluster.
- label: Provision method
- type: radio
- value: cobbler
- values:
- - data: image
- description: Copying pre-built images on a disk.
- label: Image
- - data: cobbler
- description: Install from scratch using anaconda or debian-installer.
- label: Classic (use anaconda or debian-installer)
- public_network_assignment:
- assign_to_all_nodes:
- description: When disabled, public network will be assigned to controllers
- and zabbix-server only
- label: Assign public network to all nodes
- type: checkbox
- value: false
- weight: 10
- metadata:
- label: Public network assignment
- restrictions:
- - action: hide
- condition: cluster:net_provider != 'neutron'
- weight: 50
- storage:
- ephemeral_ceph:
- description: Configures Nova to store ephemeral volumes in RBD. This works
- best if Ceph is enabled for volumes and images, too. Enables live migration
- of all types of Ceph backed VMs (without this option, live migration will
- only work with VMs launched from Cinder volumes).
- label: Ceph RBD for ephemeral volumes (Nova)
- restrictions:
- - settings:common.libvirt_type.value == 'vcenter'
- type: checkbox
- value: true
- weight: 75
- images_ceph:
- description: Configures Glance to use the Ceph RBD backend to store images.
- If enabled, this option will prevent Swift from installing.
- label: Ceph RBD for images (Glance)
- type: checkbox
- value: true
- weight: 30
- images_vcenter:
- description: Configures Glance to use the vCenter/ESXi backend to store images.
- If enabled, this option will prevent Swift from installing.
- label: VMWare vCenter/ESXi datastore for images (Glance)
- restrictions:
- - settings:common.libvirt_type.value != 'vcenter'
- type: checkbox
- value: false
- weight: 35
- iser:
- description: 'High performance block storage: Cinder volumes over iSER protocol
- (iSCSI over RDMA). This feature requires SR-IOV capabilities in the NIC,
- and will use a dedicated virtual function for the storage network.'
- label: iSER protocol for volumes (Cinder)
- restrictions:
- - settings:storage.volumes_lvm.value != true or settings:common.libvirt_type.value
- != 'kvm'
- type: checkbox
- value: false
- weight: 11
- metadata:
- label: Storage
- weight: 60
- objects_ceph:
- description: Configures RadosGW front end for Ceph RBD. This exposes S3 and
- Swift API Interfaces. If enabled, this option will prevent Swift from installing.
- label: Ceph RadosGW for objects (Swift API)
- restrictions:
- - settings:storage.images_ceph.value == false
- type: checkbox
- value: false
- weight: 80
- osd_pool_size:
- description: Configures the default number of object replicas in Ceph. This
- number must be equal to or lower than the number of deployed 'Storage -
- Ceph OSD' nodes.
- label: Ceph object replication factor
- regex:
- error: Invalid number
- source: ^[1-9]\d*$
- restrictions:
- - settings:common.libvirt_type.value == 'vcenter'
- type: text
- value: '2'
- weight: 85
- vc_datacenter:
- description: Inventory path to a datacenter. If you want to use ESXi host
- as datastore, it should be "ha-datacenter".
- label: Datacenter name
- regex:
- error: Empty datacenter
- source: \S
- restrictions:
- - action: hide
- condition: settings:storage.images_vcenter.value == false or settings:common.libvirt_type.value
- != 'vcenter'
- type: text
- value: ''
- weight: 65
- vc_datastore:
- description: Datastore associated with the datacenter.
- label: Datastore name
- regex:
- error: Empty datastore
- source: \S
- restrictions:
- - action: hide
- condition: settings:storage.images_vcenter.value == false or settings:common.libvirt_type.value
- != 'vcenter'
- type: text
- value: ''
- weight: 60
- vc_host:
- description: IP Address of vCenter/ESXi
- label: vCenter/ESXi IP
- regex:
- error: Specify valid IPv4 address
- source: ^(([\d]|[1-9][\d]|1[\d]{2}|2[0-4][\d]|25[0-5])\.){3}([\d]|[1-9][\d]|1[\d]{2}|2[0-4][\d]|25[0-5])$
- restrictions:
- - action: hide
- condition: settings:storage.images_vcenter.value == false or settings:common.libvirt_type.value
- != 'vcenter'
- type: text
- value: ''
- weight: 45
- vc_image_dir:
- description: The name of the directory where the glance images will be stored
- in the VMware datastore.
- label: Datastore Images directory
- regex:
- error: Empty images directory
- source: \S
- restrictions:
- - action: hide
- condition: settings:storage.images_vcenter.value == false or settings:common.libvirt_type.value
- != 'vcenter'
- type: text
- value: /openstack_glance
- weight: 70
- vc_password:
- description: vCenter/ESXi admin password
- label: Password
- regex:
- error: Empty password
- source: \S
- restrictions:
- - action: hide
- condition: settings:storage.images_vcenter.value == false or settings:common.libvirt_type.value
- != 'vcenter'
- type: password
- value: ''
- weight: 55
- vc_user:
- description: vCenter/ESXi admin username
- label: Username
- regex:
- error: Empty username
- source: \S
- restrictions:
- - action: hide
- condition: settings:storage.images_vcenter.value == false or settings:common.libvirt_type.value
- != 'vcenter'
- type: text
- value: ''
- weight: 50
- volumes_ceph:
- description: Configures Cinder to store volumes in Ceph RBD images.
- label: Ceph RBD for volumes (Cinder)
- restrictions:
- - settings:storage.volumes_lvm.value == true or settings:common.libvirt_type.value
- == 'vcenter'
- type: checkbox
- value: true
- weight: 20
- volumes_lvm:
- description: Requires at least one Storage - Cinder LVM node.
- label: Cinder LVM over iSCSI for volumes
- restrictions:
- - settings:storage.volumes_ceph.value == true
- type: checkbox
- value: false
- weight: 10
- volumes_vmdk:
- description: Configures Cinder to store volumes via VMware vCenter.
- label: VMware vCenter for volumes (Cinder)
- restrictions:
- - settings:common.libvirt_type.value != 'vcenter' or settings:storage.volumes_lvm.value
- == true
- type: checkbox
- value: false
- weight: 15
- syslog:
- metadata:
- label: Syslog
- weight: 50
- syslog_port:
- description: Remote syslog port
- label: Port
- regex:
- error: Invalid Syslog port
- source: ^([1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])$
- type: text
- value: '514'
- weight: 20
- syslog_server:
- description: Remote syslog hostname
- label: Hostname
- type: text
- value: ''
- weight: 10
- syslog_transport:
- label: Syslog transport protocol
- type: radio
- value: tcp
- values:
- - data: udp
- description: ''
- label: UDP
- - data: tcp
- description: ''
- label: TCP
- weight: 30
- vcenter:
- cluster:
- description: vCenter cluster name. If you have multiple clusters, use comma
- to separate names
- label: Cluster
- regex:
- error: Invalid cluster list
- source: ^([^,\ ]+([\ ]*[^,\ ])*)(,[^,\ ]+([\ ]*[^,\ ])*)*$
- type: text
- value: ''
- weight: 40
- datastore_regex:
- description: The Datastore regexp setting specifies the data stores to use
- with Compute. For example, "nas.*". If you want to use all available datastores,
- leave this field blank
- label: Datastore regexp
- regex:
- error: Invalid datastore regexp
- source: ^(\S.*\S|\S|)$
- type: text
- value: ''
- weight: 50
- host_ip:
- description: IP Address of vCenter
- label: vCenter IP
- regex:
- error: Specify valid IPv4 address
- source: ^(([\d]|[1-9][\d]|1[\d]{2}|2[0-4][\d]|25[0-5])\.){3}([\d]|[1-9][\d]|1[\d]{2}|2[0-4][\d]|25[0-5])$
- type: text
- value: ''
- weight: 10
- metadata:
- label: vCenter
- restrictions:
- - action: hide
- condition: settings:common.libvirt_type.value != 'vcenter'
- weight: 20
- use_vcenter:
- description: ''
- label: ''
- type: hidden
- value: true
- weight: 5
- vc_password:
- description: vCenter admin password
- label: Password
- regex:
- error: Empty password
- source: \S
- type: password
- value: admin
- weight: 30
- vc_user:
- description: vCenter admin username
- label: Username
- regex:
- error: Empty username
- source: \S
- type: text
- value: admin
- weight: 20
- vlan_interface:
- description: Physical ESXi host ethernet adapter for VLAN networking (e.g.
- vmnic1). If empty "vmnic0" is used by default
- label: ESXi VLAN interface
- restrictions:
- - action: hide
- condition: cluster:net_provider != 'nova_network' or networking_parameters:net_manager
- != 'VlanManager'
- type: text
- value: ''
- weight: 60
- zabbix:
- metadata:
- label: Zabbix Access
- restrictions:
- - action: hide
- condition: not ('experimental' in version:feature_groups)
- weight: 70
- password:
- description: Password for Zabbix Administrator
- label: password
- type: password
- value: zabbix
- weight: 20
- username:
- description: Username for Zabbix Administrator
- label: username
- type: text
- value: admin
- weight: 10
\ No newline at end of file
+++ /dev/null
-title: Deployment Hardware Adapter (DHA)
-# DHA API version supported
-version:
-created:
-comment: Config for LF POD1
-
-# Adapter to use for this definition
-adapter: ipmi
-
-# Node list.
-# Mandatory property is id, all other properties are adapter specific.
-
-nodes:
-- id: 1
- pxeMac: 00:25:b5:b0:00:ef
- ipmiIp: 172.30.8.69
- ipmiUser: admin
- ipmiPass: octopus
-- id: 2
- pxeMac: 00:25:b5:b0:00:cf
- ipmiIp: 172.30.8.78
- ipmiUser: admin
- ipmiPass: octopus
-- id: 3
- pxeMac: 00:25:b5:b0:00:8f
- ipmiIp: 172.30.8.68
- ipmiUser: admin
- ipmiPass: octopus
-- id: 4
- pxeMac: 00:25:b5:b0:00:6f
- ipmiIp: 172.30.8.77
- ipmiUser: admin
- ipmiPass: octopus
-- id: 5
- pxeMac: 00:25:b5:b0:00:4f
- ipmiIp: 172.30.8.67
- ipmiUser: admin
- ipmiPass: octopus
-# Adding the Fuel node as node id 6 which may not be correct - please
-# adjust as needed.
-- id: 6
- libvirtName: fuel-opnfv
- libvirtTemplate: templates/hardware_environment/vms/fuel.xml
- isFuel: yes
- username: root
- password: r00tme
-
-disks:
- fuel: 30G
\ No newline at end of file
+++ /dev/null
-title: Deployment Environment Adapter (DEA)
-# DEA API version supported
-version:
-created:
-comment: Config for LF POD1 - Multinode deployment with Ceph
-environment:
- name: opnfv_virt
- mode: multinode
- net_segment_type: vlan
-wanted_release: Juno on Ubuntu 12.04.4
-nodes:
-- id: 1
- interfaces: interfaces_1
- transformations: transformations_1
- role: ceph-osd,controller
-- id: 2
- interfaces: interfaces_1
- transformations: transformations_2
- role: ceph-osd,compute
-- id: 3
- interfaces: interfaces_1
- transformations: transformations_2
- role: ceph-osd,compute
-- id: 4
- interfaces: interfaces_1
- transformations: transformations_2
- role: ceph-osd,compute
-- id: 5
- interfaces: interfaces_1
- transformations: transformations_2
- role: ceph-osd,compute
-opnfv:
- hosts:
- - name:
- address:
- fqdn:
-fuel:
- ADMIN_NETWORK:
- ipaddress: 10.20.0.2
- netmask: 255.255.0.0
- dhcp_pool_start: 10.20.0.3
- dhcp_pool_end: 10.20.0.254
- DNS_UPSTREAM: 8.8.8.8
- DNS_DOMAIN: domain.tld
- DNS_SEARCH: domain.tld
- FUEL_ACCESS:
- user: admin
- password: admin
- HOSTNAME: opnfv
- NTP1: 0.pool.ntp.org
- NTP2: 1.pool.ntp.org
- NTP3: 2.pool.ntp.org
-interfaces_1:
- eth0:
- - public
- eth1:
- - fuelweb_admin
- - management
- - storage
- - private
-transformations_1:
- transformations:
- - action: add-br
- name: br-eth0
- - action: add-port
- bridge: br-eth0
- name: eth0
- - action: add-br
- name: br-eth1
- - action: add-port
- bridge: br-eth1
- name: eth1
- - action: add-br
- name: br-ex
- - action: add-br
- name: br-mgmt
- - action: add-br
- name: br-storage
- - action: add-br
- name: br-fw-admin
- - action: add-patch
- bridges:
- - br-eth1
- - br-storage
- tags:
- - 301
- - 0
- vlan_ids:
- - 301
- - 0
- - action: add-patch
- bridges:
- - br-eth1
- - br-mgmt
- tags:
- - 300
- - 0
- vlan_ids:
- - 300
- - 0
- - action: add-patch
- bridges:
- - br-eth1
- - br-fw-admin
- trunks:
- - 0
- - action: add-patch
- bridges:
- - br-eth0
- - br-ex
- trunks:
- - 0
- - action: add-br
- name: br-prv
- - action: add-patch
- bridges:
- - br-eth1
- - br-prv
-transformations_2:
- transformations:
- - action: add-br
- name: br-eth0
- - action: add-port
- bridge: br-eth0
- name: eth0
- - action: add-br
- name: br-eth1
- - action: add-port
- bridge: br-eth1
- name: eth1
- - action: add-br
- name: br-mgmt
- - action: add-br
- name: br-storage
- - action: add-br
- name: br-fw-admin
- - action: add-patch
- bridges:
- - br-eth1
- - br-storage
- tags:
- - 301
- - 0
- vlan_ids:
- - 301
- - 0
- - action: add-patch
- bridges:
- - br-eth1
- - br-mgmt
- tags:
- - 300
- - 0
- vlan_ids:
- - 300
- - 0
- - action: add-patch
- bridges:
- - br-eth1
- - br-fw-admin
- trunks:
- - 0
- - action: add-br
- name: br-prv
- - action: add-patch
- bridges:
- - br-eth1
- - br-prv
-network:
- networking_parameters:
- base_mac: fa:16:3e:00:00:00
- dns_nameservers:
- - 8.8.4.4
- - 8.8.8.8
- floating_ranges:
- - - 172.30.9.80
- - 172.30.9.89
- gre_id_range:
- - 2
- - 65535
- internal_cidr: 192.168.111.0/24
- internal_gateway: 192.168.111.1
- net_l23_provider: ovs
- segmentation_type: vlan
- vlan_range:
- - 1000
- - 1010
- networks:
- - cidr: 172.30.9.0/24
- gateway: 172.30.9.1
- ip_ranges:
- - - 172.30.9.70
- - 172.30.9.79
- meta:
- assign_vip: true
- cidr: 172.16.0.0/24
- configurable: true
- floating_range_var: floating_ranges
- ip_range:
- - 172.16.0.2
- - 172.16.0.126
- map_priority: 1
- name: public
- notation: ip_ranges
- render_addr_mask: public
- render_type: null
- use_gateway: true
- vlan_start: null
- name: public
- vlan_start: null
- - cidr: 192.168.0.0/24
- gateway: null
- ip_ranges:
- - - 192.168.0.2
- - 192.168.0.254
- meta:
- assign_vip: true
- cidr: 192.168.0.0/24
- configurable: true
- map_priority: 2
- name: management
- notation: cidr
- render_addr_mask: internal
- render_type: cidr
- use_gateway: false
- vlan_start: 101
- name: management
- vlan_start: 300
- - cidr: 192.168.1.0/24
- gateway: null
- ip_ranges:
- - - 192.168.1.2
- - 192.168.1.254
- meta:
- assign_vip: false
- cidr: 192.168.1.0/24
- configurable: true
- map_priority: 2
- name: storage
- notation: cidr
- render_addr_mask: storage
- render_type: cidr
- use_gateway: false
- vlan_start: 102
- name: storage
- vlan_start: 301
- - cidr: null
- gateway: null
- ip_ranges: []
- meta:
- assign_vip: false
- configurable: false
- map_priority: 2
- name: private
- neutron_vlan_range: true
- notation: null
- render_addr_mask: null
- render_type: null
- seg_type: vlan
- use_gateway: false
- vlan_start: null
- name: private
- vlan_start: null
- - cidr: 10.20.0.0/16
- gateway: null
- ip_ranges:
- - - 10.20.0.3
- - 10.20.255.254
- meta:
- assign_vip: false
- configurable: false
- map_priority: 0
- notation: ip_ranges
- render_addr_mask: null
- render_type: null
- unmovable: true
- use_gateway: true
- name: fuelweb_admin
- vlan_start: null
-settings:
- editable:
- access:
- email:
- description: Email address for Administrator
- label: email
- type: text
- value: admin@localhost
- weight: 40
- metadata:
- label: Access
- weight: 10
- password:
- description: Password for Administrator
- label: password
- type: password
- value: admin
- weight: 20
- tenant:
- description: Tenant (project) name for Administrator
- label: tenant
- regex:
- error: Invalid tenant name
- source: ^(?!services$)(?!nova$)(?!glance$)(?!keystone$)(?!neutron$)(?!cinder$)(?!swift$)(?!ceph$)(?![Gg]uest$).*
- type: text
- value: admin
- weight: 30
- user:
- description: Username for Administrator
- label: username
- regex:
- error: Invalid username
- source: ^(?!services$)(?!nova$)(?!glance$)(?!keystone$)(?!neutron$)(?!cinder$)(?!swift$)(?!ceph$)(?![Gg]uest$).*
- type: text
- value: admin
- weight: 10
- additional_components:
- ceilometer:
- description: If selected, Ceilometer component will be installed
- label: Install Ceilometer
- type: checkbox
- value: false
- weight: 40
- heat:
- description: ''
- label: ''
- type: hidden
- value: true
- weight: 30
- metadata:
- label: Additional Components
- weight: 20
- murano:
- description: If selected, Murano component will be installed
- label: Install Murano
- restrictions:
- - cluster:net_provider != 'neutron'
- type: checkbox
- value: false
- weight: 20
- sahara:
- description: If selected, Sahara component will be installed
- label: Install Sahara
- type: checkbox
- value: false
- weight: 10
- common:
- auth_key:
- description: Public key(s) to include in authorized_keys on deployed nodes
- label: Public Key
- type: text
- value: ''
- weight: 70
- auto_assign_floating_ip:
- description: If selected, OpenStack will automatically assign a floating IP
- to a new instance
- label: Auto assign floating IP
- restrictions:
- - cluster:net_provider == 'neutron'
- type: checkbox
- value: false
- weight: 40
- compute_scheduler_driver:
- label: Scheduler driver
- type: radio
- value: nova.scheduler.filter_scheduler.FilterScheduler
- values:
- - data: nova.scheduler.filter_scheduler.FilterScheduler
- description: Currently the most advanced OpenStack scheduler. See the OpenStack
- documentation for details.
- label: Filter scheduler
- - data: nova.scheduler.simple.SimpleScheduler
- description: This is 'naive' scheduler which tries to find the least loaded
- host
- label: Simple scheduler
- weight: 40
- debug:
- description: Debug logging mode provides more information, but requires more
- disk space.
- label: OpenStack debug logging
- type: checkbox
- value: false
- weight: 20
- disable_offload:
- description: If set, generic segmentation offload (gso) and generic receive
- offload (gro) on physical nics will be disabled. See ethtool man.
- label: Disable generic offload on physical nics
- restrictions:
- - action: hide
- condition: cluster:net_provider == 'neutron' and networking_parameters:segmentation_type
- == 'gre'
- type: checkbox
- value: true
- weight: 80
- libvirt_type:
- label: Hypervisor type
- type: radio
- value: kvm
- values:
- - data: kvm
- description: Choose this type of hypervisor if you run OpenStack on hardware
- label: KVM
- restrictions:
- - settings:common.libvirt_type.value == 'vcenter'
- - data: qemu
- description: Choose this type of hypervisor if you run OpenStack on virtual
- hosts.
- label: QEMU
- restrictions:
- - settings:common.libvirt_type.value == 'vcenter'
- - data: vcenter
- description: Choose this type of hypervisor if you run OpenStack in a vCenter
- environment.
- label: vCenter
- restrictions:
- - settings:common.libvirt_type.value != 'vcenter' or cluster:net_provider
- == 'neutron'
- weight: 30
- metadata:
- label: Common
- weight: 30
- nova_quota:
- description: Quotas are used to limit CPU and memory usage for tenants. Enabling
- quotas will increase load on the Nova database.
- label: Nova quotas
- type: checkbox
- value: false
- weight: 25
- resume_guests_state_on_host_boot:
- description: Whether to resume previous guests state when the host reboots.
- If enabled, this option causes guests assigned to the host to resume their
- previous state. If the guest was running a restart will be attempted when
- nova-compute starts. If the guest was not running previously, a restart
- will not be attempted.
- label: Resume guests state on host boot
- type: checkbox
- value: true
- weight: 60
- use_cow_images:
- description: For most cases you will want qcow format. If it's disabled, raw
- image format will be used to run VMs. OpenStack with raw format currently
- does not support snapshotting.
- label: Use qcow format for images
- type: checkbox
- value: true
- weight: 50
- corosync:
- group:
- description: ''
- label: Group
- type: text
- value: 226.94.1.1
- weight: 10
- metadata:
- label: Corosync
- restrictions:
- - action: hide
- condition: 'true'
- weight: 50
- port:
- description: ''
- label: Port
- type: text
- value: '12000'
- weight: 20
- verified:
- description: Set True only if multicast is configured correctly on router.
- label: Need to pass network verification.
- type: checkbox
- value: false
- weight: 10
- external_dns:
- dns_list:
- description: List of upstream DNS servers, separated by comma
- label: DNS list
- type: text
- value: 8.8.8.8, 8.8.4.4
- weight: 10
- metadata:
- label: Upstream DNS
- weight: 90
- external_ntp:
- metadata:
- label: Upstream NTP
- weight: 100
- ntp_list:
- description: List of upstream NTP servers, separated by comma
- label: NTP servers list
- type: text
- value: 0.pool.ntp.org, 1.pool.ntp.org
- weight: 10
- kernel_params:
- kernel:
- description: Default kernel parameters
- label: Initial parameters
- type: text
- value: console=ttyS0,9600 console=tty0 rootdelay=90 nomodeset
- weight: 45
- metadata:
- label: Kernel parameters
- weight: 40
- neutron_mellanox:
- metadata:
- enabled: true
- label: Mellanox Neutron components
- toggleable: false
- weight: 50
- plugin:
- label: Mellanox drivers and SR-IOV plugin
- type: radio
- value: disabled
- values:
- - data: disabled
- description: If selected, Mellanox drivers, Neutron and Cinder plugin will
- not be installed.
- label: Mellanox drivers and plugins disabled
- restrictions:
- - settings:storage.iser.value == true
- - data: drivers_only
- description: If selected, Mellanox Ethernet drivers will be installed to
- support networking over Mellanox NIC. Mellanox Neutron plugin will not
- be installed.
- label: Install only Mellanox drivers
- restrictions:
- - settings:common.libvirt_type.value != 'kvm'
- - data: ethernet
- description: If selected, both Mellanox Ethernet drivers and Mellanox network
- acceleration (Neutron) plugin will be installed.
- label: Install Mellanox drivers and SR-IOV plugin
- restrictions:
- - settings:common.libvirt_type.value != 'kvm' or not (cluster:net_provider
- == 'neutron' and networking_parameters:segmentation_type == 'vlan')
- weight: 60
- vf_num:
- description: Note that one virtual function will be reserved to the storage
- network, in case of choosing iSER.
- label: Number of virtual NICs
- restrictions:
- - settings:neutron_mellanox.plugin.value != 'ethernet'
- type: text
- value: '16'
- weight: 70
- nsx_plugin:
- connector_type:
- description: Default network transport type to use
- label: NSX connector type
- type: select
- value: stt
- values:
- - data: gre
- label: GRE
- - data: ipsec_gre
- label: GRE over IPSec
- - data: stt
- label: STT
- - data: ipsec_stt
- label: STT over IPSec
- - data: bridge
- label: Bridge
- weight: 80
- l3_gw_service_uuid:
- description: UUID for the default L3 gateway service to use with this cluster
- label: L3 service UUID
- regex:
- error: Invalid L3 gateway service UUID
- source: '[a-f\d]{8}-[a-f\d]{4}-[a-f\d]{4}-[a-f\d]{4}-[a-f\d]{12}'
- type: text
- value: ''
- weight: 50
- metadata:
- enabled: false
- label: VMware NSX
- restrictions:
- - action: hide
- condition: cluster:net_provider != 'neutron' or networking_parameters:net_l23_provider
- != 'nsx'
- weight: 20
- nsx_controllers:
- description: One or more IPv4[:port] addresses of NSX controller node, separated
- by comma (e.g. 10.30.30.2,192.168.110.254:443)
- label: NSX controller endpoint
- regex:
- error: Invalid controller endpoints, specify valid IPv4[:port] pair
- source: ^(([\d]|[1-9][\d]|1[\d]{2}|2[0-4][\d]|25[0-5])\.){3}([\d]|[1-9][\d]|1[\d]{2}|2[0-4][\d]|25[0-5])(:(6553[0-5]|655[0-2][\d]|65[0-4][\d]{2}|6[0-4][\d]{3}|5[\d]{4}|[\d][\d]{0,3}))?(,(([\d]|[1-9][\d]|1[\d]{2}|2[0-4][\d]|25[0-5])\.){3}([\d]|[1-9][\d]|1[\d]{2}|2[0-4][\d]|25[0-5])(:(6553[0-5]|655[0-2][\d]|65[0-4][\d]{2}|6[0-4][\d]{3}|5[\d]{4}|[\d][\d]{0,3}))?)*$
- type: text
- value: ''
- weight: 60
- nsx_password:
- description: Password for Administrator
- label: NSX password
- regex:
- error: Empty password
- source: \S
- type: password
- value: ''
- weight: 30
- nsx_username:
- description: NSX administrator's username
- label: NSX username
- regex:
- error: Empty username
- source: \S
- type: text
- value: admin
- weight: 20
- packages_url:
- description: URL to NSX specific packages
- label: URL to NSX bits
- regex:
- error: Invalid URL, specify valid HTTP/HTTPS URL with IPv4 address (e.g.
- http://10.20.0.2/nsx)
- source: ^https?://(([\d]|[1-9][\d]|1[\d]{2}|2[0-4][\d]|25[0-5])\.){3}([\d]|[1-9][\d]|1[\d]{2}|2[0-4][\d]|25[0-5])(:(6553[0-5]|655[0-2][\d]|65[0-4][\d]{2}|6[0-4][\d]{3}|5[\d]{4}|[\d][\d]{0,3}))?(/.*)?$
- type: text
- value: ''
- weight: 70
- replication_mode:
- description: ''
- label: NSX cluster has Service nodes
- type: checkbox
- value: true
- weight: 90
- transport_zone_uuid:
- description: UUID of the pre-existing default NSX Transport zone
- label: Transport zone UUID
- regex:
- error: Invalid transport zone UUID
- source: '[a-f\d]{8}-[a-f\d]{4}-[a-f\d]{4}-[a-f\d]{4}-[a-f\d]{12}'
- type: text
- value: ''
- weight: 40
- provision:
- metadata:
- label: Provision
- restrictions:
- - action: hide
- condition: not ('experimental' in version:feature_groups)
- weight: 80
- method:
- description: Which provision method to use for this cluster.
- label: Provision method
- type: radio
- value: cobbler
- values:
- - data: image
- description: Copying pre-built images on a disk.
- label: Image
- - data: cobbler
- description: Install from scratch using anaconda or debian-installer.
- label: Classic (use anaconda or debian-installer)
- public_network_assignment:
- assign_to_all_nodes:
- description: When disabled, public network will be assigned to controllers
- and zabbix-server only
- label: Assign public network to all nodes
- type: checkbox
- value: false
- weight: 10
- metadata:
- label: Public network assignment
- restrictions:
- - action: hide
- condition: cluster:net_provider != 'neutron'
- weight: 50
- storage:
- ephemeral_ceph:
- description: Configures Nova to store ephemeral volumes in RBD. This works
- best if Ceph is enabled for volumes and images, too. Enables live migration
- of all types of Ceph backed VMs (without this option, live migration will
- only work with VMs launched from Cinder volumes).
- label: Ceph RBD for ephemeral volumes (Nova)
- restrictions:
- - settings:common.libvirt_type.value == 'vcenter'
- type: checkbox
- value: true
- weight: 75
- images_ceph:
- description: Configures Glance to use the Ceph RBD backend to store images.
- If enabled, this option will prevent Swift from installing.
- label: Ceph RBD for images (Glance)
- type: checkbox
- value: true
- weight: 30
- images_vcenter:
- description: Configures Glance to use the vCenter/ESXi backend to store images.
- If enabled, this option will prevent Swift from installing.
- label: VMWare vCenter/ESXi datastore for images (Glance)
- restrictions:
- - settings:common.libvirt_type.value != 'vcenter'
- type: checkbox
- value: false
- weight: 35
- iser:
- description: 'High performance block storage: Cinder volumes over iSER protocol
- (iSCSI over RDMA). This feature requires SR-IOV capabilities in the NIC,
- and will use a dedicated virtual function for the storage network.'
- label: iSER protocol for volumes (Cinder)
- restrictions:
- - settings:storage.volumes_lvm.value != true or settings:common.libvirt_type.value
- != 'kvm'
- type: checkbox
- value: false
- weight: 11
- metadata:
- label: Storage
- weight: 60
- objects_ceph:
- description: Configures RadosGW front end for Ceph RBD. This exposes S3 and
- Swift API Interfaces. If enabled, this option will prevent Swift from installing.
- label: Ceph RadosGW for objects (Swift API)
- restrictions:
- - settings:storage.images_ceph.value == false
- type: checkbox
- value: false
- weight: 80
- osd_pool_size:
- description: Configures the default number of object replicas in Ceph. This
- number must be equal to or lower than the number of deployed 'Storage -
- Ceph OSD' nodes.
- label: Ceph object replication factor
- regex:
- error: Invalid number
- source: ^[1-9]\d*$
- restrictions:
- - settings:common.libvirt_type.value == 'vcenter'
- type: text
- value: '2'
- weight: 85
- vc_datacenter:
- description: Inventory path to a datacenter. If you want to use ESXi host
- as datastore, it should be "ha-datacenter".
- label: Datacenter name
- regex:
- error: Empty datacenter
- source: \S
- restrictions:
- - action: hide
- condition: settings:storage.images_vcenter.value == false or settings:common.libvirt_type.value
- != 'vcenter'
- type: text
- value: ''
- weight: 65
- vc_datastore:
- description: Datastore associated with the datacenter.
- label: Datastore name
- regex:
- error: Empty datastore
- source: \S
- restrictions:
- - action: hide
- condition: settings:storage.images_vcenter.value == false or settings:common.libvirt_type.value
- != 'vcenter'
- type: text
- value: ''
- weight: 60
- vc_host:
- description: IP Address of vCenter/ESXi
- label: vCenter/ESXi IP
- regex:
- error: Specify valid IPv4 address
- source: ^(([\d]|[1-9][\d]|1[\d]{2}|2[0-4][\d]|25[0-5])\.){3}([\d]|[1-9][\d]|1[\d]{2}|2[0-4][\d]|25[0-5])$
- restrictions:
- - action: hide
- condition: settings:storage.images_vcenter.value == false or settings:common.libvirt_type.value
- != 'vcenter'
- type: text
- value: ''
- weight: 45
- vc_image_dir:
- description: The name of the directory where the glance images will be stored
- in the VMware datastore.
- label: Datastore Images directory
- regex:
- error: Empty images directory
- source: \S
- restrictions:
- - action: hide
- condition: settings:storage.images_vcenter.value == false or settings:common.libvirt_type.value
- != 'vcenter'
- type: text
- value: /openstack_glance
- weight: 70
- vc_password:
- description: vCenter/ESXi admin password
- label: Password
- regex:
- error: Empty password
- source: \S
- restrictions:
- - action: hide
- condition: settings:storage.images_vcenter.value == false or settings:common.libvirt_type.value
- != 'vcenter'
- type: password
- value: ''
- weight: 55
- vc_user:
- description: vCenter/ESXi admin username
- label: Username
- regex:
- error: Empty username
- source: \S
- restrictions:
- - action: hide
- condition: settings:storage.images_vcenter.value == false or settings:common.libvirt_type.value
- != 'vcenter'
- type: text
- value: ''
- weight: 50
- volumes_ceph:
- description: Configures Cinder to store volumes in Ceph RBD images.
- label: Ceph RBD for volumes (Cinder)
- restrictions:
- - settings:storage.volumes_lvm.value == true or settings:common.libvirt_type.value
- == 'vcenter'
- type: checkbox
- value: true
- weight: 20
- volumes_lvm:
- description: Requires at least one Storage - Cinder LVM node.
- label: Cinder LVM over iSCSI for volumes
- restrictions:
- - settings:storage.volumes_ceph.value == true
- type: checkbox
- value: false
- weight: 10
- volumes_vmdk:
- description: Configures Cinder to store volumes via VMware vCenter.
- label: VMware vCenter for volumes (Cinder)
- restrictions:
- - settings:common.libvirt_type.value != 'vcenter' or settings:storage.volumes_lvm.value
- == true
- type: checkbox
- value: false
- weight: 15
- syslog:
- metadata:
- label: Syslog
- weight: 50
- syslog_port:
- description: Remote syslog port
- label: Port
- regex:
- error: Invalid Syslog port
- source: ^([1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])$
- type: text
- value: '514'
- weight: 20
- syslog_server:
- description: Remote syslog hostname
- label: Hostname
- type: text
- value: ''
- weight: 10
- syslog_transport:
- label: Syslog transport protocol
- type: radio
- value: tcp
- values:
- - data: udp
- description: ''
- label: UDP
- - data: tcp
- description: ''
- label: TCP
- weight: 30
- vcenter:
- cluster:
- description: vCenter cluster name. If you have multiple clusters, use comma
- to separate names
- label: Cluster
- regex:
- error: Invalid cluster list
- source: ^([^,\ ]+([\ ]*[^,\ ])*)(,[^,\ ]+([\ ]*[^,\ ])*)*$
- type: text
- value: ''
- weight: 40
- datastore_regex:
- description: The Datastore regexp setting specifies the data stores to use
- with Compute. For example, "nas.*". If you want to use all available datastores,
- leave this field blank
- label: Datastore regexp
- regex:
- error: Invalid datastore regexp
- source: ^(\S.*\S|\S|)$
- type: text
- value: ''
- weight: 50
- host_ip:
- description: IP Address of vCenter
- label: vCenter IP
- regex:
- error: Specify valid IPv4 address
- source: ^(([\d]|[1-9][\d]|1[\d]{2}|2[0-4][\d]|25[0-5])\.){3}([\d]|[1-9][\d]|1[\d]{2}|2[0-4][\d]|25[0-5])$
- type: text
- value: ''
- weight: 10
- metadata:
- label: vCenter
- restrictions:
- - action: hide
- condition: settings:common.libvirt_type.value != 'vcenter'
- weight: 20
- use_vcenter:
- description: ''
- label: ''
- type: hidden
- value: true
- weight: 5
- vc_password:
- description: vCenter admin password
- label: Password
- regex:
- error: Empty password
- source: \S
- type: password
- value: admin
- weight: 30
- vc_user:
- description: vCenter admin username
- label: Username
- regex:
- error: Empty username
- source: \S
- type: text
- value: admin
- weight: 20
- vlan_interface:
- description: Physical ESXi host ethernet adapter for VLAN networking (e.g.
- vmnic1). If empty "vmnic0" is used by default
- label: ESXi VLAN interface
- restrictions:
- - action: hide
- condition: cluster:net_provider != 'nova_network' or networking_parameters:net_manager
- != 'VlanManager'
- type: text
- value: ''
- weight: 60
- zabbix:
- metadata:
- label: Zabbix Access
- restrictions:
- - action: hide
- condition: not ('experimental' in version:feature_groups)
- weight: 70
- password:
- description: Password for Zabbix Administrator
- label: password
- type: password
- value: zabbix
- weight: 20
- username:
- description: Username for Zabbix Administrator
- label: username
- type: text
- value: admin
- weight: 10
\ No newline at end of file
+++ /dev/null
-title: Deployment Hardware Adapter (DHA)
-# DHA API version supported
-version:
-created:
-comment: Config for LF Pod1
-
-# Adapter to use for this definition
-adapter: ipmi
-
-# Node list.
-# Mandatory property is id, all other properties are adapter specific.
-
-nodes:
-- id: 1
- pxeMac: 00:25:b5:b0:00:ef
- ipmiIp: 172.30.8.69
- ipmiUser: admin
- ipmiPass: octopus
-- id: 2
- pxeMac: 00:25:b5:b0:00:cf
- ipmiIp: 172.30.8.78
- ipmiUser: admin
- ipmiPass: octopus
-- id: 3
- pxeMac: 00:25:b5:b0:00:8f
- ipmiIp: 172.30.8.68
- ipmiUser: admin
- ipmiPass: octopus
-- id: 4
- pxeMac: 00:25:b5:b0:00:6f
- ipmiIp: 172.30.8.77
- ipmiUser: admin
- ipmiPass: octopus
-- id: 5
- pxeMac: 00:25:b5:b0:00:4f
- ipmiIp: 172.30.8.67
- ipmiUser: admin
- ipmiPass: octopus
-# Adding the Fuel node as node id 6 which may not be correct - please
-# adjust as needed.
-- id: 6
- libvirtName: fuel-opnfv
- libvirtTemplate: templates/hardware_environment/vms/fuel.xml
- isFuel: yes
- username: root
- password: r00tme
-
-disks:
- fuel: 30G
\ No newline at end of file
+++ /dev/null
-title: Deployment Environment Adapter (DEA)
-# DEA API version supported
-version:
-created:
-comment: Config for LF POD2 - HA deployment with Ceph
-environment:
- name: opnfv_virt
- mode: ha
- net_segment_type: vlan
-wanted_release: Juno on Ubuntu 12.04.4
-nodes:
-- id: 1
- interfaces: interfaces_1
- transformations: transformations_1
- role: ceph-osd,controller
-- id: 2
- interfaces: interfaces_1
- transformations: transformations_1
- role: ceph-osd,controller
-- id: 3
- interfaces: interfaces_1
- transformations: transformations_1
- role: ceph-osd,controller
-- id: 4
- interfaces: interfaces_1
- transformations: transformations_2
- role: ceph-osd,compute
-- id: 5
- interfaces: interfaces_1
- transformations: transformations_2
- role: ceph-osd,compute
-opnfv:
- hosts:
- - name:
- address:
- fqdn:
-fuel:
- ADMIN_NETWORK:
- ipaddress: 10.20.0.2
- netmask: 255.255.0.0
- dhcp_pool_start: 10.20.0.3
- dhcp_pool_end: 10.20.0.254
- DNS_UPSTREAM: 8.8.8.8
- DNS_DOMAIN: domain.tld
- DNS_SEARCH: domain.tld
- FUEL_ACCESS:
- user: admin
- password: admin
- HOSTNAME: opnfv
- NTP1: 0.pool.ntp.org
- NTP2: 1.pool.ntp.org
- NTP3: 2.pool.ntp.org
-interfaces_1:
- eth0:
- - public
- eth1:
- - fuelweb_admin
- - management
- - storage
- - private
-transformations_1:
- transformations:
- - action: add-br
- name: br-eth0
- - action: add-port
- bridge: br-eth0
- name: eth0
- - action: add-br
- name: br-eth1
- - action: add-port
- bridge: br-eth1
- name: eth1
- - action: add-br
- name: br-ex
- - action: add-br
- name: br-mgmt
- - action: add-br
- name: br-storage
- - action: add-br
- name: br-fw-admin
- - action: add-patch
- bridges:
- - br-eth1
- - br-storage
- tags:
- - 301
- - 0
- vlan_ids:
- - 301
- - 0
- - action: add-patch
- bridges:
- - br-eth1
- - br-mgmt
- tags:
- - 300
- - 0
- vlan_ids:
- - 300
- - 0
- - action: add-patch
- bridges:
- - br-eth1
- - br-fw-admin
- trunks:
- - 0
- - action: add-patch
- bridges:
- - br-eth0
- - br-ex
- trunks:
- - 0
- - action: add-br
- name: br-prv
- - action: add-patch
- bridges:
- - br-eth1
- - br-prv
-transformations_2:
- transformations:
- - action: add-br
- name: br-eth0
- - action: add-port
- bridge: br-eth0
- name: eth0
- - action: add-br
- name: br-eth1
- - action: add-port
- bridge: br-eth1
- name: eth1
- - action: add-br
- name: br-mgmt
- - action: add-br
- name: br-storage
- - action: add-br
- name: br-fw-admin
- - action: add-patch
- bridges:
- - br-eth1
- - br-storage
- tags:
- - 301
- - 0
- vlan_ids:
- - 301
- - 0
- - action: add-patch
- bridges:
- - br-eth1
- - br-mgmt
- tags:
- - 300
- - 0
- vlan_ids:
- - 300
- - 0
- - action: add-patch
- bridges:
- - br-eth1
- - br-fw-admin
- trunks:
- - 0
- - action: add-br
- name: br-prv
- - action: add-patch
- bridges:
- - br-eth1
- - br-prv
-network:
- networking_parameters:
- base_mac: fa:16:3e:00:00:00
- dns_nameservers:
- - 8.8.4.4
- - 8.8.8.8
- floating_ranges:
- - - 172.30.10.83
- - 172.30.10.92
- gre_id_range:
- - 2
- - 65535
- internal_cidr: 192.168.111.0/24
- internal_gateway: 192.168.111.1
- net_l23_provider: ovs
- segmentation_type: vlan
- vlan_range:
- - 1000
- - 1010
- networks:
- - cidr: 172.30.10.0/24
- gateway: 172.30.10.1
- ip_ranges:
- - - 172.30.10.73
- - 172.30.10.82
- meta:
- assign_vip: true
- cidr: 172.30.10.0/24
- configurable: true
- floating_range_var: floating_ranges
- ip_range:
- - 172.30.10.73
- - 172.30.10.82
- map_priority: 1
- name: public
- notation: ip_ranges
- render_addr_mask: public
- render_type: null
- use_gateway: true
- vlan_start: null
- name: public
- vlan_start: null
- - cidr: 192.168.0.0/24
- gateway: null
- ip_ranges:
- - - 192.168.0.2
- - 192.168.0.254
- meta:
- assign_vip: true
- cidr: 192.168.0.0/24
- configurable: true
- map_priority: 2
- name: management
- notation: cidr
- render_addr_mask: internal
- render_type: cidr
- use_gateway: false
- vlan_start: 300
- name: management
- vlan_start: 300
- - cidr: 192.168.1.0/24
- gateway: null
- ip_ranges:
- - - 192.168.1.2
- - 192.168.1.254
- meta:
- assign_vip: false
- cidr: 192.168.1.0/24
- configurable: true
- map_priority: 2
- name: storage
- notation: cidr
- render_addr_mask: storage
- render_type: cidr
- use_gateway: false
- vlan_start: 301
- name: storage
- vlan_start: 301
- - cidr: null
- gateway: null
- ip_ranges: []
- meta:
- assign_vip: false
- configurable: false
- map_priority: 2
- name: private
- neutron_vlan_range: true
- notation: null
- render_addr_mask: null
- render_type: null
- seg_type: vlan
- use_gateway: false
- vlan_start: null
- name: private
- vlan_start: null
- - cidr: 10.20.0.0/16
- gateway: null
- ip_ranges:
- - - 10.20.0.3
- - 10.20.255.254
- meta:
- assign_vip: false
- configurable: false
- map_priority: 0
- notation: ip_ranges
- render_addr_mask: null
- render_type: null
- unmovable: true
- use_gateway: true
- name: fuelweb_admin
- vlan_start: null
-settings:
- editable:
- access:
- email:
- description: Email address for Administrator
- label: email
- type: text
- value: admin@localhost
- weight: 40
- metadata:
- label: Access
- weight: 10
- password:
- description: Password for Administrator
- label: password
- type: password
- value: admin
- weight: 20
- tenant:
- description: Tenant (project) name for Administrator
- label: tenant
- regex:
- error: Invalid tenant name
- source: ^(?!services$)(?!nova$)(?!glance$)(?!keystone$)(?!neutron$)(?!cinder$)(?!swift$)(?!ceph$)(?![Gg]uest$).*
- type: text
- value: admin
- weight: 30
- user:
- description: Username for Administrator
- label: username
- regex:
- error: Invalid username
- source: ^(?!services$)(?!nova$)(?!glance$)(?!keystone$)(?!neutron$)(?!cinder$)(?!swift$)(?!ceph$)(?![Gg]uest$).*
- type: text
- value: admin
- weight: 10
- additional_components:
- ceilometer:
- description: If selected, Ceilometer component will be installed
- label: Install Ceilometer
- type: checkbox
- value: false
- weight: 40
- heat:
- description: ''
- label: ''
- type: hidden
- value: true
- weight: 30
- metadata:
- label: Additional Components
- weight: 20
- murano:
- description: If selected, Murano component will be installed
- label: Install Murano
- restrictions:
- - cluster:net_provider != 'neutron'
- type: checkbox
- value: false
- weight: 20
- sahara:
- description: If selected, Sahara component will be installed
- label: Install Sahara
- type: checkbox
- value: false
- weight: 10
- common:
- auth_key:
- description: Public key(s) to include in authorized_keys on deployed nodes
- label: Public Key
- type: text
- value: ''
- weight: 70
- auto_assign_floating_ip:
- description: If selected, OpenStack will automatically assign a floating IP
- to a new instance
- label: Auto assign floating IP
- restrictions:
- - cluster:net_provider == 'neutron'
- type: checkbox
- value: false
- weight: 40
- compute_scheduler_driver:
- label: Scheduler driver
- type: radio
- value: nova.scheduler.filter_scheduler.FilterScheduler
- values:
- - data: nova.scheduler.filter_scheduler.FilterScheduler
- description: Currently the most advanced OpenStack scheduler. See the OpenStack
- documentation for details.
- label: Filter scheduler
- - data: nova.scheduler.simple.SimpleScheduler
- description: This is 'naive' scheduler which tries to find the least loaded
- host
- label: Simple scheduler
- weight: 40
- debug:
- description: Debug logging mode provides more information, but requires more
- disk space.
- label: OpenStack debug logging
- type: checkbox
- value: false
- weight: 20
- disable_offload:
- description: If set, generic segmentation offload (gso) and generic receive
- offload (gro) on physical nics will be disabled. See ethtool man.
- label: Disable generic offload on physical nics
- restrictions:
- - action: hide
- condition: cluster:net_provider == 'neutron' and networking_parameters:segmentation_type
- == 'gre'
- type: checkbox
- value: true
- weight: 80
- libvirt_type:
- label: Hypervisor type
- type: radio
- value: kvm
- values:
- - data: kvm
- description: Choose this type of hypervisor if you run OpenStack on hardware
- label: KVM
- restrictions:
- - settings:common.libvirt_type.value == 'vcenter'
- - data: qemu
- description: Choose this type of hypervisor if you run OpenStack on virtual
- hosts.
- label: QEMU
- restrictions:
- - settings:common.libvirt_type.value == 'vcenter'
- - data: vcenter
- description: Choose this type of hypervisor if you run OpenStack in a vCenter
- environment.
- label: vCenter
- restrictions:
- - settings:common.libvirt_type.value != 'vcenter' or cluster:net_provider
- == 'neutron'
- weight: 30
- metadata:
- label: Common
- weight: 30
- nova_quota:
- description: Quotas are used to limit CPU and memory usage for tenants. Enabling
- quotas will increase load on the Nova database.
- label: Nova quotas
- type: checkbox
- value: false
- weight: 25
- resume_guests_state_on_host_boot:
- description: Whether to resume previous guests state when the host reboots.
- If enabled, this option causes guests assigned to the host to resume their
- previous state. If the guest was running a restart will be attempted when
- nova-compute starts. If the guest was not running previously, a restart
- will not be attempted.
- label: Resume guests state on host boot
- type: checkbox
- value: true
- weight: 60
- use_cow_images:
- description: For most cases you will want qcow format. If it's disabled, raw
- image format will be used to run VMs. OpenStack with raw format currently
- does not support snapshotting.
- label: Use qcow format for images
- type: checkbox
- value: true
- weight: 50
- corosync:
- group:
- description: ''
- label: Group
- type: text
- value: 226.94.1.1
- weight: 10
- metadata:
- label: Corosync
- restrictions:
- - action: hide
- condition: 'true'
- weight: 50
- port:
- description: ''
- label: Port
- type: text
- value: '12000'
- weight: 20
- verified:
- description: Set True only if multicast is configured correctly on router.
- label: Need to pass network verification.
- type: checkbox
- value: false
- weight: 10
- external_dns:
- dns_list:
- description: List of upstream DNS servers, separated by comma
- label: DNS list
- type: text
- value: 8.8.8.8, 8.8.4.4
- weight: 10
- metadata:
- label: Upstream DNS
- weight: 90
- external_ntp:
- metadata:
- label: Upstream NTP
- weight: 100
- ntp_list:
- description: List of upstream NTP servers, separated by comma
- label: NTP servers list
- type: text
- value: 0.pool.ntp.org, 1.pool.ntp.org
- weight: 10
- kernel_params:
- kernel:
- description: Default kernel parameters
- label: Initial parameters
- type: text
- value: console=ttyS0,9600 console=tty0 rootdelay=90 nomodeset
- weight: 45
- metadata:
- label: Kernel parameters
- weight: 40
- neutron_mellanox:
- metadata:
- enabled: true
- label: Mellanox Neutron components
- toggleable: false
- weight: 50
- plugin:
- label: Mellanox drivers and SR-IOV plugin
- type: radio
- value: disabled
- values:
- - data: disabled
- description: If selected, Mellanox drivers, Neutron and Cinder plugin will
- not be installed.
- label: Mellanox drivers and plugins disabled
- restrictions:
- - settings:storage.iser.value == true
- - data: drivers_only
- description: If selected, Mellanox Ethernet drivers will be installed to
- support networking over Mellanox NIC. Mellanox Neutron plugin will not
- be installed.
- label: Install only Mellanox drivers
- restrictions:
- - settings:common.libvirt_type.value != 'kvm'
- - data: ethernet
- description: If selected, both Mellanox Ethernet drivers and Mellanox network
- acceleration (Neutron) plugin will be installed.
- label: Install Mellanox drivers and SR-IOV plugin
- restrictions:
- - settings:common.libvirt_type.value != 'kvm' or not (cluster:net_provider
- == 'neutron' and networking_parameters:segmentation_type == 'vlan')
- weight: 60
- vf_num:
- description: Note that one virtual function will be reserved to the storage
- network, in case of choosing iSER.
- label: Number of virtual NICs
- restrictions:
- - settings:neutron_mellanox.plugin.value != 'ethernet'
- type: text
- value: '16'
- weight: 70
- nsx_plugin:
- connector_type:
- description: Default network transport type to use
- label: NSX connector type
- type: select
- value: stt
- values:
- - data: gre
- label: GRE
- - data: ipsec_gre
- label: GRE over IPSec
- - data: stt
- label: STT
- - data: ipsec_stt
- label: STT over IPSec
- - data: bridge
- label: Bridge
- weight: 80
- l3_gw_service_uuid:
- description: UUID for the default L3 gateway service to use with this cluster
- label: L3 service UUID
- regex:
- error: Invalid L3 gateway service UUID
- source: '[a-f\d]{8}-[a-f\d]{4}-[a-f\d]{4}-[a-f\d]{4}-[a-f\d]{12}'
- type: text
- value: ''
- weight: 50
- metadata:
- enabled: false
- label: VMware NSX
- restrictions:
- - action: hide
- condition: cluster:net_provider != 'neutron' or networking_parameters:net_l23_provider
- != 'nsx'
- weight: 20
- nsx_controllers:
- description: One or more IPv4[:port] addresses of NSX controller node, separated
- by comma (e.g. 10.30.30.2,192.168.110.254:443)
- label: NSX controller endpoint
- regex:
- error: Invalid controller endpoints, specify valid IPv4[:port] pair
- source: ^(([\d]|[1-9][\d]|1[\d]{2}|2[0-4][\d]|25[0-5])\.){3}([\d]|[1-9][\d]|1[\d]{2}|2[0-4][\d]|25[0-5])(:(6553[0-5]|655[0-2][\d]|65[0-4][\d]{2}|6[0-4][\d]{3}|5[\d]{4}|[\d][\d]{0,3}))?(,(([\d]|[1-9][\d]|1[\d]{2}|2[0-4][\d]|25[0-5])\.){3}([\d]|[1-9][\d]|1[\d]{2}|2[0-4][\d]|25[0-5])(:(6553[0-5]|655[0-2][\d]|65[0-4][\d]{2}|6[0-4][\d]{3}|5[\d]{4}|[\d][\d]{0,3}))?)*$
- type: text
- value: ''
- weight: 60
- nsx_password:
- description: Password for Administrator
- label: NSX password
- regex:
- error: Empty password
- source: \S
- type: password
- value: ''
- weight: 30
- nsx_username:
- description: NSX administrator's username
- label: NSX username
- regex:
- error: Empty username
- source: \S
- type: text
- value: admin
- weight: 20
- packages_url:
- description: URL to NSX specific packages
- label: URL to NSX bits
- regex:
- error: Invalid URL, specify valid HTTP/HTTPS URL with IPv4 address (e.g.
- http://10.20.0.2/nsx)
- source: ^https?://(([\d]|[1-9][\d]|1[\d]{2}|2[0-4][\d]|25[0-5])\.){3}([\d]|[1-9][\d]|1[\d]{2}|2[0-4][\d]|25[0-5])(:(6553[0-5]|655[0-2][\d]|65[0-4][\d]{2}|6[0-4][\d]{3}|5[\d]{4}|[\d][\d]{0,3}))?(/.*)?$
- type: text
- value: ''
- weight: 70
- replication_mode:
- description: ''
- label: NSX cluster has Service nodes
- type: checkbox
- value: true
- weight: 90
- transport_zone_uuid:
- description: UUID of the pre-existing default NSX Transport zone
- label: Transport zone UUID
- regex:
- error: Invalid transport zone UUID
- source: '[a-f\d]{8}-[a-f\d]{4}-[a-f\d]{4}-[a-f\d]{4}-[a-f\d]{12}'
- type: text
- value: ''
- weight: 40
- provision:
- metadata:
- label: Provision
- restrictions:
- - action: hide
- condition: not ('experimental' in version:feature_groups)
- weight: 80
- method:
- description: Which provision method to use for this cluster.
- label: Provision method
- type: radio
- value: cobbler
- values:
- - data: image
- description: Copying pre-built images on a disk.
- label: Image
- - data: cobbler
- description: Install from scratch using anaconda or debian-installer.
- label: Classic (use anaconda or debian-installer)
- public_network_assignment:
- assign_to_all_nodes:
- description: When disabled, public network will be assigned to controllers
- and zabbix-server only
- label: Assign public network to all nodes
- type: checkbox
- value: false
- weight: 10
- metadata:
- label: Public network assignment
- restrictions:
- - action: hide
- condition: cluster:net_provider != 'neutron'
- weight: 50
- storage:
- ephemeral_ceph:
- description: Configures Nova to store ephemeral volumes in RBD. This works
- best if Ceph is enabled for volumes and images, too. Enables live migration
- of all types of Ceph backed VMs (without this option, live migration will
- only work with VMs launched from Cinder volumes).
- label: Ceph RBD for ephemeral volumes (Nova)
- restrictions:
- - settings:common.libvirt_type.value == 'vcenter'
- type: checkbox
- value: true
- weight: 75
- images_ceph:
- description: Configures Glance to use the Ceph RBD backend to store images.
- If enabled, this option will prevent Swift from installing.
- label: Ceph RBD for images (Glance)
- type: checkbox
- value: true
- weight: 30
- images_vcenter:
- description: Configures Glance to use the vCenter/ESXi backend to store images.
- If enabled, this option will prevent Swift from installing.
- label: VMWare vCenter/ESXi datastore for images (Glance)
- restrictions:
- - settings:common.libvirt_type.value != 'vcenter'
- type: checkbox
- value: false
- weight: 35
- iser:
- description: 'High performance block storage: Cinder volumes over iSER protocol
- (iSCSI over RDMA). This feature requires SR-IOV capabilities in the NIC,
- and will use a dedicated virtual function for the storage network.'
- label: iSER protocol for volumes (Cinder)
- restrictions:
- - settings:storage.volumes_lvm.value != true or settings:common.libvirt_type.value
- != 'kvm'
- type: checkbox
- value: false
- weight: 11
- metadata:
- label: Storage
- weight: 60
- objects_ceph:
- description: Configures RadosGW front end for Ceph RBD. This exposes S3 and
- Swift API Interfaces. If enabled, this option will prevent Swift from installing.
- label: Ceph RadosGW for objects (Swift API)
- restrictions:
- - settings:storage.images_ceph.value == false
- type: checkbox
- value: false
- weight: 80
- osd_pool_size:
- description: Configures the default number of object replicas in Ceph. This
- number must be equal to or lower than the number of deployed 'Storage -
- Ceph OSD' nodes.
- label: Ceph object replication factor
- regex:
- error: Invalid number
- source: ^[1-9]\d*$
- restrictions:
- - settings:common.libvirt_type.value == 'vcenter'
- type: text
- value: '2'
- weight: 85
- vc_datacenter:
- description: Inventory path to a datacenter. If you want to use ESXi host
- as datastore, it should be "ha-datacenter".
- label: Datacenter name
- regex:
- error: Empty datacenter
- source: \S
- restrictions:
- - action: hide
- condition: settings:storage.images_vcenter.value == false or settings:common.libvirt_type.value
- != 'vcenter'
- type: text
- value: ''
- weight: 65
- vc_datastore:
- description: Datastore associated with the datacenter.
- label: Datastore name
- regex:
- error: Empty datastore
- source: \S
- restrictions:
- - action: hide
- condition: settings:storage.images_vcenter.value == false or settings:common.libvirt_type.value
- != 'vcenter'
- type: text
- value: ''
- weight: 60
- vc_host:
- description: IP Address of vCenter/ESXi
- label: vCenter/ESXi IP
- regex:
- error: Specify valid IPv4 address
- source: ^(([\d]|[1-9][\d]|1[\d]{2}|2[0-4][\d]|25[0-5])\.){3}([\d]|[1-9][\d]|1[\d]{2}|2[0-4][\d]|25[0-5])$
- restrictions:
- - action: hide
- condition: settings:storage.images_vcenter.value == false or settings:common.libvirt_type.value
- != 'vcenter'
- type: text
- value: ''
- weight: 45
- vc_image_dir:
- description: The name of the directory where the glance images will be stored
- in the VMware datastore.
- label: Datastore Images directory
- regex:
- error: Empty images directory
- source: \S
- restrictions:
- - action: hide
- condition: settings:storage.images_vcenter.value == false or settings:common.libvirt_type.value
- != 'vcenter'
- type: text
- value: /openstack_glance
- weight: 70
- vc_password:
- description: vCenter/ESXi admin password
- label: Password
- regex:
- error: Empty password
- source: \S
- restrictions:
- - action: hide
- condition: settings:storage.images_vcenter.value == false or settings:common.libvirt_type.value
- != 'vcenter'
- type: password
- value: ''
- weight: 55
- vc_user:
- description: vCenter/ESXi admin username
- label: Username
- regex:
- error: Empty username
- source: \S
- restrictions:
- - action: hide
- condition: settings:storage.images_vcenter.value == false or settings:common.libvirt_type.value
- != 'vcenter'
- type: text
- value: ''
- weight: 50
- volumes_ceph:
- description: Configures Cinder to store volumes in Ceph RBD images.
- label: Ceph RBD for volumes (Cinder)
- restrictions:
- - settings:storage.volumes_lvm.value == true or settings:common.libvirt_type.value
- == 'vcenter'
- type: checkbox
- value: true
- weight: 20
- volumes_lvm:
- description: Requires at least one Storage - Cinder LVM node.
- label: Cinder LVM over iSCSI for volumes
- restrictions:
- - settings:storage.volumes_ceph.value == true
- type: checkbox
- value: false
- weight: 10
- volumes_vmdk:
- description: Configures Cinder to store volumes via VMware vCenter.
- label: VMware vCenter for volumes (Cinder)
- restrictions:
- - settings:common.libvirt_type.value != 'vcenter' or settings:storage.volumes_lvm.value
- == true
- type: checkbox
- value: false
- weight: 15
- syslog:
- metadata:
- label: Syslog
- weight: 50
- syslog_port:
- description: Remote syslog port
- label: Port
- regex:
- error: Invalid Syslog port
- source: ^([1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])$
- type: text
- value: '514'
- weight: 20
- syslog_server:
- description: Remote syslog hostname
- label: Hostname
- type: text
- value: ''
- weight: 10
- syslog_transport:
- label: Syslog transport protocol
- type: radio
- value: tcp
- values:
- - data: udp
- description: ''
- label: UDP
- - data: tcp
- description: ''
- label: TCP
- weight: 30
- vcenter:
- cluster:
- description: vCenter cluster name. If you have multiple clusters, use comma
- to separate names
- label: Cluster
- regex:
- error: Invalid cluster list
- source: ^([^,\ ]+([\ ]*[^,\ ])*)(,[^,\ ]+([\ ]*[^,\ ])*)*$
- type: text
- value: ''
- weight: 40
- datastore_regex:
- description: The Datastore regexp setting specifies the data stores to use
- with Compute. For example, "nas.*". If you want to use all available datastores,
- leave this field blank
- label: Datastore regexp
- regex:
- error: Invalid datastore regexp
- source: ^(\S.*\S|\S|)$
- type: text
- value: ''
- weight: 50
- host_ip:
- description: IP Address of vCenter
- label: vCenter IP
- regex:
- error: Specify valid IPv4 address
- source: ^(([\d]|[1-9][\d]|1[\d]{2}|2[0-4][\d]|25[0-5])\.){3}([\d]|[1-9][\d]|1[\d]{2}|2[0-4][\d]|25[0-5])$
- type: text
- value: ''
- weight: 10
- metadata:
- label: vCenter
- restrictions:
- - action: hide
- condition: settings:common.libvirt_type.value != 'vcenter'
- weight: 20
- use_vcenter:
- description: ''
- label: ''
- type: hidden
- value: true
- weight: 5
- vc_password:
- description: vCenter admin password
- label: Password
- regex:
- error: Empty password
- source: \S
- type: password
- value: admin
- weight: 30
- vc_user:
- description: vCenter admin username
- label: Username
- regex:
- error: Empty username
- source: \S
- type: text
- value: admin
- weight: 20
- vlan_interface:
- description: Physical ESXi host ethernet adapter for VLAN networking (e.g.
- vmnic1). If empty "vmnic0" is used by default
- label: ESXi VLAN interface
- restrictions:
- - action: hide
- condition: cluster:net_provider != 'nova_network' or networking_parameters:net_manager
- != 'VlanManager'
- type: text
- value: ''
- weight: 60
- zabbix:
- metadata:
- label: Zabbix Access
- restrictions:
- - action: hide
- condition: not ('experimental' in version:feature_groups)
- weight: 70
- password:
- description: Password for Zabbix Administrator
- label: password
- type: password
- value: zabbix
- weight: 20
- username:
- description: Username for Zabbix Administrator
- label: username
- type: text
- value: admin
- weight: 10
\ No newline at end of file
+++ /dev/null
-title: Deployment Environment Adapter (DEA)
-# DEA API version supported
-version:
-created:
-comment: Config for LF POD2 - Multinode deployment with Ceph
-environment:
- name: opnfv_virt
- mode: multinode
- net_segment_type: vlan
-wanted_release: Juno on Ubuntu 12.04.4
-nodes:
-- id: 1
- interfaces: interfaces_1
- transformations: transformations_1
- role: ceph-osd,controller
-- id: 2
- interfaces: interfaces_1
- transformations: transformations_2
- role: ceph-osd,compute
-- id: 3
- interfaces: interfaces_1
- transformations: transformations_2
- role: ceph-osd,compute
-- id: 4
- interfaces: interfaces_1
- transformations: transformations_2
- role: ceph-osd,compute
-- id: 5
- interfaces: interfaces_1
- transformations: transformations_2
- role: ceph-osd,compute
-opnfv:
- hosts:
- - name:
- address:
- fqdn:
-fuel:
- ADMIN_NETWORK:
- ipaddress: 10.20.0.2
- netmask: 255.255.0.0
- dhcp_pool_start: 10.20.0.3
- dhcp_pool_end: 10.20.0.254
- DNS_UPSTREAM: 8.8.8.8
- DNS_DOMAIN: domain.tld
- DNS_SEARCH: domain.tld
- FUEL_ACCESS:
- user: admin
- password: admin
- HOSTNAME: opnfv
- NTP1: 0.pool.ntp.org
- NTP2: 1.pool.ntp.org
- NTP3: 2.pool.ntp.org
-interfaces_1:
- eth0:
- - public
- eth1:
- - fuelweb_admin
- - management
- - storage
- - private
-transformations_1:
- transformations:
- - action: add-br
- name: br-eth0
- - action: add-port
- bridge: br-eth0
- name: eth0
- - action: add-br
- name: br-eth1
- - action: add-port
- bridge: br-eth1
- name: eth1
- - action: add-br
- name: br-ex
- - action: add-br
- name: br-mgmt
- - action: add-br
- name: br-storage
- - action: add-br
- name: br-fw-admin
- - action: add-patch
- bridges:
- - br-eth1
- - br-storage
- tags:
- - 301
- - 0
- vlan_ids:
- - 301
- - 0
- - action: add-patch
- bridges:
- - br-eth1
- - br-mgmt
- tags:
- - 300
- - 0
- vlan_ids:
- - 300
- - 0
- - action: add-patch
- bridges:
- - br-eth1
- - br-fw-admin
- trunks:
- - 0
- - action: add-patch
- bridges:
- - br-eth0
- - br-ex
- trunks:
- - 0
- - action: add-br
- name: br-prv
- - action: add-patch
- bridges:
- - br-eth1
- - br-prv
-transformations_2:
- transformations:
- - action: add-br
- name: br-eth0
- - action: add-port
- bridge: br-eth0
- name: eth0
- - action: add-br
- name: br-eth1
- - action: add-port
- bridge: br-eth1
- name: eth1
- - action: add-br
- name: br-mgmt
- - action: add-br
- name: br-storage
- - action: add-br
- name: br-fw-admin
- - action: add-patch
- bridges:
- - br-eth1
- - br-storage
- tags:
- - 301
- - 0
- vlan_ids:
- - 301
- - 0
- - action: add-patch
- bridges:
- - br-eth1
- - br-mgmt
- tags:
- - 300
- - 0
- vlan_ids:
- - 300
- - 0
- - action: add-patch
- bridges:
- - br-eth1
- - br-fw-admin
- trunks:
- - 0
- - action: add-br
- name: br-prv
- - action: add-patch
- bridges:
- - br-eth1
- - br-prv
-network:
- networking_parameters:
- base_mac: fa:16:3e:00:00:00
- dns_nameservers:
- - 8.8.4.4
- - 8.8.8.8
- floating_ranges:
- - - 172.30.10.83
- - 172.30.10.92
- gre_id_range:
- - 2
- - 65535
- internal_cidr: 192.168.111.0/24
- internal_gateway: 192.168.111.1
- net_l23_provider: ovs
- segmentation_type: vlan
- vlan_range:
- - 1000
- - 1010
- networks:
- - cidr: 172.30.10.0/24
- gateway: 172.30.10.1
- ip_ranges:
- - - 172.30.10.73
- - 172.30.10.82
- meta:
- assign_vip: true
- cidr: 172.30.10.0/24
- configurable: true
- floating_range_var: floating_ranges
- ip_range:
- - 172.30.10.73
- - 172.30.10.82
- map_priority: 1
- name: public
- notation: ip_ranges
- render_addr_mask: public
- render_type: null
- use_gateway: true
- vlan_start: null
- name: public
- vlan_start: null
- - cidr: 192.168.0.0/24
- gateway: null
- ip_ranges:
- - - 192.168.0.2
- - 192.168.0.254
- meta:
- assign_vip: true
- cidr: 192.168.0.0/24
- configurable: true
- map_priority: 2
- name: management
- notation: cidr
- render_addr_mask: internal
- render_type: cidr
- use_gateway: false
- vlan_start: 300
- name: management
- vlan_start: 300
- - cidr: 192.168.1.0/24
- gateway: null
- ip_ranges:
- - - 192.168.1.2
- - 192.168.1.254
- meta:
- assign_vip: false
- cidr: 192.168.1.0/24
- configurable: true
- map_priority: 2
- name: storage
- notation: cidr
- render_addr_mask: storage
- render_type: cidr
- use_gateway: false
- vlan_start: 301
- name: storage
- vlan_start: 301
- - cidr: null
- gateway: null
- ip_ranges: []
- meta:
- assign_vip: false
- configurable: false
- map_priority: 2
- name: private
- neutron_vlan_range: true
- notation: null
- render_addr_mask: null
- render_type: null
- seg_type: vlan
- use_gateway: false
- vlan_start: null
- name: private
- vlan_start: null
- - cidr: 10.20.0.0/16
- gateway: null
- ip_ranges:
- - - 10.20.0.3
- - 10.20.255.254
- meta:
- assign_vip: false
- configurable: false
- map_priority: 0
- notation: ip_ranges
- render_addr_mask: null
- render_type: null
- unmovable: true
- use_gateway: true
- name: fuelweb_admin
- vlan_start: null
-settings:
- editable:
- access:
- email:
- description: Email address for Administrator
- label: email
- type: text
- value: admin@localhost
- weight: 40
- metadata:
- label: Access
- weight: 10
- password:
- description: Password for Administrator
- label: password
- type: password
- value: admin
- weight: 20
- tenant:
- description: Tenant (project) name for Administrator
- label: tenant
- regex:
- error: Invalid tenant name
- source: ^(?!services$)(?!nova$)(?!glance$)(?!keystone$)(?!neutron$)(?!cinder$)(?!swift$)(?!ceph$)(?![Gg]uest$).*
- type: text
- value: admin
- weight: 30
- user:
- description: Username for Administrator
- label: username
- regex:
- error: Invalid username
- source: ^(?!services$)(?!nova$)(?!glance$)(?!keystone$)(?!neutron$)(?!cinder$)(?!swift$)(?!ceph$)(?![Gg]uest$).*
- type: text
- value: admin
- weight: 10
- additional_components:
- ceilometer:
- description: If selected, Ceilometer component will be installed
- label: Install Ceilometer
- type: checkbox
- value: false
- weight: 40
- heat:
- description: ''
- label: ''
- type: hidden
- value: true
- weight: 30
- metadata:
- label: Additional Components
- weight: 20
- murano:
- description: If selected, Murano component will be installed
- label: Install Murano
- restrictions:
- - cluster:net_provider != 'neutron'
- type: checkbox
- value: false
- weight: 20
- sahara:
- description: If selected, Sahara component will be installed
- label: Install Sahara
- type: checkbox
- value: false
- weight: 10
- common:
- auth_key:
- description: Public key(s) to include in authorized_keys on deployed nodes
- label: Public Key
- type: text
- value: ''
- weight: 70
- auto_assign_floating_ip:
- description: If selected, OpenStack will automatically assign a floating IP
- to a new instance
- label: Auto assign floating IP
- restrictions:
- - cluster:net_provider == 'neutron'
- type: checkbox
- value: false
- weight: 40
- compute_scheduler_driver:
- label: Scheduler driver
- type: radio
- value: nova.scheduler.filter_scheduler.FilterScheduler
- values:
- - data: nova.scheduler.filter_scheduler.FilterScheduler
- description: Currently the most advanced OpenStack scheduler. See the OpenStack
- documentation for details.
- label: Filter scheduler
- - data: nova.scheduler.simple.SimpleScheduler
- description: This is 'naive' scheduler which tries to find the least loaded
- host
- label: Simple scheduler
- weight: 40
- debug:
- description: Debug logging mode provides more information, but requires more
- disk space.
- label: OpenStack debug logging
- type: checkbox
- value: false
- weight: 20
- disable_offload:
- description: If set, generic segmentation offload (gso) and generic receive
- offload (gro) on physical nics will be disabled. See ethtool man.
- label: Disable generic offload on physical nics
- restrictions:
- - action: hide
- condition: cluster:net_provider == 'neutron' and networking_parameters:segmentation_type
- == 'gre'
- type: checkbox
- value: true
- weight: 80
- libvirt_type:
- label: Hypervisor type
- type: radio
- value: kvm
- values:
- - data: kvm
- description: Choose this type of hypervisor if you run OpenStack on hardware
- label: KVM
- restrictions:
- - settings:common.libvirt_type.value == 'vcenter'
- - data: qemu
- description: Choose this type of hypervisor if you run OpenStack on virtual
- hosts.
- label: QEMU
- restrictions:
- - settings:common.libvirt_type.value == 'vcenter'
- - data: vcenter
- description: Choose this type of hypervisor if you run OpenStack in a vCenter
- environment.
- label: vCenter
- restrictions:
- - settings:common.libvirt_type.value != 'vcenter' or cluster:net_provider
- == 'neutron'
- weight: 30
- metadata:
- label: Common
- weight: 30
- nova_quota:
- description: Quotas are used to limit CPU and memory usage for tenants. Enabling
- quotas will increase load on the Nova database.
- label: Nova quotas
- type: checkbox
- value: false
- weight: 25
- resume_guests_state_on_host_boot:
- description: Whether to resume previous guests state when the host reboots.
- If enabled, this option causes guests assigned to the host to resume their
- previous state. If the guest was running a restart will be attempted when
- nova-compute starts. If the guest was not running previously, a restart
- will not be attempted.
- label: Resume guests state on host boot
- type: checkbox
- value: true
- weight: 60
- use_cow_images:
- description: For most cases you will want qcow format. If it's disabled, raw
- image format will be used to run VMs. OpenStack with raw format currently
- does not support snapshotting.
- label: Use qcow format for images
- type: checkbox
- value: true
- weight: 50
- corosync:
- group:
- description: ''
- label: Group
- type: text
- value: 226.94.1.1
- weight: 10
- metadata:
- label: Corosync
- restrictions:
- - action: hide
- condition: 'true'
- weight: 50
- port:
- description: ''
- label: Port
- type: text
- value: '12000'
- weight: 20
- verified:
- description: Set True only if multicast is configured correctly on router.
- label: Need to pass network verification.
- type: checkbox
- value: false
- weight: 10
- external_dns:
- dns_list:
- description: List of upstream DNS servers, separated by comma
- label: DNS list
- type: text
- value: 8.8.8.8, 8.8.4.4
- weight: 10
- metadata:
- label: Upstream DNS
- weight: 90
- external_ntp:
- metadata:
- label: Upstream NTP
- weight: 100
- ntp_list:
- description: List of upstream NTP servers, separated by comma
- label: NTP servers list
- type: text
- value: 0.pool.ntp.org, 1.pool.ntp.org
- weight: 10
- kernel_params:
- kernel:
- description: Default kernel parameters
- label: Initial parameters
- type: text
- value: console=ttyS0,9600 console=tty0 rootdelay=90 nomodeset
- weight: 45
- metadata:
- label: Kernel parameters
- weight: 40
- neutron_mellanox:
- metadata:
- enabled: true
- label: Mellanox Neutron components
- toggleable: false
- weight: 50
- plugin:
- label: Mellanox drivers and SR-IOV plugin
- type: radio
- value: disabled
- values:
- - data: disabled
- description: If selected, Mellanox drivers, Neutron and Cinder plugin will
- not be installed.
- label: Mellanox drivers and plugins disabled
- restrictions:
- - settings:storage.iser.value == true
- - data: drivers_only
- description: If selected, Mellanox Ethernet drivers will be installed to
- support networking over Mellanox NIC. Mellanox Neutron plugin will not
- be installed.
- label: Install only Mellanox drivers
- restrictions:
- - settings:common.libvirt_type.value != 'kvm'
- - data: ethernet
- description: If selected, both Mellanox Ethernet drivers and Mellanox network
- acceleration (Neutron) plugin will be installed.
- label: Install Mellanox drivers and SR-IOV plugin
- restrictions:
- - settings:common.libvirt_type.value != 'kvm' or not (cluster:net_provider
- == 'neutron' and networking_parameters:segmentation_type == 'vlan')
- weight: 60
- vf_num:
- description: Note that one virtual function will be reserved to the storage
- network, in case of choosing iSER.
- label: Number of virtual NICs
- restrictions:
- - settings:neutron_mellanox.plugin.value != 'ethernet'
- type: text
- value: '16'
- weight: 70
- nsx_plugin:
- connector_type:
- description: Default network transport type to use
- label: NSX connector type
- type: select
- value: stt
- values:
- - data: gre
- label: GRE
- - data: ipsec_gre
- label: GRE over IPSec
- - data: stt
- label: STT
- - data: ipsec_stt
- label: STT over IPSec
- - data: bridge
- label: Bridge
- weight: 80
- l3_gw_service_uuid:
- description: UUID for the default L3 gateway service to use with this cluster
- label: L3 service UUID
- regex:
- error: Invalid L3 gateway service UUID
- source: '[a-f\d]{8}-[a-f\d]{4}-[a-f\d]{4}-[a-f\d]{4}-[a-f\d]{12}'
- type: text
- value: ''
- weight: 50
- metadata:
- enabled: false
- label: VMware NSX
- restrictions:
- - action: hide
- condition: cluster:net_provider != 'neutron' or networking_parameters:net_l23_provider
- != 'nsx'
- weight: 20
- nsx_controllers:
- description: One or more IPv4[:port] addresses of NSX controller node, separated
- by comma (e.g. 10.30.30.2,192.168.110.254:443)
- label: NSX controller endpoint
- regex:
- error: Invalid controller endpoints, specify valid IPv4[:port] pair
- source: ^(([\d]|[1-9][\d]|1[\d]{2}|2[0-4][\d]|25[0-5])\.){3}([\d]|[1-9][\d]|1[\d]{2}|2[0-4][\d]|25[0-5])(:(6553[0-5]|655[0-2][\d]|65[0-4][\d]{2}|6[0-4][\d]{3}|5[\d]{4}|[\d][\d]{0,3}))?(,(([\d]|[1-9][\d]|1[\d]{2}|2[0-4][\d]|25[0-5])\.){3}([\d]|[1-9][\d]|1[\d]{2}|2[0-4][\d]|25[0-5])(:(6553[0-5]|655[0-2][\d]|65[0-4][\d]{2}|6[0-4][\d]{3}|5[\d]{4}|[\d][\d]{0,3}))?)*$
- type: text
- value: ''
- weight: 60
- nsx_password:
- description: Password for Administrator
- label: NSX password
- regex:
- error: Empty password
- source: \S
- type: password
- value: ''
- weight: 30
- nsx_username:
- description: NSX administrator's username
- label: NSX username
- regex:
- error: Empty username
- source: \S
- type: text
- value: admin
- weight: 20
- packages_url:
- description: URL to NSX specific packages
- label: URL to NSX bits
- regex:
- error: Invalid URL, specify valid HTTP/HTTPS URL with IPv4 address (e.g.
- http://10.20.0.2/nsx)
- source: ^https?://(([\d]|[1-9][\d]|1[\d]{2}|2[0-4][\d]|25[0-5])\.){3}([\d]|[1-9][\d]|1[\d]{2}|2[0-4][\d]|25[0-5])(:(6553[0-5]|655[0-2][\d]|65[0-4][\d]{2}|6[0-4][\d]{3}|5[\d]{4}|[\d][\d]{0,3}))?(/.*)?$
- type: text
- value: ''
- weight: 70
- replication_mode:
- description: ''
- label: NSX cluster has Service nodes
- type: checkbox
- value: true
- weight: 90
- transport_zone_uuid:
- description: UUID of the pre-existing default NSX Transport zone
- label: Transport zone UUID
- regex:
- error: Invalid transport zone UUID
- source: '[a-f\d]{8}-[a-f\d]{4}-[a-f\d]{4}-[a-f\d]{4}-[a-f\d]{12}'
- type: text
- value: ''
- weight: 40
- provision:
- metadata:
- label: Provision
- restrictions:
- - action: hide
- condition: not ('experimental' in version:feature_groups)
- weight: 80
- method:
- description: Which provision method to use for this cluster.
- label: Provision method
- type: radio
- value: cobbler
- values:
- - data: image
- description: Copying pre-built images on a disk.
- label: Image
- - data: cobbler
- description: Install from scratch using anaconda or debian-installer.
- label: Classic (use anaconda or debian-installer)
- public_network_assignment:
- assign_to_all_nodes:
- description: When disabled, public network will be assigned to controllers
- and zabbix-server only
- label: Assign public network to all nodes
- type: checkbox
- value: false
- weight: 10
- metadata:
- label: Public network assignment
- restrictions:
- - action: hide
- condition: cluster:net_provider != 'neutron'
- weight: 50
- storage:
- ephemeral_ceph:
- description: Configures Nova to store ephemeral volumes in RBD. This works
- best if Ceph is enabled for volumes and images, too. Enables live migration
- of all types of Ceph backed VMs (without this option, live migration will
- only work with VMs launched from Cinder volumes).
- label: Ceph RBD for ephemeral volumes (Nova)
- restrictions:
- - settings:common.libvirt_type.value == 'vcenter'
- type: checkbox
- value: true
- weight: 75
- images_ceph:
- description: Configures Glance to use the Ceph RBD backend to store images.
- If enabled, this option will prevent Swift from installing.
- label: Ceph RBD for images (Glance)
- type: checkbox
- value: true
- weight: 30
- images_vcenter:
- description: Configures Glance to use the vCenter/ESXi backend to store images.
- If enabled, this option will prevent Swift from installing.
- label: VMWare vCenter/ESXi datastore for images (Glance)
- restrictions:
- - settings:common.libvirt_type.value != 'vcenter'
- type: checkbox
- value: false
- weight: 35
- iser:
- description: 'High performance block storage: Cinder volumes over iSER protocol
- (iSCSI over RDMA). This feature requires SR-IOV capabilities in the NIC,
- and will use a dedicated virtual function for the storage network.'
- label: iSER protocol for volumes (Cinder)
- restrictions:
- - settings:storage.volumes_lvm.value != true or settings:common.libvirt_type.value
- != 'kvm'
- type: checkbox
- value: false
- weight: 11
- metadata:
- label: Storage
- weight: 60
- objects_ceph:
- description: Configures RadosGW front end for Ceph RBD. This exposes S3 and
- Swift API Interfaces. If enabled, this option will prevent Swift from installing.
- label: Ceph RadosGW for objects (Swift API)
- restrictions:
- - settings:storage.images_ceph.value == false
- type: checkbox
- value: false
- weight: 80
- osd_pool_size:
- description: Configures the default number of object replicas in Ceph. This
- number must be equal to or lower than the number of deployed 'Storage -
- Ceph OSD' nodes.
- label: Ceph object replication factor
- regex:
- error: Invalid number
- source: ^[1-9]\d*$
- restrictions:
- - settings:common.libvirt_type.value == 'vcenter'
- type: text
- value: '2'
- weight: 85
- vc_datacenter:
- description: Inventory path to a datacenter. If you want to use ESXi host
- as datastore, it should be "ha-datacenter".
- label: Datacenter name
- regex:
- error: Empty datacenter
- source: \S
- restrictions:
- - action: hide
- condition: settings:storage.images_vcenter.value == false or settings:common.libvirt_type.value
- != 'vcenter'
- type: text
- value: ''
- weight: 65
- vc_datastore:
- description: Datastore associated with the datacenter.
- label: Datastore name
- regex:
- error: Empty datastore
- source: \S
- restrictions:
- - action: hide
- condition: settings:storage.images_vcenter.value == false or settings:common.libvirt_type.value
- != 'vcenter'
- type: text
- value: ''
- weight: 60
- vc_host:
- description: IP Address of vCenter/ESXi
- label: vCenter/ESXi IP
- regex:
- error: Specify valid IPv4 address
- source: ^(([\d]|[1-9][\d]|1[\d]{2}|2[0-4][\d]|25[0-5])\.){3}([\d]|[1-9][\d]|1[\d]{2}|2[0-4][\d]|25[0-5])$
- restrictions:
- - action: hide
- condition: settings:storage.images_vcenter.value == false or settings:common.libvirt_type.value
- != 'vcenter'
- type: text
- value: ''
- weight: 45
- vc_image_dir:
- description: The name of the directory where the glance images will be stored
- in the VMware datastore.
- label: Datastore Images directory
- regex:
- error: Empty images directory
- source: \S
- restrictions:
- - action: hide
- condition: settings:storage.images_vcenter.value == false or settings:common.libvirt_type.value
- != 'vcenter'
- type: text
- value: /openstack_glance
- weight: 70
- vc_password:
- description: vCenter/ESXi admin password
- label: Password
- regex:
- error: Empty password
- source: \S
- restrictions:
- - action: hide
- condition: settings:storage.images_vcenter.value == false or settings:common.libvirt_type.value
- != 'vcenter'
- type: password
- value: ''
- weight: 55
- vc_user:
- description: vCenter/ESXi admin username
- label: Username
- regex:
- error: Empty username
- source: \S
- restrictions:
- - action: hide
- condition: settings:storage.images_vcenter.value == false or settings:common.libvirt_type.value
- != 'vcenter'
- type: text
- value: ''
- weight: 50
- volumes_ceph:
- description: Configures Cinder to store volumes in Ceph RBD images.
- label: Ceph RBD for volumes (Cinder)
- restrictions:
- - settings:storage.volumes_lvm.value == true or settings:common.libvirt_type.value
- == 'vcenter'
- type: checkbox
- value: true
- weight: 20
- volumes_lvm:
- description: Requires at least one Storage - Cinder LVM node.
- label: Cinder LVM over iSCSI for volumes
- restrictions:
- - settings:storage.volumes_ceph.value == true
- type: checkbox
- value: false
- weight: 10
- volumes_vmdk:
- description: Configures Cinder to store volumes via VMware vCenter.
- label: VMware vCenter for volumes (Cinder)
- restrictions:
- - settings:common.libvirt_type.value != 'vcenter' or settings:storage.volumes_lvm.value
- == true
- type: checkbox
- value: false
- weight: 15
- syslog:
- metadata:
- label: Syslog
- weight: 50
- syslog_port:
- description: Remote syslog port
- label: Port
- regex:
- error: Invalid Syslog port
- source: ^([1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])$
- type: text
- value: '514'
- weight: 20
- syslog_server:
- description: Remote syslog hostname
- label: Hostname
- type: text
- value: ''
- weight: 10
- syslog_transport:
- label: Syslog transport protocol
- type: radio
- value: tcp
- values:
- - data: udp
- description: ''
- label: UDP
- - data: tcp
- description: ''
- label: TCP
- weight: 30
- vcenter:
- cluster:
- description: vCenter cluster name. If you have multiple clusters, use comma
- to separate names
- label: Cluster
- regex:
- error: Invalid cluster list
- source: ^([^,\ ]+([\ ]*[^,\ ])*)(,[^,\ ]+([\ ]*[^,\ ])*)*$
- type: text
- value: ''
- weight: 40
- datastore_regex:
- description: The Datastore regexp setting specifies the data stores to use
- with Compute. For example, "nas.*". If you want to use all available datastores,
- leave this field blank
- label: Datastore regexp
- regex:
- error: Invalid datastore regexp
- source: ^(\S.*\S|\S|)$
- type: text
- value: ''
- weight: 50
- host_ip:
- description: IP Address of vCenter
- label: vCenter IP
- regex:
- error: Specify valid IPv4 address
- source: ^(([\d]|[1-9][\d]|1[\d]{2}|2[0-4][\d]|25[0-5])\.){3}([\d]|[1-9][\d]|1[\d]{2}|2[0-4][\d]|25[0-5])$
- type: text
- value: ''
- weight: 10
- metadata:
- label: vCenter
- restrictions:
- - action: hide
- condition: settings:common.libvirt_type.value != 'vcenter'
- weight: 20
- use_vcenter:
- description: ''
- label: ''
- type: hidden
- value: true
- weight: 5
- vc_password:
- description: vCenter admin password
- label: Password
- regex:
- error: Empty password
- source: \S
- type: password
- value: admin
- weight: 30
- vc_user:
- description: vCenter admin username
- label: Username
- regex:
- error: Empty username
- source: \S
- type: text
- value: admin
- weight: 20
- vlan_interface:
- description: Physical ESXi host ethernet adapter for VLAN networking (e.g.
- vmnic1). If empty "vmnic0" is used by default
- label: ESXi VLAN interface
- restrictions:
- - action: hide
- condition: cluster:net_provider != 'nova_network' or networking_parameters:net_manager
- != 'VlanManager'
- type: text
- value: ''
- weight: 60
- zabbix:
- metadata:
- label: Zabbix Access
- restrictions:
- - action: hide
- condition: not ('experimental' in version:feature_groups)
- weight: 70
- password:
- description: Password for Zabbix Administrator
- label: password
- type: password
- value: zabbix
- weight: 20
- username:
- description: Username for Zabbix Administrator
- label: username
- type: text
- value: admin
- weight: 10
\ No newline at end of file
+++ /dev/null
-title: Deployment Hardware Adapter (DHA)
-# DHA API version supported
-version:
-created:
-comment: Config for LF POD2
-
-# Adapter to use for this definition
-adapter: ipmi
-
-# Node list.
-# Mandatory property is id, all other properties are adapter specific.
-
-nodes:
-- id: 1
- pxeMac: 00:25:b5:a0:00:2b
- ipmiIp: 172.30.8.75
- ipmiUser: admin
- ipmiPass: octopus
-- id: 2
- pxeMac: 00:25:b5:a0:00:3b
- ipmiIp: 172.30.8.65
- ipmiUser: admin
- ipmiPass: octopus
-- id: 3
- pxeMac: 00:25:b5:a0:00:4b
- ipmiIp: 172.30.8.74
- ipmiUser: admin
- ipmiPass: octopus
-- id: 4
- pxeMac: 00:25:b5:a0:00:5b
- ipmiIp: 172.30.8.73
- ipmiUser: admin
- ipmiPass: octopus
-- id: 5
- pxeMac: 00:25:b5:a0:00:6b
- ipmiIp: 172.30.8.72
- ipmiUser: admin
- ipmiPass: octopus
-# Adding the Fuel node as node id 6 which may not be correct - please
-# adjust as needed.
-- id: 6
- libvirtName: fuel-opnfv
- libvirtTemplate: templates/hardware_environment/vms/fuel.xml
- isFuel: yes
- username: root
- password: r00tme
-
-disks:
- fuel: 30G
# DEA API version supported
version:
created:
-comment: Small libvirt setup
+comment: Config for Virtual Environment - HA deployment with Ceph and Opendaylight
environment:
name: opnfv_virt
mode: ha
interfaces: interfaces_1
transformations: transformations_2
role: ceph-osd,compute
-opnfv:
- hosts:
- - name:
- address:
- fqdn:
fuel:
ADMIN_NETWORK:
ipaddress: 10.20.0.2
- netmask: 255.255.255.0
+ netmask: 255.255.0.0
dhcp_pool_start: 10.20.0.3
dhcp_pool_end: 10.20.0.254
DNS_UPSTREAM: 10.118.32.193
bridge: br-mesh
name: eth2.103
network:
+ management_vip: 192.168.0.2
+ management_vrouter_vip: 192.168.0.3
networking_parameters:
base_mac: fa:16:3e:00:00:00
dns_nameservers:
- cidr: 192.168.0.0/24
gateway: null
ip_ranges:
- - - 192.168.0.1
+ - - 192.168.0.2
- 192.168.0.254
meta:
cidr: 192.168.0.0/24
- cidr: 192.168.2.0/24
gateway: null
ip_ranges:
- - - 192.168.2.1
+ - - 192.168.2.2
- 192.168.2.254
meta:
cidr: 192.168.2.0/24
vlan_start: 103
name: private
vlan_start: 103
- - cidr: 10.20.0.0/24
+ - cidr: 10.20.0.0/16
gateway: 10.20.0.2
ip_ranges:
- - 10.20.0.3
use_gateway: true
name: fuelweb_admin
vlan_start: null
+ public_vip: 172.16.0.2
+ public_vrouter_vip: 172.16.0.3
settings:
editable:
access:
# DHA API version supported
version:
created:
-comment: Small libvirt setup
+comment: Config for Virtual Environment
# Adapter to use for this definition
adapter: libvirt
+++ /dev/null
-title: Deployment Environment Adapter (DEA)
-# DEA API version supported
-version:
-created:
-comment: Small libvirt setup
-environment:
- name: opnfv_virt
- mode: ha
- net_segment_type: vlan
-wanted_release: Juno on Ubuntu 12.04.4
-nodes:
-- id: 1
- interfaces: interfaces_1
- transformations: transformations_1
- role: ceph-osd,controller
-- id: 2
- interfaces: interfaces_1
- transformations: transformations_1
- role: ceph-osd,controller
-- id: 3
- interfaces: interfaces_1
- transformations: transformations_1
- role: ceph-osd,controller
-- id: 4
- interfaces: interfaces_1
- transformations: transformations_2
- role: ceph-osd,compute
-- id: 5
- interfaces: interfaces_1
- transformations: transformations_2
- role: ceph-osd,compute
-- id: 6
- interfaces: interfaces_1
- transformations: transformations_2
- role: ceph-osd,compute
-opnfv:
- hosts:
- - name:
- address:
- fqdn:
-fuel:
- ADMIN_NETWORK:
- ipaddress: 10.20.0.2
- netmask: 255.255.255.0
- dhcp_pool_start: 10.20.0.3
- dhcp_pool_end: 10.20.0.254
- DNS_UPSTREAM: 8.8.8.8
- DNS_DOMAIN: domain.tld
- DNS_SEARCH: domain.tld
- FUEL_ACCESS:
- user: admin
- password: admin
- HOSTNAME: opnfv_virt
- NTP1: 0.pool.ntp.org
- NTP2: 1.pool.ntp.org
- NTP3: 2.pool.ntp.org
-interfaces_1:
- eth0:
- - fuelweb_admin
- - management
- eth1:
- - storage
- eth2:
- - private
- eth3:
- - public
-transformations_1:
- transformations:
- - action: add-br
- name: br-eth0
- - action: add-port
- bridge: br-eth0
- name: eth0
- - action: add-br
- name: br-eth1
- - action: add-port
- bridge: br-eth1
- name: eth1
- - action: add-br
- name: br-eth2
- - action: add-port
- bridge: br-eth2
- name: eth2
- - action: add-br
- name: br-eth3
- - action: add-port
- bridge: br-eth3
- name: eth3
- - action: add-br
- name: br-ex
- - action: add-br
- name: br-mgmt
- - action: add-br
- name: br-storage
- - action: add-br
- name: br-fw-admin
- - action: add-patch
- bridges:
- - br-eth1
- - br-storage
- tags:
- - 102
- - 0
- vlan_ids:
- - 102
- - 0
- - action: add-patch
- bridges:
- - br-eth0
- - br-mgmt
- tags:
- - 101
- - 0
- vlan_ids:
- - 101
- - 0
- - action: add-patch
- bridges:
- - br-eth0
- - br-fw-admin
- trunks:
- - 0
- - action: add-patch
- bridges:
- - br-eth3
- - br-ex
- trunks:
- - 0
- - action: add-br
- name: br-prv
- - action: add-patch
- bridges:
- - br-eth2
- - br-prv
-transformations_2:
- transformations:
- - action: add-br
- name: br-eth0
- - action: add-port
- bridge: br-eth0
- name: eth0
- - action: add-br
- name: br-eth1
- - action: add-port
- bridge: br-eth1
- name: eth1
- - action: add-br
- name: br-eth2
- - action: add-port
- bridge: br-eth2
- name: eth2
- - action: add-br
- name: br-eth3
- - action: add-port
- bridge: br-eth3
- name: eth3
- - action: add-br
- name: br-mgmt
- - action: add-br
- name: br-storage
- - action: add-br
- name: br-fw-admin
- - action: add-patch
- bridges:
- - br-eth1
- - br-storage
- tags:
- - 102
- - 0
- vlan_ids:
- - 102
- - 0
- - action: add-patch
- bridges:
- - br-eth0
- - br-mgmt
- tags:
- - 101
- - 0
- vlan_ids:
- - 101
- - 0
- - action: add-patch
- bridges:
- - br-eth0
- - br-fw-admin
- trunks:
- - 0
- - action: add-br
- name: br-prv
- - action: add-patch
- bridges:
- - br-eth2
- - br-prv
-network:
- networking_parameters:
- base_mac: fa:16:3e:00:00:00
- dns_nameservers:
- - 8.8.4.4
- - 8.8.8.8
- floating_ranges:
- - - 172.16.0.130
- - 172.16.0.254
- gre_id_range:
- - 2
- - 65535
- internal_cidr: 192.168.111.0/24
- internal_gateway: 192.168.111.1
- net_l23_provider: ovs
- segmentation_type: vlan
- vlan_range:
- - 1000
- - 1030
- networks:
- - cidr: 172.16.0.0/24
- gateway: 172.16.0.1
- ip_ranges:
- - - 172.16.0.2
- - 172.16.0.126
- meta:
- assign_vip: true
- cidr: 172.16.0.0/24
- configurable: true
- floating_range_var: floating_ranges
- ip_range:
- - 172.16.0.2
- - 172.16.0.126
- map_priority: 1
- name: public
- notation: ip_ranges
- render_addr_mask: public
- render_type: null
- use_gateway: true
- vlan_start: null
- name: public
- vlan_start: null
- - cidr: 192.168.0.0/24
- gateway: null
- ip_ranges:
- - - 192.168.0.1
- - 192.168.0.254
- meta:
- assign_vip: true
- cidr: 192.168.0.0/24
- configurable: true
- map_priority: 2
- name: management
- notation: cidr
- render_addr_mask: internal
- render_type: cidr
- use_gateway: false
- vlan_start: 101
- name: management
- vlan_start: 101
- - cidr: 192.168.1.0/24
- gateway: null
- ip_ranges:
- - - 192.168.1.1
- - 192.168.1.254
- meta:
- assign_vip: false
- cidr: 192.168.1.0/24
- configurable: true
- map_priority: 2
- name: storage
- notation: cidr
- render_addr_mask: storage
- render_type: cidr
- use_gateway: false
- vlan_start: 102
- name: storage
- vlan_start: 102
- - cidr: null
- gateway: null
- ip_ranges: []
- meta:
- assign_vip: false
- configurable: false
- map_priority: 2
- name: private
- neutron_vlan_range: true
- notation: null
- render_addr_mask: null
- render_type: null
- seg_type: vlan
- use_gateway: false
- vlan_start: null
- name: private
- vlan_start: null
- - cidr: 10.20.0.0/24
- gateway: null
- ip_ranges:
- - - 10.20.0.3
- - 10.20.0.254
- meta:
- assign_vip: false
- configurable: false
- map_priority: 0
- notation: ip_ranges
- render_addr_mask: null
- render_type: null
- unmovable: true
- use_gateway: true
- name: fuelweb_admin
- vlan_start: null
-settings:
- editable:
- access:
- email:
- description: Email address for Administrator
- label: email
- type: text
- value: admin@localhost
- weight: 40
- metadata:
- label: Access
- weight: 10
- password:
- description: Password for Administrator
- label: password
- type: password
- value: admin
- weight: 20
- tenant:
- description: Tenant (project) name for Administrator
- label: tenant
- regex:
- error: Invalid tenant name
- source: ^(?!services$)(?!nova$)(?!glance$)(?!keystone$)(?!neutron$)(?!cinder$)(?!swift$)(?!ceph$)(?![Gg]uest$).*
- type: text
- value: admin
- weight: 30
- user:
- description: Username for Administrator
- label: username
- regex:
- error: Invalid username
- source: ^(?!services$)(?!nova$)(?!glance$)(?!keystone$)(?!neutron$)(?!cinder$)(?!swift$)(?!ceph$)(?![Gg]uest$).*
- type: text
- value: admin
- weight: 10
- additional_components:
- ceilometer:
- description: If selected, Ceilometer component will be installed
- label: Install Ceilometer
- type: checkbox
- value: false
- weight: 40
- heat:
- description: ''
- label: ''
- type: hidden
- value: true
- weight: 30
- metadata:
- label: Additional Components
- weight: 20
- murano:
- description: If selected, Murano component will be installed
- label: Install Murano
- restrictions:
- - cluster:net_provider != 'neutron'
- type: checkbox
- value: false
- weight: 20
- sahara:
- description: If selected, Sahara component will be installed
- label: Install Sahara
- type: checkbox
- value: false
- weight: 10
- common:
- auth_key:
- description: Public key(s) to include in authorized_keys on deployed nodes
- label: Public Key
- type: text
- value: ''
- weight: 70
- auto_assign_floating_ip:
- description: If selected, OpenStack will automatically assign a floating IP
- to a new instance
- label: Auto assign floating IP
- restrictions:
- - cluster:net_provider == 'neutron'
- type: checkbox
- value: false
- weight: 40
- compute_scheduler_driver:
- label: Scheduler driver
- type: radio
- value: nova.scheduler.filter_scheduler.FilterScheduler
- values:
- - data: nova.scheduler.filter_scheduler.FilterScheduler
- description: Currently the most advanced OpenStack scheduler. See the OpenStack
- documentation for details.
- label: Filter scheduler
- - data: nova.scheduler.simple.SimpleScheduler
- description: This is 'naive' scheduler which tries to find the least loaded
- host
- label: Simple scheduler
- weight: 40
- debug:
- description: Debug logging mode provides more information, but requires more
- disk space.
- label: OpenStack debug logging
- type: checkbox
- value: false
- weight: 20
- disable_offload:
- description: If set, generic segmentation offload (gso) and generic receive
- offload (gro) on physical nics will be disabled. See ethtool man.
- label: Disable generic offload on physical nics
- restrictions:
- - action: hide
- condition: cluster:net_provider == 'neutron' and networking_parameters:segmentation_type
- == 'gre'
- type: checkbox
- value: true
- weight: 80
- libvirt_type:
- label: Hypervisor type
- type: radio
- value: qemu
- values:
- - data: kvm
- description: Choose this type of hypervisor if you run OpenStack on hardware
- label: KVM
- restrictions:
- - settings:common.libvirt_type.value == 'vcenter'
- - data: qemu
- description: Choose this type of hypervisor if you run OpenStack on virtual
- hosts.
- label: QEMU
- restrictions:
- - settings:common.libvirt_type.value == 'vcenter'
- - data: vcenter
- description: Choose this type of hypervisor if you run OpenStack in a vCenter
- environment.
- label: vCenter
- restrictions:
- - settings:common.libvirt_type.value != 'vcenter' or cluster:net_provider
- == 'neutron'
- weight: 30
- metadata:
- label: Common
- weight: 30
- nova_quota:
- description: Quotas are used to limit CPU and memory usage for tenants. Enabling
- quotas will increase load on the Nova database.
- label: Nova quotas
- type: checkbox
- value: false
- weight: 25
- resume_guests_state_on_host_boot:
- description: Whether to resume previous guests state when the host reboots.
- If enabled, this option causes guests assigned to the host to resume their
- previous state. If the guest was running a restart will be attempted when
- nova-compute starts. If the guest was not running previously, a restart
- will not be attempted.
- label: Resume guests state on host boot
- type: checkbox
- value: true
- weight: 60
- use_cow_images:
- description: For most cases you will want qcow format. If it's disabled, raw
- image format will be used to run VMs. OpenStack with raw format currently
- does not support snapshotting.
- label: Use qcow format for images
- type: checkbox
- value: true
- weight: 50
- corosync:
- group:
- description: ''
- label: Group
- type: text
- value: 226.94.1.1
- weight: 10
- metadata:
- label: Corosync
- restrictions:
- - action: hide
- condition: 'true'
- weight: 50
- port:
- description: ''
- label: Port
- type: text
- value: '12000'
- weight: 20
- verified:
- description: Set True only if multicast is configured correctly on router.
- label: Need to pass network verification.
- type: checkbox
- value: false
- weight: 10
- external_dns:
- dns_list:
- description: List of upstream DNS servers, separated by comma
- label: DNS list
- type: text
- value: 8.8.8.8, 8.8.4.4
- weight: 10
- metadata:
- label: Upstream DNS
- weight: 90
- external_ntp:
- metadata:
- label: Upstream NTP
- weight: 100
- ntp_list:
- description: List of upstream NTP servers, separated by comma
- label: NTP servers list
- type: text
- value: 0.pool.ntp.org, 1.pool.ntp.org
- weight: 10
- kernel_params:
- kernel:
- description: Default kernel parameters
- label: Initial parameters
- type: text
- value: console=ttyS0,9600 console=tty0 rootdelay=90 nomodeset
- weight: 45
- metadata:
- label: Kernel parameters
- weight: 40
- neutron_mellanox:
- metadata:
- enabled: true
- label: Mellanox Neutron components
- toggleable: false
- weight: 50
- plugin:
- label: Mellanox drivers and SR-IOV plugin
- type: radio
- value: disabled
- values:
- - data: disabled
- description: If selected, Mellanox drivers, Neutron and Cinder plugin will
- not be installed.
- label: Mellanox drivers and plugins disabled
- restrictions:
- - settings:storage.iser.value == true
- - data: drivers_only
- description: If selected, Mellanox Ethernet drivers will be installed to
- support networking over Mellanox NIC. Mellanox Neutron plugin will not
- be installed.
- label: Install only Mellanox drivers
- restrictions:
- - settings:common.libvirt_type.value != 'kvm'
- - data: ethernet
- description: If selected, both Mellanox Ethernet drivers and Mellanox network
- acceleration (Neutron) plugin will be installed.
- label: Install Mellanox drivers and SR-IOV plugin
- restrictions:
- - settings:common.libvirt_type.value != 'kvm' or not (cluster:net_provider
- == 'neutron' and networking_parameters:segmentation_type == 'vlan')
- weight: 60
- vf_num:
- description: Note that one virtual function will be reserved to the storage
- network, in case of choosing iSER.
- label: Number of virtual NICs
- restrictions:
- - settings:neutron_mellanox.plugin.value != 'ethernet'
- type: text
- value: '16'
- weight: 70
- nsx_plugin:
- connector_type:
- description: Default network transport type to use
- label: NSX connector type
- type: select
- value: stt
- values:
- - data: gre
- label: GRE
- - data: ipsec_gre
- label: GRE over IPSec
- - data: stt
- label: STT
- - data: ipsec_stt
- label: STT over IPSec
- - data: bridge
- label: Bridge
- weight: 80
- l3_gw_service_uuid:
- description: UUID for the default L3 gateway service to use with this cluster
- label: L3 service UUID
- regex:
- error: Invalid L3 gateway service UUID
- source: '[a-f\d]{8}-[a-f\d]{4}-[a-f\d]{4}-[a-f\d]{4}-[a-f\d]{12}'
- type: text
- value: ''
- weight: 50
- metadata:
- enabled: false
- label: VMware NSX
- restrictions:
- - action: hide
- condition: cluster:net_provider != 'neutron' or networking_parameters:net_l23_provider
- != 'nsx'
- weight: 20
- nsx_controllers:
- description: One or more IPv4[:port] addresses of NSX controller node, separated
- by comma (e.g. 10.30.30.2,192.168.110.254:443)
- label: NSX controller endpoint
- regex:
- error: Invalid controller endpoints, specify valid IPv4[:port] pair
- source: ^(([\d]|[1-9][\d]|1[\d]{2}|2[0-4][\d]|25[0-5])\.){3}([\d]|[1-9][\d]|1[\d]{2}|2[0-4][\d]|25[0-5])(:(6553[0-5]|655[0-2][\d]|65[0-4][\d]{2}|6[0-4][\d]{3}|5[\d]{4}|[\d][\d]{0,3}))?(,(([\d]|[1-9][\d]|1[\d]{2}|2[0-4][\d]|25[0-5])\.){3}([\d]|[1-9][\d]|1[\d]{2}|2[0-4][\d]|25[0-5])(:(6553[0-5]|655[0-2][\d]|65[0-4][\d]{2}|6[0-4][\d]{3}|5[\d]{4}|[\d][\d]{0,3}))?)*$
- type: text
- value: ''
- weight: 60
- nsx_password:
- description: Password for Administrator
- label: NSX password
- regex:
- error: Empty password
- source: \S
- type: password
- value: ''
- weight: 30
- nsx_username:
- description: NSX administrator's username
- label: NSX username
- regex:
- error: Empty username
- source: \S
- type: text
- value: admin
- weight: 20
- packages_url:
- description: URL to NSX specific packages
- label: URL to NSX bits
- regex:
- error: Invalid URL, specify valid HTTP/HTTPS URL with IPv4 address (e.g.
- http://10.20.0.2/nsx)
- source: ^https?://(([\d]|[1-9][\d]|1[\d]{2}|2[0-4][\d]|25[0-5])\.){3}([\d]|[1-9][\d]|1[\d]{2}|2[0-4][\d]|25[0-5])(:(6553[0-5]|655[0-2][\d]|65[0-4][\d]{2}|6[0-4][\d]{3}|5[\d]{4}|[\d][\d]{0,3}))?(/.*)?$
- type: text
- value: ''
- weight: 70
- replication_mode:
- description: ''
- label: NSX cluster has Service nodes
- type: checkbox
- value: true
- weight: 90
- transport_zone_uuid:
- description: UUID of the pre-existing default NSX Transport zone
- label: Transport zone UUID
- regex:
- error: Invalid transport zone UUID
- source: '[a-f\d]{8}-[a-f\d]{4}-[a-f\d]{4}-[a-f\d]{4}-[a-f\d]{12}'
- type: text
- value: ''
- weight: 40
- provision:
- metadata:
- label: Provision
- restrictions:
- - action: hide
- condition: not ('experimental' in version:feature_groups)
- weight: 80
- method:
- description: Which provision method to use for this cluster.
- label: Provision method
- type: radio
- value: cobbler
- values:
- - data: image
- description: Copying pre-built images on a disk.
- label: Image
- - data: cobbler
- description: Install from scratch using anaconda or debian-installer.
- label: Classic (use anaconda or debian-installer)
- public_network_assignment:
- assign_to_all_nodes:
- description: When disabled, public network will be assigned to controllers
- and zabbix-server only
- label: Assign public network to all nodes
- type: checkbox
- value: false
- weight: 10
- metadata:
- label: Public network assignment
- restrictions:
- - action: hide
- condition: cluster:net_provider != 'neutron'
- weight: 50
- storage:
- ephemeral_ceph:
- description: Configures Nova to store ephemeral volumes in RBD. This works
- best if Ceph is enabled for volumes and images, too. Enables live migration
- of all types of Ceph backed VMs (without this option, live migration will
- only work with VMs launched from Cinder volumes).
- label: Ceph RBD for ephemeral volumes (Nova)
- restrictions:
- - settings:common.libvirt_type.value == 'vcenter'
- type: checkbox
- value: true
- weight: 75
- images_ceph:
- description: Configures Glance to use the Ceph RBD backend to store images.
- If enabled, this option will prevent Swift from installing.
- label: Ceph RBD for images (Glance)
- type: checkbox
- value: true
- weight: 30
- images_vcenter:
- description: Configures Glance to use the vCenter/ESXi backend to store images.
- If enabled, this option will prevent Swift from installing.
- label: VMWare vCenter/ESXi datastore for images (Glance)
- restrictions:
- - settings:common.libvirt_type.value != 'vcenter'
- type: checkbox
- value: false
- weight: 35
- iser:
- description: 'High performance block storage: Cinder volumes over iSER protocol
- (iSCSI over RDMA). This feature requires SR-IOV capabilities in the NIC,
- and will use a dedicated virtual function for the storage network.'
- label: iSER protocol for volumes (Cinder)
- restrictions:
- - settings:storage.volumes_lvm.value != true or settings:common.libvirt_type.value
- != 'kvm'
- type: checkbox
- value: false
- weight: 11
- metadata:
- label: Storage
- weight: 60
- objects_ceph:
- description: Configures RadosGW front end for Ceph RBD. This exposes S3 and
- Swift API Interfaces. If enabled, this option will prevent Swift from installing.
- label: Ceph RadosGW for objects (Swift API)
- restrictions:
- - settings:storage.images_ceph.value == false
- type: checkbox
- value: false
- weight: 80
- osd_pool_size:
- description: Configures the default number of object replicas in Ceph. This
- number must be equal to or lower than the number of deployed 'Storage -
- Ceph OSD' nodes.
- label: Ceph object replication factor
- regex:
- error: Invalid number
- source: ^[1-9]\d*$
- restrictions:
- - settings:common.libvirt_type.value == 'vcenter'
- type: text
- value: '2'
- weight: 85
- vc_datacenter:
- description: Inventory path to a datacenter. If you want to use ESXi host
- as datastore, it should be "ha-datacenter".
- label: Datacenter name
- regex:
- error: Empty datacenter
- source: \S
- restrictions:
- - action: hide
- condition: settings:storage.images_vcenter.value == false or settings:common.libvirt_type.value
- != 'vcenter'
- type: text
- value: ''
- weight: 65
- vc_datastore:
- description: Datastore associated with the datacenter.
- label: Datastore name
- regex:
- error: Empty datastore
- source: \S
- restrictions:
- - action: hide
- condition: settings:storage.images_vcenter.value == false or settings:common.libvirt_type.value
- != 'vcenter'
- type: text
- value: ''
- weight: 60
- vc_host:
- description: IP Address of vCenter/ESXi
- label: vCenter/ESXi IP
- regex:
- error: Specify valid IPv4 address
- source: ^(([\d]|[1-9][\d]|1[\d]{2}|2[0-4][\d]|25[0-5])\.){3}([\d]|[1-9][\d]|1[\d]{2}|2[0-4][\d]|25[0-5])$
- restrictions:
- - action: hide
- condition: settings:storage.images_vcenter.value == false or settings:common.libvirt_type.value
- != 'vcenter'
- type: text
- value: ''
- weight: 45
- vc_image_dir:
- description: The name of the directory where the glance images will be stored
- in the VMware datastore.
- label: Datastore Images directory
- regex:
- error: Empty images directory
- source: \S
- restrictions:
- - action: hide
- condition: settings:storage.images_vcenter.value == false or settings:common.libvirt_type.value
- != 'vcenter'
- type: text
- value: /openstack_glance
- weight: 70
- vc_password:
- description: vCenter/ESXi admin password
- label: Password
- regex:
- error: Empty password
- source: \S
- restrictions:
- - action: hide
- condition: settings:storage.images_vcenter.value == false or settings:common.libvirt_type.value
- != 'vcenter'
- type: password
- value: ''
- weight: 55
- vc_user:
- description: vCenter/ESXi admin username
- label: Username
- regex:
- error: Empty username
- source: \S
- restrictions:
- - action: hide
- condition: settings:storage.images_vcenter.value == false or settings:common.libvirt_type.value
- != 'vcenter'
- type: text
- value: ''
- weight: 50
- volumes_ceph:
- description: Configures Cinder to store volumes in Ceph RBD images.
- label: Ceph RBD for volumes (Cinder)
- restrictions:
- - settings:storage.volumes_lvm.value == true or settings:common.libvirt_type.value
- == 'vcenter'
- type: checkbox
- value: true
- weight: 20
- volumes_lvm:
- description: Requires at least one Storage - Cinder LVM node.
- label: Cinder LVM over iSCSI for volumes
- restrictions:
- - settings:storage.volumes_ceph.value == true
- type: checkbox
- value: false
- weight: 10
- volumes_vmdk:
- description: Configures Cinder to store volumes via VMware vCenter.
- label: VMware vCenter for volumes (Cinder)
- restrictions:
- - settings:common.libvirt_type.value != 'vcenter' or settings:storage.volumes_lvm.value
- == true
- type: checkbox
- value: false
- weight: 15
- syslog:
- metadata:
- label: Syslog
- weight: 50
- syslog_port:
- description: Remote syslog port
- label: Port
- regex:
- error: Invalid Syslog port
- source: ^([1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])$
- type: text
- value: '514'
- weight: 20
- syslog_server:
- description: Remote syslog hostname
- label: Hostname
- type: text
- value: ''
- weight: 10
- syslog_transport:
- label: Syslog transport protocol
- type: radio
- value: tcp
- values:
- - data: udp
- description: ''
- label: UDP
- - data: tcp
- description: ''
- label: TCP
- weight: 30
- vcenter:
- cluster:
- description: vCenter cluster name. If you have multiple clusters, use comma
- to separate names
- label: Cluster
- regex:
- error: Invalid cluster list
- source: ^([^,\ ]+([\ ]*[^,\ ])*)(,[^,\ ]+([\ ]*[^,\ ])*)*$
- type: text
- value: ''
- weight: 40
- datastore_regex:
- description: The Datastore regexp setting specifies the data stores to use
- with Compute. For example, "nas.*". If you want to use all available datastores,
- leave this field blank
- label: Datastore regexp
- regex:
- error: Invalid datastore regexp
- source: ^(\S.*\S|\S|)$
- type: text
- value: ''
- weight: 50
- host_ip:
- description: IP Address of vCenter
- label: vCenter IP
- regex:
- error: Specify valid IPv4 address
- source: ^(([\d]|[1-9][\d]|1[\d]{2}|2[0-4][\d]|25[0-5])\.){3}([\d]|[1-9][\d]|1[\d]{2}|2[0-4][\d]|25[0-5])$
- type: text
- value: ''
- weight: 10
- metadata:
- label: vCenter
- restrictions:
- - action: hide
- condition: settings:common.libvirt_type.value != 'vcenter'
- weight: 20
- use_vcenter:
- description: ''
- label: ''
- type: hidden
- value: true
- weight: 5
- vc_password:
- description: vCenter admin password
- label: Password
- regex:
- error: Empty password
- source: \S
- type: password
- value: admin
- weight: 30
- vc_user:
- description: vCenter admin username
- label: Username
- regex:
- error: Empty username
- source: \S
- type: text
- value: admin
- weight: 20
- vlan_interface:
- description: Physical ESXi host ethernet adapter for VLAN networking (e.g.
- vmnic1). If empty "vmnic0" is used by default
- label: ESXi VLAN interface
- restrictions:
- - action: hide
- condition: cluster:net_provider != 'nova_network' or networking_parameters:net_manager
- != 'VlanManager'
- type: text
- value: ''
- weight: 60
- zabbix:
- metadata:
- label: Zabbix Access
- restrictions:
- - action: hide
- condition: not ('experimental' in version:feature_groups)
- weight: 70
- password:
- description: Password for Zabbix Administrator
- label: password
- type: password
- value: zabbix
- weight: 20
- username:
- description: Username for Zabbix Administrator
- label: username
- type: text
- value: admin
- weight: 10
\ No newline at end of file
+++ /dev/null
-title: Deployment Hardware Adapter (DHA)
-# DHA API version supported
-version:
-created:
-comment: Small libvirt setup
-
-# Adapter to use for this definition
-adapter: libvirt
-
-# Node list.
-# Mandatory property is id, all other properties are adapter specific.
-
-nodes:
-- id: 1
- libvirtName: controller1
- libvirtTemplate: templates/virtual_environment/vms/controller.xml
-- id: 2
- libvirtName: controller2
- libvirtTemplate: templates/virtual_environment/vms/controller.xml
-- id: 3
- libvirtName: controller3
- libvirtTemplate: templates/virtual_environment/vms/controller.xml
-- id: 4
- libvirtName: compute1
- libvirtTemplate: templates/virtual_environment/vms/compute.xml
-- id: 5
- libvirtName: compute2
- libvirtTemplate: templates/virtual_environment/vms/compute.xml
-- id: 6
- libvirtName: compute3
- libvirtTemplate: templates/virtual_environment/vms/compute.xml
-- id: 7
- libvirtName: fuel-master
- libvirtTemplate: templates/virtual_environment/vms/fuel.xml
- isFuel: yes
- username: root
- password: r00tme
-
-virtNetConfDir: templates/virtual_environment/networks
-
-disks:
- fuel: 30G
- controller: 30G
- compute: 30G
+++ /dev/null
-title: Deployment Environment Adapter (DEA)
-# DEA API version supported
-version:
-created:
-comment: Small libvirt setup
-environment:
- name: opnfv_virt
- mode: multinode
- net_segment_type: vlan
-wanted_release: Juno on Ubuntu 12.04.4
-nodes:
-- id: 1
- interfaces: interfaces_1
- transformations: transformations_1
- role: ceph-osd,controller
-- id: 2
- interfaces: interfaces_1
- transformations: transformations_2
- role: ceph-osd,compute
-- id: 3
- interfaces: interfaces_1
- transformations: transformations_2
- role: ceph-osd,compute
-- id: 4
- interfaces: interfaces_1
- transformations: transformations_2
- role: ceph-osd,compute
-- id: 5
- interfaces: interfaces_1
- transformations: transformations_2
- role: ceph-osd,compute
-- id: 6
- interfaces: interfaces_1
- transformations: transformations_2
- role: ceph-osd,compute
-opnfv:
- hosts:
- - name:
- address:
- fqdn:
-fuel:
- ADMIN_NETWORK:
- ipaddress: 10.20.0.2
- netmask: 255.255.255.0
- dhcp_pool_start: 10.20.0.3
- dhcp_pool_end: 10.20.0.254
- DNS_UPSTREAM: 8.8.8.8
- DNS_DOMAIN: domain.tld
- DNS_SEARCH: domain.tld
- FUEL_ACCESS:
- user: admin
- password: admin
- HOSTNAME: opnfv_virt
- NTP1: 0.pool.ntp.org
- NTP2: 1.pool.ntp.org
- NTP3: 2.pool.ntp.org
-interfaces_1:
- eth0:
- - fuelweb_admin
- - management
- eth1:
- - storage
- eth2:
- - private
- eth3:
- - public
-transformations_1:
- transformations:
- - action: add-br
- name: br-eth0
- - action: add-port
- bridge: br-eth0
- name: eth0
- - action: add-br
- name: br-eth1
- - action: add-port
- bridge: br-eth1
- name: eth1
- - action: add-br
- name: br-eth2
- - action: add-port
- bridge: br-eth2
- name: eth2
- - action: add-br
- name: br-eth3
- - action: add-port
- bridge: br-eth3
- name: eth3
- - action: add-br
- name: br-ex
- - action: add-br
- name: br-mgmt
- - action: add-br
- name: br-storage
- - action: add-br
- name: br-fw-admin
- - action: add-patch
- bridges:
- - br-eth1
- - br-storage
- tags:
- - 102
- - 0
- vlan_ids:
- - 102
- - 0
- - action: add-patch
- bridges:
- - br-eth0
- - br-mgmt
- tags:
- - 101
- - 0
- vlan_ids:
- - 101
- - 0
- - action: add-patch
- bridges:
- - br-eth0
- - br-fw-admin
- trunks:
- - 0
- - action: add-patch
- bridges:
- - br-eth3
- - br-ex
- trunks:
- - 0
- - action: add-br
- name: br-prv
- - action: add-patch
- bridges:
- - br-eth2
- - br-prv
-transformations_2:
- transformations:
- - action: add-br
- name: br-eth0
- - action: add-port
- bridge: br-eth0
- name: eth0
- - action: add-br
- name: br-eth1
- - action: add-port
- bridge: br-eth1
- name: eth1
- - action: add-br
- name: br-eth2
- - action: add-port
- bridge: br-eth2
- name: eth2
- - action: add-br
- name: br-eth3
- - action: add-port
- bridge: br-eth3
- name: eth3
- - action: add-br
- name: br-mgmt
- - action: add-br
- name: br-storage
- - action: add-br
- name: br-fw-admin
- - action: add-patch
- bridges:
- - br-eth1
- - br-storage
- tags:
- - 102
- - 0
- vlan_ids:
- - 102
- - 0
- - action: add-patch
- bridges:
- - br-eth0
- - br-mgmt
- tags:
- - 101
- - 0
- vlan_ids:
- - 101
- - 0
- - action: add-patch
- bridges:
- - br-eth0
- - br-fw-admin
- trunks:
- - 0
- - action: add-br
- name: br-prv
- - action: add-patch
- bridges:
- - br-eth2
- - br-prv
-network:
- networking_parameters:
- base_mac: fa:16:3e:00:00:00
- dns_nameservers:
- - 8.8.4.4
- - 8.8.8.8
- floating_ranges:
- - - 172.16.0.130
- - 172.16.0.254
- gre_id_range:
- - 2
- - 65535
- internal_cidr: 192.168.111.0/24
- internal_gateway: 192.168.111.1
- net_l23_provider: ovs
- segmentation_type: vlan
- vlan_range:
- - 1000
- - 1030
- networks:
- - cidr: 172.16.0.0/24
- gateway: 172.16.0.1
- ip_ranges:
- - - 172.16.0.2
- - 172.16.0.126
- meta:
- assign_vip: true
- cidr: 172.16.0.0/24
- configurable: true
- floating_range_var: floating_ranges
- ip_range:
- - 172.16.0.2
- - 172.16.0.126
- map_priority: 1
- name: public
- notation: ip_ranges
- render_addr_mask: public
- render_type: null
- use_gateway: true
- vlan_start: null
- name: public
- vlan_start: null
- - cidr: 192.168.0.0/24
- gateway: null
- ip_ranges:
- - - 192.168.0.1
- - 192.168.0.254
- meta:
- assign_vip: true
- cidr: 192.168.0.0/24
- configurable: true
- map_priority: 2
- name: management
- notation: cidr
- render_addr_mask: internal
- render_type: cidr
- use_gateway: false
- vlan_start: 101
- name: management
- vlan_start: 101
- - cidr: 192.168.1.0/24
- gateway: null
- ip_ranges:
- - - 192.168.1.1
- - 192.168.1.254
- meta:
- assign_vip: false
- cidr: 192.168.1.0/24
- configurable: true
- map_priority: 2
- name: storage
- notation: cidr
- render_addr_mask: storage
- render_type: cidr
- use_gateway: false
- vlan_start: 102
- name: storage
- vlan_start: 102
- - cidr: null
- gateway: null
- ip_ranges: []
- meta:
- assign_vip: false
- configurable: false
- map_priority: 2
- name: private
- neutron_vlan_range: true
- notation: null
- render_addr_mask: null
- render_type: null
- seg_type: vlan
- use_gateway: false
- vlan_start: null
- name: private
- vlan_start: null
- - cidr: 10.20.0.0/24
- gateway: null
- ip_ranges:
- - - 10.20.0.3
- - 10.20.0.254
- meta:
- assign_vip: false
- configurable: false
- map_priority: 0
- notation: ip_ranges
- render_addr_mask: null
- render_type: null
- unmovable: true
- use_gateway: true
- name: fuelweb_admin
- vlan_start: null
-settings:
- editable:
- access:
- email:
- description: Email address for Administrator
- label: email
- type: text
- value: admin@localhost
- weight: 40
- metadata:
- label: Access
- weight: 10
- password:
- description: Password for Administrator
- label: password
- type: password
- value: admin
- weight: 20
- tenant:
- description: Tenant (project) name for Administrator
- label: tenant
- regex:
- error: Invalid tenant name
- source: ^(?!services$)(?!nova$)(?!glance$)(?!keystone$)(?!neutron$)(?!cinder$)(?!swift$)(?!ceph$)(?![Gg]uest$).*
- type: text
- value: admin
- weight: 30
- user:
- description: Username for Administrator
- label: username
- regex:
- error: Invalid username
- source: ^(?!services$)(?!nova$)(?!glance$)(?!keystone$)(?!neutron$)(?!cinder$)(?!swift$)(?!ceph$)(?![Gg]uest$).*
- type: text
- value: admin
- weight: 10
- additional_components:
- ceilometer:
- description: If selected, Ceilometer component will be installed
- label: Install Ceilometer
- type: checkbox
- value: false
- weight: 40
- heat:
- description: ''
- label: ''
- type: hidden
- value: true
- weight: 30
- metadata:
- label: Additional Components
- weight: 20
- murano:
- description: If selected, Murano component will be installed
- label: Install Murano
- restrictions:
- - cluster:net_provider != 'neutron'
- type: checkbox
- value: false
- weight: 20
- sahara:
- description: If selected, Sahara component will be installed
- label: Install Sahara
- type: checkbox
- value: false
- weight: 10
- common:
- auth_key:
- description: Public key(s) to include in authorized_keys on deployed nodes
- label: Public Key
- type: text
- value: ''
- weight: 70
- auto_assign_floating_ip:
- description: If selected, OpenStack will automatically assign a floating IP
- to a new instance
- label: Auto assign floating IP
- restrictions:
- - cluster:net_provider == 'neutron'
- type: checkbox
- value: false
- weight: 40
- compute_scheduler_driver:
- label: Scheduler driver
- type: radio
- value: nova.scheduler.filter_scheduler.FilterScheduler
- values:
- - data: nova.scheduler.filter_scheduler.FilterScheduler
- description: Currently the most advanced OpenStack scheduler. See the OpenStack
- documentation for details.
- label: Filter scheduler
- - data: nova.scheduler.simple.SimpleScheduler
- description: This is 'naive' scheduler which tries to find the least loaded
- host
- label: Simple scheduler
- weight: 40
- debug:
- description: Debug logging mode provides more information, but requires more
- disk space.
- label: OpenStack debug logging
- type: checkbox
- value: false
- weight: 20
- disable_offload:
- description: If set, generic segmentation offload (gso) and generic receive
- offload (gro) on physical nics will be disabled. See ethtool man.
- label: Disable generic offload on physical nics
- restrictions:
- - action: hide
- condition: cluster:net_provider == 'neutron' and networking_parameters:segmentation_type
- == 'gre'
- type: checkbox
- value: true
- weight: 80
- libvirt_type:
- label: Hypervisor type
- type: radio
- value: qemu
- values:
- - data: kvm
- description: Choose this type of hypervisor if you run OpenStack on hardware
- label: KVM
- restrictions:
- - settings:common.libvirt_type.value == 'vcenter'
- - data: qemu
- description: Choose this type of hypervisor if you run OpenStack on virtual
- hosts.
- label: QEMU
- restrictions:
- - settings:common.libvirt_type.value == 'vcenter'
- - data: vcenter
- description: Choose this type of hypervisor if you run OpenStack in a vCenter
- environment.
- label: vCenter
- restrictions:
- - settings:common.libvirt_type.value != 'vcenter' or cluster:net_provider
- == 'neutron'
- weight: 30
- metadata:
- label: Common
- weight: 30
- nova_quota:
- description: Quotas are used to limit CPU and memory usage for tenants. Enabling
- quotas will increase load on the Nova database.
- label: Nova quotas
- type: checkbox
- value: false
- weight: 25
- resume_guests_state_on_host_boot:
- description: Whether to resume previous guests state when the host reboots.
- If enabled, this option causes guests assigned to the host to resume their
- previous state. If the guest was running a restart will be attempted when
- nova-compute starts. If the guest was not running previously, a restart
- will not be attempted.
- label: Resume guests state on host boot
- type: checkbox
- value: true
- weight: 60
- use_cow_images:
- description: For most cases you will want qcow format. If it's disabled, raw
- image format will be used to run VMs. OpenStack with raw format currently
- does not support snapshotting.
- label: Use qcow format for images
- type: checkbox
- value: true
- weight: 50
- corosync:
- group:
- description: ''
- label: Group
- type: text
- value: 226.94.1.1
- weight: 10
- metadata:
- label: Corosync
- restrictions:
- - action: hide
- condition: 'true'
- weight: 50
- port:
- description: ''
- label: Port
- type: text
- value: '12000'
- weight: 20
- verified:
- description: Set True only if multicast is configured correctly on router.
- label: Need to pass network verification.
- type: checkbox
- value: false
- weight: 10
- external_dns:
- dns_list:
- description: List of upstream DNS servers, separated by comma
- label: DNS list
- type: text
- value: 8.8.8.8, 8.8.4.4
- weight: 10
- metadata:
- label: Upstream DNS
- weight: 90
- external_ntp:
- metadata:
- label: Upstream NTP
- weight: 100
- ntp_list:
- description: List of upstream NTP servers, separated by comma
- label: NTP servers list
- type: text
- value: 0.pool.ntp.org, 1.pool.ntp.org
- weight: 10
- kernel_params:
- kernel:
- description: Default kernel parameters
- label: Initial parameters
- type: text
- value: console=ttyS0,9600 console=tty0 rootdelay=90 nomodeset
- weight: 45
- metadata:
- label: Kernel parameters
- weight: 40
- neutron_mellanox:
- metadata:
- enabled: true
- label: Mellanox Neutron components
- toggleable: false
- weight: 50
- plugin:
- label: Mellanox drivers and SR-IOV plugin
- type: radio
- value: disabled
- values:
- - data: disabled
- description: If selected, Mellanox drivers, Neutron and Cinder plugin will
- not be installed.
- label: Mellanox drivers and plugins disabled
- restrictions:
- - settings:storage.iser.value == true
- - data: drivers_only
- description: If selected, Mellanox Ethernet drivers will be installed to
- support networking over Mellanox NIC. Mellanox Neutron plugin will not
- be installed.
- label: Install only Mellanox drivers
- restrictions:
- - settings:common.libvirt_type.value != 'kvm'
- - data: ethernet
- description: If selected, both Mellanox Ethernet drivers and Mellanox network
- acceleration (Neutron) plugin will be installed.
- label: Install Mellanox drivers and SR-IOV plugin
- restrictions:
- - settings:common.libvirt_type.value != 'kvm' or not (cluster:net_provider
- == 'neutron' and networking_parameters:segmentation_type == 'vlan')
- weight: 60
- vf_num:
- description: Note that one virtual function will be reserved to the storage
- network, in case of choosing iSER.
- label: Number of virtual NICs
- restrictions:
- - settings:neutron_mellanox.plugin.value != 'ethernet'
- type: text
- value: '16'
- weight: 70
- nsx_plugin:
- connector_type:
- description: Default network transport type to use
- label: NSX connector type
- type: select
- value: stt
- values:
- - data: gre
- label: GRE
- - data: ipsec_gre
- label: GRE over IPSec
- - data: stt
- label: STT
- - data: ipsec_stt
- label: STT over IPSec
- - data: bridge
- label: Bridge
- weight: 80
- l3_gw_service_uuid:
- description: UUID for the default L3 gateway service to use with this cluster
- label: L3 service UUID
- regex:
- error: Invalid L3 gateway service UUID
- source: '[a-f\d]{8}-[a-f\d]{4}-[a-f\d]{4}-[a-f\d]{4}-[a-f\d]{12}'
- type: text
- value: ''
- weight: 50
- metadata:
- enabled: false
- label: VMware NSX
- restrictions:
- - action: hide
- condition: cluster:net_provider != 'neutron' or networking_parameters:net_l23_provider
- != 'nsx'
- weight: 20
- nsx_controllers:
- description: One or more IPv4[:port] addresses of NSX controller node, separated
- by comma (e.g. 10.30.30.2,192.168.110.254:443)
- label: NSX controller endpoint
- regex:
- error: Invalid controller endpoints, specify valid IPv4[:port] pair
- source: ^(([\d]|[1-9][\d]|1[\d]{2}|2[0-4][\d]|25[0-5])\.){3}([\d]|[1-9][\d]|1[\d]{2}|2[0-4][\d]|25[0-5])(:(6553[0-5]|655[0-2][\d]|65[0-4][\d]{2}|6[0-4][\d]{3}|5[\d]{4}|[\d][\d]{0,3}))?(,(([\d]|[1-9][\d]|1[\d]{2}|2[0-4][\d]|25[0-5])\.){3}([\d]|[1-9][\d]|1[\d]{2}|2[0-4][\d]|25[0-5])(:(6553[0-5]|655[0-2][\d]|65[0-4][\d]{2}|6[0-4][\d]{3}|5[\d]{4}|[\d][\d]{0,3}))?)*$
- type: text
- value: ''
- weight: 60
- nsx_password:
- description: Password for Administrator
- label: NSX password
- regex:
- error: Empty password
- source: \S
- type: password
- value: ''
- weight: 30
- nsx_username:
- description: NSX administrator's username
- label: NSX username
- regex:
- error: Empty username
- source: \S
- type: text
- value: admin
- weight: 20
- packages_url:
- description: URL to NSX specific packages
- label: URL to NSX bits
- regex:
- error: Invalid URL, specify valid HTTP/HTTPS URL with IPv4 address (e.g.
- http://10.20.0.2/nsx)
- source: ^https?://(([\d]|[1-9][\d]|1[\d]{2}|2[0-4][\d]|25[0-5])\.){3}([\d]|[1-9][\d]|1[\d]{2}|2[0-4][\d]|25[0-5])(:(6553[0-5]|655[0-2][\d]|65[0-4][\d]{2}|6[0-4][\d]{3}|5[\d]{4}|[\d][\d]{0,3}))?(/.*)?$
- type: text
- value: ''
- weight: 70
- replication_mode:
- description: ''
- label: NSX cluster has Service nodes
- type: checkbox
- value: true
- weight: 90
- transport_zone_uuid:
- description: UUID of the pre-existing default NSX Transport zone
- label: Transport zone UUID
- regex:
- error: Invalid transport zone UUID
- source: '[a-f\d]{8}-[a-f\d]{4}-[a-f\d]{4}-[a-f\d]{4}-[a-f\d]{12}'
- type: text
- value: ''
- weight: 40
- provision:
- metadata:
- label: Provision
- restrictions:
- - action: hide
- condition: not ('experimental' in version:feature_groups)
- weight: 80
- method:
- description: Which provision method to use for this cluster.
- label: Provision method
- type: radio
- value: cobbler
- values:
- - data: image
- description: Copying pre-built images on a disk.
- label: Image
- - data: cobbler
- description: Install from scratch using anaconda or debian-installer.
- label: Classic (use anaconda or debian-installer)
- public_network_assignment:
- assign_to_all_nodes:
- description: When disabled, public network will be assigned to controllers
- and zabbix-server only
- label: Assign public network to all nodes
- type: checkbox
- value: false
- weight: 10
- metadata:
- label: Public network assignment
- restrictions:
- - action: hide
- condition: cluster:net_provider != 'neutron'
- weight: 50
- storage:
- ephemeral_ceph:
- description: Configures Nova to store ephemeral volumes in RBD. This works
- best if Ceph is enabled for volumes and images, too. Enables live migration
- of all types of Ceph backed VMs (without this option, live migration will
- only work with VMs launched from Cinder volumes).
- label: Ceph RBD for ephemeral volumes (Nova)
- restrictions:
- - settings:common.libvirt_type.value == 'vcenter'
- type: checkbox
- value: true
- weight: 75
- images_ceph:
- description: Configures Glance to use the Ceph RBD backend to store images.
- If enabled, this option will prevent Swift from installing.
- label: Ceph RBD for images (Glance)
- type: checkbox
- value: true
- weight: 30
- images_vcenter:
- description: Configures Glance to use the vCenter/ESXi backend to store images.
- If enabled, this option will prevent Swift from installing.
- label: VMWare vCenter/ESXi datastore for images (Glance)
- restrictions:
- - settings:common.libvirt_type.value != 'vcenter'
- type: checkbox
- value: false
- weight: 35
- iser:
- description: 'High performance block storage: Cinder volumes over iSER protocol
- (iSCSI over RDMA). This feature requires SR-IOV capabilities in the NIC,
- and will use a dedicated virtual function for the storage network.'
- label: iSER protocol for volumes (Cinder)
- restrictions:
- - settings:storage.volumes_lvm.value != true or settings:common.libvirt_type.value
- != 'kvm'
- type: checkbox
- value: false
- weight: 11
- metadata:
- label: Storage
- weight: 60
- objects_ceph:
- description: Configures RadosGW front end for Ceph RBD. This exposes S3 and
- Swift API Interfaces. If enabled, this option will prevent Swift from installing.
- label: Ceph RadosGW for objects (Swift API)
- restrictions:
- - settings:storage.images_ceph.value == false
- type: checkbox
- value: false
- weight: 80
- osd_pool_size:
- description: Configures the default number of object replicas in Ceph. This
- number must be equal to or lower than the number of deployed 'Storage -
- Ceph OSD' nodes.
- label: Ceph object replication factor
- regex:
- error: Invalid number
- source: ^[1-9]\d*$
- restrictions:
- - settings:common.libvirt_type.value == 'vcenter'
- type: text
- value: '2'
- weight: 85
- vc_datacenter:
- description: Inventory path to a datacenter. If you want to use ESXi host
- as datastore, it should be "ha-datacenter".
- label: Datacenter name
- regex:
- error: Empty datacenter
- source: \S
- restrictions:
- - action: hide
- condition: settings:storage.images_vcenter.value == false or settings:common.libvirt_type.value
- != 'vcenter'
- type: text
- value: ''
- weight: 65
- vc_datastore:
- description: Datastore associated with the datacenter.
- label: Datastore name
- regex:
- error: Empty datastore
- source: \S
- restrictions:
- - action: hide
- condition: settings:storage.images_vcenter.value == false or settings:common.libvirt_type.value
- != 'vcenter'
- type: text
- value: ''
- weight: 60
- vc_host:
- description: IP Address of vCenter/ESXi
- label: vCenter/ESXi IP
- regex:
- error: Specify valid IPv4 address
- source: ^(([\d]|[1-9][\d]|1[\d]{2}|2[0-4][\d]|25[0-5])\.){3}([\d]|[1-9][\d]|1[\d]{2}|2[0-4][\d]|25[0-5])$
- restrictions:
- - action: hide
- condition: settings:storage.images_vcenter.value == false or settings:common.libvirt_type.value
- != 'vcenter'
- type: text
- value: ''
- weight: 45
- vc_image_dir:
- description: The name of the directory where the glance images will be stored
- in the VMware datastore.
- label: Datastore Images directory
- regex:
- error: Empty images directory
- source: \S
- restrictions:
- - action: hide
- condition: settings:storage.images_vcenter.value == false or settings:common.libvirt_type.value
- != 'vcenter'
- type: text
- value: /openstack_glance
- weight: 70
- vc_password:
- description: vCenter/ESXi admin password
- label: Password
- regex:
- error: Empty password
- source: \S
- restrictions:
- - action: hide
- condition: settings:storage.images_vcenter.value == false or settings:common.libvirt_type.value
- != 'vcenter'
- type: password
- value: ''
- weight: 55
- vc_user:
- description: vCenter/ESXi admin username
- label: Username
- regex:
- error: Empty username
- source: \S
- restrictions:
- - action: hide
- condition: settings:storage.images_vcenter.value == false or settings:common.libvirt_type.value
- != 'vcenter'
- type: text
- value: ''
- weight: 50
- volumes_ceph:
- description: Configures Cinder to store volumes in Ceph RBD images.
- label: Ceph RBD for volumes (Cinder)
- restrictions:
- - settings:storage.volumes_lvm.value == true or settings:common.libvirt_type.value
- == 'vcenter'
- type: checkbox
- value: true
- weight: 20
- volumes_lvm:
- description: Requires at least one Storage - Cinder LVM node.
- label: Cinder LVM over iSCSI for volumes
- restrictions:
- - settings:storage.volumes_ceph.value == true
- type: checkbox
- value: false
- weight: 10
- volumes_vmdk:
- description: Configures Cinder to store volumes via VMware vCenter.
- label: VMware vCenter for volumes (Cinder)
- restrictions:
- - settings:common.libvirt_type.value != 'vcenter' or settings:storage.volumes_lvm.value
- == true
- type: checkbox
- value: false
- weight: 15
- syslog:
- metadata:
- label: Syslog
- weight: 50
- syslog_port:
- description: Remote syslog port
- label: Port
- regex:
- error: Invalid Syslog port
- source: ^([1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])$
- type: text
- value: '514'
- weight: 20
- syslog_server:
- description: Remote syslog hostname
- label: Hostname
- type: text
- value: ''
- weight: 10
- syslog_transport:
- label: Syslog transport protocol
- type: radio
- value: tcp
- values:
- - data: udp
- description: ''
- label: UDP
- - data: tcp
- description: ''
- label: TCP
- weight: 30
- vcenter:
- cluster:
- description: vCenter cluster name. If you have multiple clusters, use comma
- to separate names
- label: Cluster
- regex:
- error: Invalid cluster list
- source: ^([^,\ ]+([\ ]*[^,\ ])*)(,[^,\ ]+([\ ]*[^,\ ])*)*$
- type: text
- value: ''
- weight: 40
- datastore_regex:
- description: The Datastore regexp setting specifies the data stores to use
- with Compute. For example, "nas.*". If you want to use all available datastores,
- leave this field blank
- label: Datastore regexp
- regex:
- error: Invalid datastore regexp
- source: ^(\S.*\S|\S|)$
- type: text
- value: ''
- weight: 50
- host_ip:
- description: IP Address of vCenter
- label: vCenter IP
- regex:
- error: Specify valid IPv4 address
- source: ^(([\d]|[1-9][\d]|1[\d]{2}|2[0-4][\d]|25[0-5])\.){3}([\d]|[1-9][\d]|1[\d]{2}|2[0-4][\d]|25[0-5])$
- type: text
- value: ''
- weight: 10
- metadata:
- label: vCenter
- restrictions:
- - action: hide
- condition: settings:common.libvirt_type.value != 'vcenter'
- weight: 20
- use_vcenter:
- description: ''
- label: ''
- type: hidden
- value: true
- weight: 5
- vc_password:
- description: vCenter admin password
- label: Password
- regex:
- error: Empty password
- source: \S
- type: password
- value: admin
- weight: 30
- vc_user:
- description: vCenter admin username
- label: Username
- regex:
- error: Empty username
- source: \S
- type: text
- value: admin
- weight: 20
- vlan_interface:
- description: Physical ESXi host ethernet adapter for VLAN networking (e.g.
- vmnic1). If empty "vmnic0" is used by default
- label: ESXi VLAN interface
- restrictions:
- - action: hide
- condition: cluster:net_provider != 'nova_network' or networking_parameters:net_manager
- != 'VlanManager'
- type: text
- value: ''
- weight: 60
- zabbix:
- metadata:
- label: Zabbix Access
- restrictions:
- - action: hide
- condition: not ('experimental' in version:feature_groups)
- weight: 70
- password:
- description: Password for Zabbix Administrator
- label: password
- type: password
- value: zabbix
- weight: 20
- username:
- description: Username for Zabbix Administrator
- label: username
- type: text
- value: admin
- weight: 10
\ No newline at end of file
+++ /dev/null
-title: Deployment Hardware Adapter (DHA)
-# DHA API version supported
-version:
-created:
-comment: Small libvirt setup
-
-# Adapter to use for this definition
-adapter: libvirt
-
-# Node list.
-# Mandatory property is id, all other properties are adapter specific.
-
-nodes:
-- id: 1
- libvirtName: controller1
- libvirtTemplate: templates/virtual_environment/vms/controller.xml
-- id: 2
- libvirtName: compute1
- libvirtTemplate: templates/virtual_environment/vms/compute.xml
-- id: 3
- libvirtName: compute2
- libvirtTemplate: templates/virtual_environment/vms/compute.xml
-- id: 4
- libvirtName: compute3
- libvirtTemplate: templates/virtual_environment/vms/compute.xml
-- id: 5
- libvirtName: compute4
- libvirtTemplate: templates/virtual_environment/vms/compute.xml
-- id: 6
- libvirtName: compute5
- libvirtTemplate: templates/virtual_environment/vms/compute.xml
-- id: 7
- libvirtName: fuel-master
- libvirtTemplate: templates/virtual_environment/vms/fuel.xml
- isFuel: yes
- username: root
- password: r00tme
-
-virtNetConfDir: templates/virtual_environment/networks
-
-disks:
- fuel: 30G
- controller: 30G
- compute: 30G