Add network_data.yaml to encapsulate list of networks for j2
This moves the hard-coded networks from the default environment, and provides the first step towards enabling composable networks. Co-Author: Dan Sneddon <dsneddon@redhat.com> Partial-Bug: #1633090 Depends-On: I9f818912bd8e2a3220e41c8ccbbab3d9063b4d72 Change-Id: I7793b8badede5450b05437c84d9b40c28de7546b
This commit is contained in:
parent
ccb13e7b42
commit
a5116005d8
|
@ -0,0 +1,17 @@
|
||||||
|
heat_template_version: ocata
|
||||||
|
|
||||||
|
description: Create networks to split out Overcloud traffic
|
||||||
|
|
||||||
|
resources:
|
||||||
|
|
||||||
|
{%- for network in networks %}
|
||||||
|
{%- if network.name != 'InternalApi' %}
|
||||||
|
{{network.name}}Network:
|
||||||
|
{%- else %}
|
||||||
|
InternalNetwork:
|
||||||
|
{%- endif %}
|
||||||
|
type: OS::TripleO::Network::{{network.name}}
|
||||||
|
{%- endfor %}
|
||||||
|
|
||||||
|
NetworkExtraConfig:
|
||||||
|
type: OS::TripleO::Network::ExtraConfig
|
|
@ -1,26 +0,0 @@
|
||||||
heat_template_version: ocata
|
|
||||||
|
|
||||||
description: Create networks to split out Overcloud traffic
|
|
||||||
|
|
||||||
resources:
|
|
||||||
|
|
||||||
ExternalNetwork:
|
|
||||||
type: OS::TripleO::Network::External
|
|
||||||
|
|
||||||
InternalNetwork:
|
|
||||||
type: OS::TripleO::Network::InternalApi
|
|
||||||
|
|
||||||
StorageMgmtNetwork:
|
|
||||||
type: OS::TripleO::Network::StorageMgmt
|
|
||||||
|
|
||||||
StorageNetwork:
|
|
||||||
type: OS::TripleO::Network::Storage
|
|
||||||
|
|
||||||
TenantNetwork:
|
|
||||||
type: OS::TripleO::Network::Tenant
|
|
||||||
|
|
||||||
ManagementNetwork:
|
|
||||||
type: OS::TripleO::Network::Management
|
|
||||||
|
|
||||||
NetworkExtraConfig:
|
|
||||||
type: OS::TripleO::Network::ExtraConfig
|
|
|
@ -0,0 +1,30 @@
|
||||||
|
# List of networks, used for j2 templating of enabled networks
|
||||||
|
#
|
||||||
|
# Supported values:
|
||||||
|
#
|
||||||
|
# name: Name of the network (mandatory)
|
||||||
|
# name_lower: lowercase version of name used for filenames
|
||||||
|
# (optional, defaults to name.lower())
|
||||||
|
# vlan: vlan for the network (optional)
|
||||||
|
# gateway: gateway for the network (optional)
|
||||||
|
# enabled: Is the network enabled (optional, defaults to true)
|
||||||
|
# vip: Enable creation of a virtual IP on this network
|
||||||
|
# [TODO] (dsneddon@redhat.com) - Enable dynamic creation of VIP ports, to support
|
||||||
|
# VIPs on non-default networks. See https://bugs.launchpad.net/tripleo/+bug/1667104
|
||||||
|
#
|
||||||
|
- name: External
|
||||||
|
vip: true
|
||||||
|
- name: InternalApi
|
||||||
|
name_lower: internal_api
|
||||||
|
vip: true
|
||||||
|
- name: Storage
|
||||||
|
vip: true
|
||||||
|
- name: StorageMgmt
|
||||||
|
name_lower: storage_mgmt
|
||||||
|
vip: true
|
||||||
|
- name: Tenant
|
||||||
|
vip: false # Tenant network does not use VIPs
|
||||||
|
- name: Management
|
||||||
|
# Management network is disabled by default
|
||||||
|
enabled: false
|
||||||
|
vip: false # Management network does not use VIPs
|
|
@ -23,22 +23,16 @@ resource_registry:
|
||||||
OS::TripleO::Tasks::{{role.name}}PostConfig: OS::Heat::None
|
OS::TripleO::Tasks::{{role.name}}PostConfig: OS::Heat::None
|
||||||
OS::TripleO::{{role.name}}ExtraConfigPre: puppet/extraconfig/pre_deploy/default.yaml
|
OS::TripleO::{{role.name}}ExtraConfigPre: puppet/extraconfig/pre_deploy/default.yaml
|
||||||
# Port assignments for the {{role.name}} role
|
# Port assignments for the {{role.name}} role
|
||||||
|
{%- if role.name != 'ObjectStorage' %}
|
||||||
|
{%- for network in networks %}
|
||||||
|
OS::TripleO::{{role.name}}::Ports::{{network.name}}Port: network/ports/noop.yaml
|
||||||
|
{%- endfor %}
|
||||||
|
{%- else %}
|
||||||
# Note we have to special-case ObjectStorage for backwards compatibility
|
# Note we have to special-case ObjectStorage for backwards compatibility
|
||||||
{% if role.name != 'ObjectStorage' %}
|
{%- for network in networks %}
|
||||||
OS::TripleO::{{role.name}}::Ports::ExternalPort: network/ports/noop.yaml
|
OS::TripleO::SwiftStorage::Ports::{{network.name}}Port: network/ports/noop.yaml
|
||||||
OS::TripleO::{{role.name}}::Ports::InternalApiPort: network/ports/noop.yaml
|
{%- endfor %}
|
||||||
OS::TripleO::{{role.name}}::Ports::StoragePort: network/ports/noop.yaml
|
{%- endif %}
|
||||||
OS::TripleO::{{role.name}}::Ports::StorageMgmtPort: network/ports/noop.yaml
|
|
||||||
OS::TripleO::{{role.name}}::Ports::TenantPort: network/ports/noop.yaml
|
|
||||||
OS::TripleO::{{role.name}}::Ports::ManagementPort: network/ports/noop.yaml
|
|
||||||
{% else %}
|
|
||||||
OS::TripleO::SwiftStorage::Ports::ExternalPort: network/ports/noop.yaml
|
|
||||||
OS::TripleO::SwiftStorage::Ports::InternalApiPort: network/ports/noop.yaml
|
|
||||||
OS::TripleO::SwiftStorage::Ports::StoragePort: network/ports/noop.yaml
|
|
||||||
OS::TripleO::SwiftStorage::Ports::StorageMgmtPort: network/ports/noop.yaml
|
|
||||||
OS::TripleO::SwiftStorage::Ports::TenantPort: network/ports/noop.yaml
|
|
||||||
OS::TripleO::SwiftStorage::Ports::ManagementPort: network/ports/noop.yaml
|
|
||||||
{% endif %}
|
|
||||||
OS::TripleO::{{role.name}}::Net::SoftwareConfig: net-config-noop.yaml
|
OS::TripleO::{{role.name}}::Net::SoftwareConfig: net-config-noop.yaml
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
||||||
|
@ -84,12 +78,9 @@ resource_registry:
|
||||||
# TripleO overcloud networks
|
# TripleO overcloud networks
|
||||||
OS::TripleO::Network: network/networks.yaml
|
OS::TripleO::Network: network/networks.yaml
|
||||||
|
|
||||||
OS::TripleO::Network::External: OS::Heat::None
|
{%- for network in networks %}
|
||||||
OS::TripleO::Network::InternalApi: OS::Heat::None
|
OS::TripleO::Network::{{network.name}}: OS::Heat::None
|
||||||
OS::TripleO::Network::StorageMgmt: OS::Heat::None
|
{%- endfor %}
|
||||||
OS::TripleO::Network::Storage: OS::Heat::None
|
|
||||||
OS::TripleO::Network::Tenant: OS::Heat::None
|
|
||||||
OS::TripleO::Network::Management: OS::Heat::None
|
|
||||||
|
|
||||||
OS::TripleO::Network::ExtraConfig: OS::Heat::None
|
OS::TripleO::Network::ExtraConfig: OS::Heat::None
|
||||||
|
|
||||||
|
@ -98,10 +89,10 @@ resource_registry:
|
||||||
OS::TripleO::Network::Ports::NetIpListMap: network/ports/net_ip_list_map.yaml
|
OS::TripleO::Network::Ports::NetIpListMap: network/ports/net_ip_list_map.yaml
|
||||||
|
|
||||||
# Port assignments for the VIPs
|
# Port assignments for the VIPs
|
||||||
OS::TripleO::Network::Ports::ExternalVipPort: network/ports/noop.yaml
|
{%- for network in networks if network.vip|default(false) %}
|
||||||
OS::TripleO::Network::Ports::InternalApiVipPort: network/ports/noop.yaml
|
OS::TripleO::Network::Ports::{{network.name}}VipPort: network/ports/noop.yaml
|
||||||
OS::TripleO::Network::Ports::StorageVipPort: network/ports/noop.yaml
|
{%- endfor %}
|
||||||
OS::TripleO::Network::Ports::StorageMgmtVipPort: network/ports/noop.yaml
|
|
||||||
OS::TripleO::Network::Ports::RedisVipPort: network/ports/ctlplane_vip.yaml
|
OS::TripleO::Network::Ports::RedisVipPort: network/ports/ctlplane_vip.yaml
|
||||||
OS::TripleO::Network::Ports::ControlPlaneVipPort: OS::Neutron::Port
|
OS::TripleO::Network::Ports::ControlPlaneVipPort: OS::Neutron::Port
|
||||||
|
|
||||||
|
|
|
@ -32,6 +32,9 @@ def parse_opts(argv):
|
||||||
parser.add_argument('-r', '--roles-data', metavar='ROLES_DATA',
|
parser.add_argument('-r', '--roles-data', metavar='ROLES_DATA',
|
||||||
help="""relative path to the roles_data.yaml file.""",
|
help="""relative path to the roles_data.yaml file.""",
|
||||||
default='roles_data.yaml')
|
default='roles_data.yaml')
|
||||||
|
parser.add_argument('-n', '--network-data', metavar='NETWORK_DATA',
|
||||||
|
help="""relative path to the network_data.yaml file.""",
|
||||||
|
default='network_data.yaml')
|
||||||
parser.add_argument('--safe',
|
parser.add_argument('--safe',
|
||||||
action='store_true',
|
action='store_true',
|
||||||
help="""Enable safe mode (do not overwrite files).""",
|
help="""Enable safe mode (do not overwrite files).""",
|
||||||
|
@ -71,11 +74,15 @@ def _j2_render_to_file(j2_template, j2_data, outfile_name=None,
|
||||||
out_f.write(r_template)
|
out_f.write(r_template)
|
||||||
|
|
||||||
|
|
||||||
def process_templates(template_path, role_data_path, output_dir, overwrite):
|
def process_templates(template_path, role_data_path, output_dir,
|
||||||
|
network_data_path, overwrite):
|
||||||
|
|
||||||
with open(role_data_path) as role_data_file:
|
with open(role_data_path) as role_data_file:
|
||||||
role_data = yaml.safe_load(role_data_file)
|
role_data = yaml.safe_load(role_data_file)
|
||||||
|
|
||||||
|
with open(network_data_path) as network_data_file:
|
||||||
|
network_data = yaml.safe_load(network_data_file)
|
||||||
|
|
||||||
j2_excludes_path = os.path.join(template_path, 'j2_excludes.yaml')
|
j2_excludes_path = os.path.join(template_path, 'j2_excludes.yaml')
|
||||||
with open(j2_excludes_path) as role_data_file:
|
with open(j2_excludes_path) as role_data_file:
|
||||||
j2_excludes = yaml.safe_load(role_data_file)
|
j2_excludes = yaml.safe_load(role_data_file)
|
||||||
|
@ -150,7 +157,8 @@ def process_templates(template_path, role_data_path, output_dir, overwrite):
|
||||||
print("jinja2 rendering normal template %s" % f)
|
print("jinja2 rendering normal template %s" % f)
|
||||||
with open(file_path) as j2_template:
|
with open(file_path) as j2_template:
|
||||||
template_data = j2_template.read()
|
template_data = j2_template.read()
|
||||||
j2_data = {'roles': role_data}
|
j2_data = {'roles': role_data,
|
||||||
|
'networks': network_data}
|
||||||
out_f = os.path.basename(f).replace('.j2.yaml', '.yaml')
|
out_f = os.path.basename(f).replace('.j2.yaml', '.yaml')
|
||||||
out_f_path = os.path.join(out_dir, out_f)
|
out_f_path = os.path.join(out_dir, out_f)
|
||||||
_j2_render_to_file(template_data, j2_data, out_f_path,
|
_j2_render_to_file(template_data, j2_data, out_f_path,
|
||||||
|
@ -164,5 +172,7 @@ def process_templates(template_path, role_data_path, output_dir, overwrite):
|
||||||
opts = parse_opts(sys.argv)
|
opts = parse_opts(sys.argv)
|
||||||
|
|
||||||
role_data_path = os.path.join(opts.base_path, opts.roles_data)
|
role_data_path = os.path.join(opts.base_path, opts.roles_data)
|
||||||
|
network_data_path = os.path.join(opts.base_path, opts.network_data)
|
||||||
|
|
||||||
process_templates(opts.base_path, role_data_path, opts.output_dir, (not opts.safe))
|
process_templates(opts.base_path, role_data_path, opts.output_dir,
|
||||||
|
network_data_path, (not opts.safe))
|
||||||
|
|
Loading…
Reference in New Issue