diff --git a/experimental/networks/bigip_neutron_port.yaml b/experimental/networks/bigip_neutron_port.yaml index 36544e4..5124081 100644 --- a/experimental/networks/bigip_neutron_port.yaml +++ b/experimental/networks/bigip_neutron_port.yaml @@ -1,4 +1,4 @@ -heat_template_version: 2016-04-08 +heat_template_version: ocata description: This template creates a standard neutron port to associate with a Big-IP instance. This template uses an index parameter that enables ports to be created as part of a resource group. @@ -19,6 +19,18 @@ parameters: type: comma_delimited_list label: Network Subnets description: A list of subnets the ports should be created in + network_static_self_ips: + type: json + label: Fixed Static IPs + description: A list of Fixed IPs + default: [] + +conditions: + fixed_IP: + not: + equals: + - get_param: network_static_self_ips + - [] resources: bigip_neutron_port: @@ -31,15 +43,29 @@ resources: - ip_address: 0.0.0.0/0 - ip_address: ::/0 fixed_ips: - repeat: - for_each: - <%subnet%>: - str_split: - - ';' - - { get_param: [network_subnets, { get_param: index }] } - template: - subnet: <%subnet%> - + if: + - fixed_IP + - repeat: + for_each: + <%subnet%>: + str_split: + - ';' + - { get_param: [network_subnets, { get_param: index }] } + <%ip_address%>: + str_split: + - ';' + - { get_param: [network_static_self_ips, { get_param: index }] } + template: + subnet: <%subnet%> + ip_address: <%ip_address%> + - repeat: + for_each: + <%subnet%>: + str_split: + - ';' + - { get_param: [network_subnets, { get_param: index }] } + template: + subnet: <%subnet%> outputs: neutron_port_id: value: {get_resource: bigip_neutron_port} diff --git a/experimental/networks/bigip_neutron_ports.yaml b/experimental/networks/bigip_neutron_ports.yaml index a9c6aa1..e1913eb 100644 --- a/experimental/networks/bigip_neutron_ports.yaml +++ b/experimental/networks/bigip_neutron_ports.yaml @@ -1,4 +1,4 @@ -heat_template_version: 2016-04-08 +heat_template_version: ocata description: This template creates a standard neutron port to associate with a Big-IP instance. This template uses an index parameter that enables ports to be created as part of a resource group. @@ -19,6 +19,11 @@ parameters: type: comma_delimited_list label: Network Subnets description: A list of subnets the ports should be created in + network_static_self_ips: + type: json + label: Fixed IPs to map to the BIG-IP + description: Fixed IPs for the corresponding VLANs. + default: [] resources: network_vlan_ports: @@ -31,6 +36,7 @@ resources: index: "%index%" network_names: { get_param: network_names } network_subnets: { get_param: network_subnets } + network_static_self_ips: { get_param: network_static_self_ips } security_groups: { get_param: security_group_ids } outputs: diff --git a/experimental/networks/bigip_nnic_handler.yaml b/experimental/networks/bigip_nnic_handler.yaml index fdd23ad..fcb8581 100644 --- a/experimental/networks/bigip_nnic_handler.yaml +++ b/experimental/networks/bigip_nnic_handler.yaml @@ -1,4 +1,4 @@ -heat_template_version: 2016-04-08 +heat_template_version: ocata description: This template builds components for dynamic number of nics. @@ -15,6 +15,11 @@ parameters: type: comma_delimited_list label: OS Neutron Subnets to map to the BIG-IP VLANs description: The Neutron Subnets for the corresponding BIG-IP VLANs. + network_vlan_static_self_ips: + type: json + label: Fixed IPs to map to the BIG-IP + description: Fixed IPs for the corresponding VLANs. + default: [] network_vlan_security_group_ids: type: comma_delimited_list label: Security Group IDs @@ -54,6 +59,12 @@ parameters: description: Additonal options to add to curl_cli value of the WaitConditionHandle that enables status signals to be sent back to Heat default: None +conditions: + static_IP: + not: + equals: + - get_param: network_vlan_static_self_ips + - [] resources: @@ -63,6 +74,11 @@ resources: count: { get_param: bigip_nic_count } network_names: { get_param: network_vlan_names } network_subnets: { get_param: network_vlan_subnets } + network_static_self_ips: + if: + - static_IP + - get_param: network_vlan_static_self_ips + - [] security_group_ids: { get_param: network_vlan_security_group_ids } onboard_network_config: diff --git a/experimental/templates/cluster/nnic/prod_stack/static/f5_bigip_cluster_n_nic.yaml b/experimental/templates/cluster/nnic/prod_stack/static/f5_bigip_cluster_n_nic.yaml index f4c6bd1..339d692 100644 --- a/experimental/templates/cluster/nnic/prod_stack/static/f5_bigip_cluster_n_nic.yaml +++ b/experimental/templates/cluster/nnic/prod_stack/static/f5_bigip_cluster_n_nic.yaml @@ -1,4 +1,4 @@ -heat_template_version: 2016-04-08 +heat_template_version: ocata description: This template deploys standard f5 BIG-IP VE - NNIC instances in a config-sync cluster. parameters: bigip_image: @@ -188,6 +188,13 @@ parameters: description: Network to which the BIG-IP management interface is attached. constraints: - custom_constraint: neutron.network + mgmt_subnet: + type: string + label: Management Network Subnet + description: Network Subnet to which the BIG-IP management interface is attached. + constraints: + - custom_constraint: neutron.subnet + default: None mgmt_security_group_name: type: string label: Management Security Group Name @@ -204,6 +211,25 @@ parameters: type: json label: OS Neutron Port Fixed IPs Subnets description: The list of Neutron Subnets for each Port's Fixed IP with each item in the format . Each item's first IP will be configured as self ip on the BIG-IP VLAN. + network_vlan_static_self_ips: + type: json + label: OS Neutron Port Fixed IPs + description: The list of Neutron Fixed IPs that will be configured as a self ip on the BIG-IP VLAN + default: [] + bigip1_mgmt_IP: + type: string + label: BIG-IP Instance One Management IP + description: Fixed Static IP address for the BIG-IP instance one + default: None + #constraints: + #- custom_constraint: ip_addr + bigip2_mgmt_IP: + type: string + label: BIG-IP Instance Two Management IP + description: Fixed Static IP address for the BIG-IP instance two + default: None + #constraints: + #- custom_constraint: ip_addr network_vlan_names_cluster_index: type: number label: OS Neutron VLAN Index for Cluster Fixed IP @@ -284,6 +310,27 @@ parameters: label: Additional Heat Wait Condition Notify Curl Options description: Additional options for the heat wait condition signals sent via curl default: None +conditions: + mgmt_ip1: + not: + equals: + - get_param: bigip1_mgmt_IP + - None + mgmt_ip2: + not: + equals: + - get_param: bigip2_mgmt_IP + - None + other_ips: + not: + equals: + - get_param: network_vlan_static_self_ips + - [] + static_IP: + and: + - mgmt_ip1 + - mgmt_ip2 + - other_ips parameter_groups: - label: BIG-IP General Provisioning parameters: @@ -328,10 +375,12 @@ parameter_groups: - label: OS Network parameters: - mgmt_network + - mgmt_subnet - mgmt_security_group_name - network_vlan_security_group_rules - network_vlan_names - network_vlan_subnets + - network_vlan_static_self_ips - network_vlan_subnets_cluster_index - network_vlan_names_cluster_index - label: BIG-IP Network @@ -446,6 +495,12 @@ resources: type: OS::Neutron::Port properties: network: { get_param: mgmt_network } + fixed_ips: + if: + - static_IP + - - subnet_id: {get_param: mgmt_subnet} + ip_address: {get_param: bigip1_mgmt_IP} + - - subnet_id: {get_param: mgmt_subnet} security_groups: - { get_attr: [mgmt_security_group, mgmt_security_group_id] } bigip_nnic_handler_bigip1: @@ -454,6 +509,11 @@ resources: bigip_nic_count: { get_param: bigip_nic_count } network_vlan_names: { get_param: network_vlan_names } network_vlan_subnets: { get_param: [network_vlan_subnets, 0] } + network_vlan_static_self_ips: + if: + - static_IP + - get_param: [network_vlan_static_self_ips, 0] + - [] network_vlan_security_group_ids: { get_attr: [security_groups, security_group_id] } bigip_vlan_names: { get_param: bigip_vlan_names } bigip_vlan_tags: { get_param: bigip_vlan_tags } @@ -601,6 +661,12 @@ resources: type: OS::Neutron::Port properties: network: { get_param: mgmt_network } + fixed_ips: + if: + - static_IP + - - subnet_id: {get_param: mgmt_subnet} + ip_address: {get_param: bigip2_mgmt_IP} + - - subnet_id: {get_param: mgmt_subnet} security_groups: - { get_attr: [mgmt_security_group, mgmt_security_group_id] } bigip_nnic_handler_bigip2: @@ -609,6 +675,11 @@ resources: bigip_nic_count: { get_param: bigip_nic_count } network_vlan_names: { get_param: network_vlan_names } network_vlan_subnets: { get_param: [network_vlan_subnets, 1] } + network_vlan_static_self_ips: + if: + - static_IP + - get_param: [network_vlan_static_self_ips, 1] + - [] network_vlan_security_group_ids: { get_attr: [security_groups, security_group_id] } bigip_vlan_names: { get_param: bigip_vlan_names } bigip_vlan_tags: { get_param: bigip_vlan_tags } diff --git a/experimental/templates/cluster/nnic/prod_stack/static/f5_bigip_cluster_n_nic_env.yaml b/experimental/templates/cluster/nnic/prod_stack/static/f5_bigip_cluster_n_nic_env.yaml index 673ae22..229c3b9 100644 --- a/experimental/templates/cluster/nnic/prod_stack/static/f5_bigip_cluster_n_nic_env.yaml +++ b/experimental/templates/cluster/nnic/prod_stack/static/f5_bigip_cluster_n_nic_env.yaml @@ -20,7 +20,12 @@ parameters: bigip_mgmt_nic_mtu: 1400 bigip_servers_dns: mgmt_network: mgmt-dhcp-disabled + mgmt_subnet: mgmt-dhcp-disabled_subnet mgmt_security_group_name: Mgmt_secgroup_2_NIC_cluster + + bigip1_mgmt_IP: 169.1.2.10 + bigip2_mgmt_IP: 169.1.2.20 + bigip_nic_count: 2 network_vlan_names_cluster_index: 1 network_vlan_subnets_cluster_index: 1 @@ -41,6 +46,17 @@ parameters: - dev-data3-subnet1 - dev-data4-subnet - dev-data5-subnet + network_vlan_static_self_ips: + - - 10.1.1.10 + - 10.1.2.10 + - 10.1.3.10 + - 10.1.4.10 + - 10.1.5.10 + - - 10.1.1.20 + - 10.1.2.20 + - 10.1.3.20 + - 10.1.4.20 + - 10.1.5.20 network_vlan_security_group_rules: security_group_rules: - rules: