aboutsummaryrefslogtreecommitdiffstats
path: root/ci/common/net-config-multinode-os-net-config.yaml
diff options
context:
space:
mode:
authorEmilien Macchi <emilien@redhat.com>2017-01-25 10:35:20 -0500
committerEmilien Macchi <emilien@redhat.com>2017-01-27 14:26:31 +0000
commit1dd364fc8aea3305faa039524dc09ab1078237bb (patch)
tree33c08714ff299b07167f7a8b03eb9eeb812198de /ci/common/net-config-multinode-os-net-config.yaml
parentc349789089157b0210d8de4f317599df81fa9760 (diff)
Use os-net-config in multinode jobs
Full credits to James Slagle, author of this code in TripleO CI: https://review.openstack.org/#/c/409346 This patch adds a new template for configuring networking on the Overcloud nodes using os-net-config in multinode jobs. Previously we were not using os-net-config at all. Also updates the multinode.yaml environment to use this network config template. The IP of each subnode is used when the vxlan tunnels are configured in OVS, given that, each node needs its own unique network configuration. To accomodate that, the templates makes use of the network_config_hook function to influence run-os-net-config.sh This patch is just the first step to totally switching to os-net-config in multinode jobs. The devstack-gate code is still in use to bootstrap the initial networking on the undercloud and subnodes. That will be switched over in subsequent patches. Change-Id: I6efa71eb23109d0b3b480061135c572ab89f5981 Co-Authorized-By: James Slagle <jslagle@redhat.com> Implements: blueprint multinode-ci-os-net-config
Diffstat (limited to 'ci/common/net-config-multinode-os-net-config.yaml')
-rw-r--r--ci/common/net-config-multinode-os-net-config.yaml114
1 files changed, 114 insertions, 0 deletions
diff --git a/ci/common/net-config-multinode-os-net-config.yaml b/ci/common/net-config-multinode-os-net-config.yaml
new file mode 100644
index 00000000..227c5da2
--- /dev/null
+++ b/ci/common/net-config-multinode-os-net-config.yaml
@@ -0,0 +1,114 @@
+heat_template_version: 2016-10-14
+
+description: >
+ Software Config to drive os-net-config for a simple bridge configured
+ with a static IP address for the ctlplane network.
+
+parameters:
+ ControlPlaneIp:
+ default: ''
+ description: IP address/subnet on the ctlplane network
+ type: string
+ ExternalIpSubnet:
+ default: ''
+ description: IP address/subnet on the external network
+ type: string
+ InternalApiIpSubnet:
+ default: ''
+ description: IP address/subnet on the internal API network
+ type: string
+ StorageIpSubnet:
+ default: ''
+ description: IP address/subnet on the storage network
+ type: string
+ StorageMgmtIpSubnet:
+ default: ''
+ description: IP address/subnet on the storage mgmt network
+ type: string
+ TenantIpSubnet:
+ default: ''
+ description: IP address/subnet on the tenant network
+ type: string
+ ManagementIpSubnet:
+ default: ''
+ description: IP address/subnet on the management network
+ type: string
+ ControlPlaneSubnetCidr: # Override this via parameter_defaults
+ default: '24'
+ description: The subnet CIDR of the control plane network.
+ type: string
+ OvSBridgeMtu:
+ default: 1300
+ description: The mtu of the OvS bridge
+ type: number
+
+resources:
+
+ OsNetConfigImpl:
+ type: OS::Heat::SoftwareConfig
+ properties:
+ group: script
+ config:
+ list_join:
+ - ''
+ - - |
+ #!/bin/bash
+ function network_config_hook {
+ primary_private_ip=$(cat /etc/nodepool/primary_node_private)
+ sed -i "s/primary_private_ip/$primary_private_ip/" /etc/os-net-config/config.json
+ subnode_private_ip=$(cat /etc/nodepool/node_private)
+ sed -i "s/subnode_private_ip/$subnode_private_ip/" /etc/os-net-config/config.json
+ # We start with an arbitrarily high vni key so that we don't
+ # overlap with Neutron created values. These will also match the
+ # values that we've been using previously from the devstack-gate
+ # code.
+ vni=1000002
+ subnode_index=$(grep -n $(cat /etc/nodepool/node_private) /etc/nodepool/sub_nodes_private | cut -d: -f1)
+ let vni+=$subnode_index
+ sed -i "s/vni/$vni/" /etc/os-net-config/config.json
+ export interface_name="br-ex_$primary_private_ip"
+ # Until we are fully migrated to os-net-config we need to clean
+ # up the old bridge first created by devstack-gate
+ ovs-vsctl del-br br-ex
+ }
+
+ -
+ str_replace:
+ template:
+ get_file: ../../network/scripts/run-os-net-config.sh
+ params:
+ $network_config:
+ network_config:
+ - type: ovs_bridge
+ name: bridge_name
+ mtu:
+ get_param: OvSBridgeMtu
+ use_dhcp: false
+ addresses:
+ - ip_netmask:
+ list_join:
+ - "/"
+ - - get_param: ControlPlaneIp
+ - get_param: ControlPlaneSubnetCidr
+ members:
+ - type: ovs_tunnel
+ name: interface_name
+ tunnel_type: vxlan
+ ovs_options:
+ - list_join:
+ - "="
+ - - key
+ - vni
+ - list_join:
+ - "="
+ - - remote_ip
+ - primary_private_ip
+ - list_join:
+ - "="
+ - - local_ip
+ - subnode_private_ip
+
+outputs:
+ OS::stack_id:
+ description: The OsNetConfigImpl resource.
+ value: {get_resource: OsNetConfigImpl}