diff options
Diffstat (limited to 'mcp/reclass/classes/cluster/mcp-common-noha')
11 files changed, 993 insertions, 0 deletions
diff --git a/mcp/reclass/classes/cluster/mcp-common-noha/haproxy_openstack_api.yml b/mcp/reclass/classes/cluster/mcp-common-noha/haproxy_openstack_api.yml new file mode 100644 index 000000000..dd3bc4761 --- /dev/null +++ b/mcp/reclass/classes/cluster/mcp-common-noha/haproxy_openstack_api.yml @@ -0,0 +1,166 @@ +############################################################################## +# Copyright (c) 2018 Mirantis Inc., Enea AB and others. +# 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 +############################################################################## +--- +parameters: + _param: + haproxy_check: check inter 30m fastinter 2s downinter 4s rise 3 fall 3 + haproxy: + proxy: + listen: + cinder_api: + type: openstack-service + service_name: cinder + binds: + - address: ${_param:cluster_vip_address} + port: 8776 + servers: + - name: ctl01 + host: ${_param:cluster_node01_address} + port: 8776 + params: ${_param:haproxy_check} + glance_api: + type: openstack-service + service_name: glance + binds: + - address: ${_param:cluster_vip_address} + port: 9292 + servers: + - name: ctl01 + host: ${_param:cluster_node01_address} + port: 9292 + params: ${_param:haproxy_check} + glance_registry_api: + type: general-service + service_name: glance + binds: + - address: ${_param:cluster_vip_address} + port: 9191 + servers: + - name: ctl01 + host: ${_param:cluster_node01_address} + port: 9191 + params: ${_param:haproxy_check} + heat_api: + type: openstack-service + service_name: heat + binds: + - address: ${_param:cluster_vip_address} + port: 8004 + servers: + - name: ctl01 + host: ${_param:cluster_node01_address} + port: 8004 + params: ${_param:haproxy_check} + heat_cfn_api: + type: openstack-service + service_name: heat + binds: + - address: ${_param:cluster_vip_address} + port: 8000 + servers: + - name: ctl01 + host: ${_param:cluster_node01_address} + port: 8000 + params: ${_param:haproxy_check} + keystone_public_api: + type: openstack-service + service_name: keystone + binds: + - address: ${_param:cluster_vip_address} + port: 5000 + servers: + - name: ctl01 + host: ${_param:cluster_node01_address} + port: 5000 + params: ${_param:haproxy_check} + keystone_admin_api: + type: openstack-service + service_name: keystone + binds: + - address: ${_param:cluster_vip_address} + port: 35357 + servers: + - name: ctl01 + host: ${_param:cluster_node01_address} + port: 35357 + params: ${_param:haproxy_check} + neutron_api: + type: openstack-service + service_name: neutron + binds: + - address: ${_param:cluster_vip_address} + port: 9696 + servers: + - name: ctl01 + host: ${_param:cluster_node01_address} + port: 9696 + params: ${_param:haproxy_check} + nova_placement_api: + type: openstack-service + binds: + - address: ${_param:cluster_vip_address} + port: 8778 + servers: + - name: ctl01 + host: ${_param:cluster_node01_address} + port: 8778 + params: ${_param:haproxy_check} + nova_api: + type: openstack-service + service_name: nova + binds: + - address: ${_param:cluster_vip_address} + port: 8774 + servers: + - name: ctl01 + host: ${_param:cluster_node01_address} + port: 8774 + params: ${_param:haproxy_check} + nova_metadata_api: + type: openstack-service + binds: + - address: ${_param:cluster_vip_address} + port: 8775 + servers: + - name: ctl01 + host: ${_param:cluster_node01_address} + port: 8775 + params: ${_param:haproxy_check} + aodh-api: + type: openstack-service + service_name: aodh + binds: + - address: ${_param:cluster_vip_address} + port: 8042 + servers: + - name: ctl01 + host: ${_param:cluster_node01_address} + port: 8042 + params: ${_param:haproxy_check} + barbican_api: + type: openstack-service + service_name: barbican + binds: + - address: ${_param:cluster_vip_address} + port: 9311 + servers: + - name: ctl01 + host: ${_param:cluster_node01_address} + port: 9311 + params: ${_param:haproxy_check} + barbican_admin_api: + type: openstack-service + service_name: barbican + binds: + - address: ${_param:cluster_vip_address} + port: 9312 + servers: + - name: ctl01 + host: ${_param:cluster_node01_address} + port: 9312 + params: ${_param:haproxy_check} diff --git a/mcp/reclass/classes/cluster/mcp-common-noha/infra/config.yml.j2 b/mcp/reclass/classes/cluster/mcp-common-noha/infra/config.yml.j2 new file mode 100644 index 000000000..90e6ffc8d --- /dev/null +++ b/mcp/reclass/classes/cluster/mcp-common-noha/infra/config.yml.j2 @@ -0,0 +1,36 @@ +############################################################################## +# Copyright (c) 2018 Mirantis Inc., Enea AB and others. +# 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 +############################################################################## +{%- import 'net_map.j2' as nm with context %} +--- +classes: + - cluster.all-mcp-arch-common.infra.config_pdf +parameters: + _param: + openstack_control_node01_hostname: ctl01 + pxe_admin_address: ${_param:reclass_config_master} + single_address: ${_param:opnfv_infra_config_address} + salt_master_host: 127.0.0.1 + salt_minion_ca_host: ${linux:network:fqdn} + salt: + master: + file_recv: true + worker_threads: 4 + command_timeout: 20 + reclass: + storage: + node: + openstack_control_node01: + name: ${_param:openstack_control_node01_hostname} + domain: ${_param:cluster_domain} + classes: + - cluster.${_param:cluster_name}.openstack.control + params: + linux_system_codename: bionic + salt_master_host: ${_param:reclass_config_master} + single_address: ${_param:openstack_control_node01_address} + pxe_admin_address: ${_param:opnfv_openstack_control_node01_pxe_admin_address} diff --git a/mcp/reclass/classes/cluster/mcp-common-noha/infra/init.yml.j2 b/mcp/reclass/classes/cluster/mcp-common-noha/infra/init.yml.j2 new file mode 100644 index 000000000..d3e07e106 --- /dev/null +++ b/mcp/reclass/classes/cluster/mcp-common-noha/infra/init.yml.j2 @@ -0,0 +1,48 @@ +############################################################################## +# Copyright (c) 2018 Mirantis Inc., Enea AB and others. +# 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 +############################################################################## +{%- import 'net_map.j2' as nm with context %} +--- +classes: + - cluster.all-mcp-arch-common +parameters: + _param: + # infra service addresses + infra_config_address: ${_param:opnfv_infra_config_address} + infra_config_deploy_address: {{ conf.SALT_MASTER }} + cluster_domain: ${_param:cluster_name}.local + reclass_config_master: ${_param:opnfv_infra_config_pxe_admin_address} + infra_maas_node01_hostname: mas01 + infra_maas_node01_address: ${_param:opnfv_infra_maas_node01_address} + infra_maas_node01_deploy_address: ${_param:opnfv_infra_maas_node01_deploy_address} + linux: + system: + apt: + config: + prefer_ipv4: + Acquire::ForceIPv4: true + allow_downgrades: + APT::Get::allow-downgrades: true + network: + host: + cfg01: + address: ${_param:opnfv_infra_config_address} + names: + - cfg01 + - cfg01.${_param:cluster_domain} + cfg: + address: ${_param:opnfv_infra_config_address} + names: + - cfg + - cfg.${_param:cluster_domain} +{%- if nm.cluster.has_baremetal_nodes %} + mas01: + address: ${_param:infra_maas_node01_address} + names: + - ${_param:infra_maas_node01_hostname} + - ${_param:infra_maas_node01_hostname}.${_param:cluster_domain} +{%- endif %} diff --git a/mcp/reclass/classes/cluster/mcp-common-noha/init_options.yml b/mcp/reclass/classes/cluster/mcp-common-noha/init_options.yml new file mode 100644 index 000000000..4b5a4dec8 --- /dev/null +++ b/mcp/reclass/classes/cluster/mcp-common-noha/init_options.yml @@ -0,0 +1,24 @@ +############################################################################## +# Copyright (c) 2018 Mirantis Inc., Enea AB and others. +# 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 +############################################################################## +--- +classes: + - cluster.all-mcp-arch-common +parameters: + _param: + # openstack service addresses + openstack_control_address: ${_param:opnfv_openstack_control_node01_address} + openstack_control_node01_address: ${_param:opnfv_openstack_control_node01_address} + openstack_control_node02_address: ${_param:opnfv_openstack_control_node02_address} + openstack_control_node03_address: ${_param:opnfv_openstack_control_node03_address} + openstack_database_address: ${_param:openstack_control_address} + openstack_message_queue_address: ${_param:openstack_control_address} + openstack_message_queue_node01_address: ${_param:openstack_control_node01_address} + openstack_message_queue_node02_address: ${_param:openstack_control_node02_address} + openstack_message_queue_node03_address: ${_param:openstack_control_node03_address} + openstack_gateway_address: ${_param:opnfv_openstack_gateway_node01_address} + control_address: ${_param:openstack_control_address} diff --git a/mcp/reclass/classes/cluster/mcp-common-noha/openstack_compute.yml b/mcp/reclass/classes/cluster/mcp-common-noha/openstack_compute.yml new file mode 100644 index 000000000..edaf5190a --- /dev/null +++ b/mcp/reclass/classes/cluster/mcp-common-noha/openstack_compute.yml @@ -0,0 +1,95 @@ +############################################################################## +# Copyright (c) 2018 Mirantis Inc., Enea AB and others. +# 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 +############################################################################## +--- +classes: + - service.nfs.client + - system.nova.compute.single + - service.cinder.volume.single + - system.cinder.volume.backend.lvm + - system.ceilometer.agent.cluster + - system.ceilometer.client.nova_compute + - system.ceilometer.client.cinder_volume + - system.ceilometer.agent.polling.default + - service.barbican.client.single + - cluster.all-mcp-arch-common.backports + - cluster.mcp-common-noha.openstack_compute_pdf +parameters: + nova: + compute: + libvirt_service: libvirtd + libvirt_bin: /etc/default/libvirtd + disk_cachemodes: file=directsync,block=none + vncproxy_url: http://${_param:cluster_vip_address}:6080 + heal_instance_info_cache_interval: 300 + bind: + vnc_address: ${_param:single_address} + network: + region: ${_param:openstack_region} + user: neutron + tenant: service + password: ${_param:keystone_neutron_password} + barbican: + enabled: ${_param:barbican_integration_enabled} + image: + verify_glance_signatures: false + pkgs: + - nova-compute + - python3-novaclient + - pm-utils + - sysfsutils + neutron: + compute: + notification: true + vlan_aware_vms: true + root_helper_daemon: false + report_interval: 120 + agent_mode: ${_param:neutron_compute_agent_mode} + message_queue: + host: ${_param:openstack_control_address} + metadata: + host: ${_param:openstack_control_address} + cinder: + volume: + backend: + lvm-driver: + # Align system.cinder.volume.backend.lvm and MaaS data + volume_group: ${linux:storage:lvm:cinder-vg:name} + my_ip: ${_param:single_address} + database: + host: ${_param:cluster_local_address} + identity: + host: ${_param:cluster_local_address} + glance: + host: ${_param:cluster_local_address} + message_queue: + host: ${_param:cluster_local_address} + barbican: + enabled: ${_param:barbican_integration_enabled} + pkgs: + - cinder-volume + openiscsi_services: + - tgt + - iscsid + nfs: + client: + mount: + nfs: + path: /var/lib/nova/instances + fstype: nfs + device: ${_param:openstack_control_address}:/srv/nova/instances + linux: + storage: + lvm: + # Align with both system.cinder.volume.backend.lvm and MaaS data + cinder-vg: + name: vgroot + system: + kernel: + sysctl: + vm.dirty_ratio: 10 + vm.dirty_background_ratio: 5 diff --git a/mcp/reclass/classes/cluster/mcp-common-noha/openstack_compute_pdf.yml.j2 b/mcp/reclass/classes/cluster/mcp-common-noha/openstack_compute_pdf.yml.j2 new file mode 100644 index 000000000..b63555339 --- /dev/null +++ b/mcp/reclass/classes/cluster/mcp-common-noha/openstack_compute_pdf.yml.j2 @@ -0,0 +1,76 @@ +############################################################################## +# Copyright (c) 2018 Mirantis Inc., Enea AB and others. +# 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 +############################################################################## +{#- NOTE: br-{mgmt,ctl} are cross-referenced, careful when changing names #} +{%- import 'net_map.j2' as nm with context %} +{%- import 'net_macros.j2' as ma with context %} +{#- Filter-out NIC duplicates by constructing a dict (used NICs only) #} +{%- set nics = { nm.cmp001.nic_mgmt: True, nm.cmp001.nic_private: True } %} +{%- set vlans = { nm.vlan_mgmt: nm.cmp001.nic_mgmt } %} +{%- if '-ovs-' not in conf.MCP_DEPLOY_SCENARIO and '-fdio-' not in conf.MCP_DEPLOY_SCENARIO %} +{%- set vlan_private_start = (nm.vlan_private | string).rsplit('-')[0] %} +{%- do vlans.update({ vlan_private_start: nm.cmp001.nic_private }) %} +{%- endif %} +--- +parameters: + _param: + # Should later be determined via PDF/IDF, AArch64 has ESP on /dev/sda1 +{%- if nm.cmp001.idx < conf.nodes | length %} +{%- if conf.nodes[nm.cmp001.idx].node.type == 'virtual' %} + ~cinder_lvm_devices: ['/dev/vdb'] +{%- elif conf.nodes[nm.cmp001.idx].node.arch == 'aarch64' or + conf.nodes[nm.cmp001.idx].disks.0.disk_capacity | storage_size_num | float > 2000000000000 %} + ~cinder_lvm_devices: ['/dev/sda2'] +{%- else %} + ~cinder_lvm_devices: ['/dev/sda1'] +{%- endif %} +{%- endif %} + linux: + network: +{%- if '-fdio-' not in conf.MCP_DEPLOY_SCENARIO %} + ovs_nowait: true + bridge: openvswitch +{%- else %} + dpdk: + enabled: true + driver: "${_param:compute_dpdk_driver}" + vpp: + enabled: true + decimal_interface_names: true + # Reuse ovs-dpdk socket mem configuration from IDF + dpdk_socket_mem: ${_param:compute_ovs_dpdk_socket_mem} + main_core: ${linux:system:kernel:isolcpu} + gid: 'neutron' +{%- endif %} + interface: + pxe_admin_int: + enabled: true + name: ${_param:pxe_admin_interface} + proto: static + type: eth + address: ${_param:pxe_admin_address} + netmask: ${_param:opnfv_net_admin_mask} + mtu: ${_param:interface_mtu} + noifupdown: true + +{#- prevent duplicates for tagged mgmt on the same physical interface as PXE/admin #} +{%- if nm.cmp001.nic_admin in nics %} + {%- do nics.pop(nm.cmp001.nic_admin) %} +{%- endif %} + +{{ ma.linux_network_interfaces_nic(nics) }} + +{{ ma.linux_network_interfaces_vlan(vlans) }} + + br-mgmt: + enabled: true + type: bridge + proto: static + address: ${_param:single_address} + netmask: ${_param:opnfv_net_mgmt_mask} + use_interfaces: + - {{ ma.interface_str(nm.cmp001.nic_mgmt, nm.vlan_mgmt) }} diff --git a/mcp/reclass/classes/cluster/mcp-common-noha/openstack_control.yml.j2 b/mcp/reclass/classes/cluster/mcp-common-noha/openstack_control.yml.j2 new file mode 100644 index 000000000..e383edd16 --- /dev/null +++ b/mcp/reclass/classes/cluster/mcp-common-noha/openstack_control.yml.j2 @@ -0,0 +1,247 @@ +############################################################################## +# Copyright (c) 2018 Mirantis Inc., Enea AB and others. +# 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 +############################################################################## +--- +classes: + - system.linux.system.lowmem + - service.nfs.server + - system.ceilometer.client + - system.ceilometer.client.neutron + - system.memcached.server.single + - system.rabbitmq.server.single + - system.rabbitmq.server.vhost.openstack + - system.keystone.server.wsgi + - system.keystone.server.single + - system.keystone.client.single + - system.keystone.client.v3.service.keystone + - system.keystone.client.service.nova21 + - system.keystone.client.service.nova-placement + - system.keystone.client.service.cinder3 + - system.keystone.client.service.ceilometer + - system.keystone.client.service.aodh + - system.keystone.client.service.gnocchi + - system.keystone.client.service.panko + - system.keystone.client.service.barbican + - system.glance.control.single + - system.nova.control.single + - system.cinder.control.single + - system.cinder.control.backend.lvm + - system.heat.server.single + - service.mysql.server.single + - system.galera.server.database.cinder + - system.galera.server.database.glance + - system.galera.server.database.neutron + - system.galera.server.database.heat + - system.galera.server.database.keystone + - system.galera.server.database.nova + - system.galera.server.database.aodh + - system.galera.server.database.gnocchi + - system.galera.server.database.panko + - system.galera.server.database.barbican + - system.barbican.server.single + - service.barbican.server.plugin.simple_crypto + - service.redis.server.single + - service.ceilometer.server.single + - system.ceilometer.server.backend.default + - system.aodh.server.single + - system.gnocchi.server.single + - service.panko.server.single + - system.apache.server.site.aodh + - system.apache.server.site.gnocchi + - system.apache.server.site.panko + - system.apache.server.site.barbican + - system.apache.server.single + - system.horizon.server.single + - system.nginx.server.single + - system.nginx.server.proxy.openstack_web + - service.haproxy.proxy.single +{%- if '-sfc-' in conf.MCP_DEPLOY_SCENARIO %} + - system.keystone.client.service.tacker + - system.galera.server.database.tacker + - service.tacker.server.single +{%- endif %} + - cluster.all-mcp-arch-common.backports + - cluster.mcp-common-noha.haproxy_openstack_api + - cluster.mcp-common-noha.openstack_control_pdf +parameters: + _param: + ceilometer_create_gnocchi_resources: 'True' + ceilometer_endpoint_status: absent + barbican_integration_enabled: 'false' + linux: + system: + package: + python-msgpack: + version: latest + sysfs: + transparent_hugepages: + kernel/mm/transparent_hugepage/enabled: never + keystone: + server: + admin_email: ${_param:admin_email} + openrc_extra: + volume_device_name: sdc + pkgs: + - keystone + - python3-memcache + - python3-openstackclient + client: + enabled: true + resources: + v3: + enabled: true + services: + ceilometer: + status: absent + # required only for Rally validation + cinder: + type: volume + description: OpenStack Volume Service + server: + identity: + admin: + api_version: 3 + admin_identity: + admin: + api_version: '' + user_domain_name: 'Default' + project_domain_name: 'Default' + glance: + server: + storage: + engine: file + images: [] + workers: 1 + barbican: + enabled: ${_param:barbican_integration_enabled} + identity: + barbican_endpoint: ${barbican:server:host_href} + pkgs: + - glance + services: + - glance-api + cinder: + controller: + barbican: + enabled: ${_param:barbican_integration_enabled} + pkgs: + - cinder-api + - cinder-scheduler + nova: + controller: + metadata: + password: ${_param:metadata_password} + bind: + private_address: ${_param:cluster_local_address} + public_address: ${_param:cluster_vip_address} + novncproxy_port: 6080 + vncproxy_url: http://${_param:cluster_vip_address}:6080 + workers: 1 + barbican: + enabled: ${_param:barbican_integration_enabled} + pkgs: + - nova-api + - nova-conductor + - nova-consoleauth + - nova-scheduler + - nova-novncproxy + - python3-novaclient + horizon: + server: + # yamllint disable-line rule:truthy + secure: False + heat: + server: + bind: + api_cfn: + address: ${_param:single_address} + api_cloudwatch: + address: ${_param:single_address} + mysql: + server: + version: '5.7' + bind: + address: ${_param:cluster_local_address} + key_buffer: 8 + max_allowed_packet: 128 + max_connections: 2048 + thread_stack: 512 + thread_cache_size: 12 + query_cache_limit: 2 + query_cache_size: 0 + ceilometer: + server: + ~database: ~ + redis: + server: + version: 5.0 + appendfsync: 'no' + bind: + address: ${_param:single_address} + gnocchi: + common: + storage: + driver: redis + redis_url: redis://${_param:single_address}:6379 + incoming: + driver: redis + redis_url: redis://${_param:single_address}:6379 + nfs: + server: + share: + nova_instances: + path: /srv/nova/instances + host: + nova: + host: ${_param:single_address}/${_param:opnfv_net_mgmt_mask} + params: + - rw + - no_root_squash + - async + neutron: + server: + vlan_aware_vms: true + root_helper_daemon: false + agent_down_time: 300 + global_physnet_mtu: ${_param:interface_mtu} + backend: + external_mtu: ${_param:interface_mtu} +{%- if '-bgpvpn-' in conf.MCP_DEPLOY_SCENARIO %} + bgp_vpn: + enabled: True + driver: opendaylight_v2 +{%- endif %} + apache: + server: + bind: + listen_default_ports: false + site: + gnocchi: &wsgi_threads + wsgi: + threads: 1 + barbican: + <<: *wsgi_threads + barbican_admin: + <<: *wsgi_threads + mod_wsgi: libapache2-mod-wsgi-py3 + barbican: + server: + ks_notifications_enable: true + store: + software: + crypto_plugin: simple_crypto + store_plugin: store_crypto + global_default: true + rabbitmq: + server: + env_variables: + hostname: localhost + nginx: + server: + site: + nginx_ssl_redirect_openstack_web: + enabled: false diff --git a/mcp/reclass/classes/cluster/mcp-common-noha/openstack_control_pdf.yml.j2 b/mcp/reclass/classes/cluster/mcp-common-noha/openstack_control_pdf.yml.j2 new file mode 100644 index 000000000..06df3b845 --- /dev/null +++ b/mcp/reclass/classes/cluster/mcp-common-noha/openstack_control_pdf.yml.j2 @@ -0,0 +1,56 @@ +############################################################################## +# Copyright (c) 2018 Mirantis Inc., Enea AB and others. +# 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 +############################################################################## +{%- import 'net_map.j2' as nm with context %} +{%- import 'net_macros.j2' as ma with context %} +{#- Filter-out NIC duplicates by constructing a dict (used NICs only) #} +{%- set nics = { nm.ctl01.nic_mgmt: True, nm.ctl01.nic_public: True } %} +{%- set vlans = { nm.vlan_mgmt: nm.ctl01.nic_mgmt, nm.vlan_public: nm.ctl01.nic_public } %} +--- +parameters: + linux: + network: + interface: + pxe_admin_int: + enabled: true + name: {{ nm.ctl01.nic_admin }} + proto: static + type: eth + address: ${_param:pxe_admin_address} + netmask: ${_param:opnfv_net_admin_mask} + mtu: ${_param:interface_mtu} + noifupdown: true + +{#- prevent duplicates for tagged mgmt on the same physical interface as PXE/admin #} +{%- if nm.ctl01.nic_admin in nics %} + {%- do nics.pop(nm.ctl01.nic_admin) %} +{%- endif %} + +{{ ma.linux_network_interfaces_nic(nics) }} + +{{ ma.linux_network_interfaces_vlan(vlans) }} + + br-ctl: + enabled: true + type: bridge + proto: static + address: ${_param:single_address} + netmask: ${_param:opnfv_net_mgmt_mask} + noifupdown: true + use_interfaces: + - {{ ma.interface_str(nm.ctl01.nic_mgmt, nm.vlan_mgmt) }} + br-ext: + enabled: true + type: bridge + proto: static + address: ${_param:cluster_public_host} + netmask: ${_param:opnfv_net_public_mask} + gateway: ${_param:opnfv_net_public_gw} + name_servers: {{ nm.dns_public }} + use_interfaces: + - {{ ma.interface_str(nm.ctl01.nic_public, nm.vlan_public) }} + noifupdown: true diff --git a/mcp/reclass/classes/cluster/mcp-common-noha/openstack_gateway.yml b/mcp/reclass/classes/cluster/mcp-common-noha/openstack_gateway.yml new file mode 100644 index 000000000..e59263c99 --- /dev/null +++ b/mcp/reclass/classes/cluster/mcp-common-noha/openstack_gateway.yml @@ -0,0 +1,20 @@ +############################################################################## +# Copyright (c) 2018 Mirantis Inc., Enea AB and others. +# 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 +############################################################################## +--- +classes: + - cluster.all-mcp-arch-common.backports + - cluster.mcp-common-noha.openstack_gateway_pdf +parameters: + neutron: + gateway: + notification: true + agent_mode: ${_param:neutron_gateway_agent_mode} + vlan_aware_vms: true + root_helper_daemon: false + dhcp_lease_duration: 3600 + report_interval: 120 diff --git a/mcp/reclass/classes/cluster/mcp-common-noha/openstack_gateway_pdf.yml.j2 b/mcp/reclass/classes/cluster/mcp-common-noha/openstack_gateway_pdf.yml.j2 new file mode 100644 index 000000000..00d8fbd8c --- /dev/null +++ b/mcp/reclass/classes/cluster/mcp-common-noha/openstack_gateway_pdf.yml.j2 @@ -0,0 +1,92 @@ +############################################################################## +# Copyright (c) 2018 Mirantis Inc., Enea AB and others. +# 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 +############################################################################## +--- +{%- import 'net_map.j2' as nm with context %} +{%- import 'net_macros.j2' as ma with context %} +{#- Filter-out NIC duplicates by constructing a dict (used NICs only) #} +{%- set nics = { nm.ctl01.nic_mgmt: True, nm.ctl01.nic_private: True } %} +{%- set vlans = { nm.vlan_mgmt: nm.ctl01.nic_mgmt } %} +{%- if '-fdio-' in conf.MCP_DEPLOY_SCENARIO %} +{%- do nics.update({ nm.ctl01.nic_public: True }) %} +{%- do vlans.update({ nm.vlan_public: nm.ctl01.nic_public }) %} +{%- elif '-ovs-' not in conf.MCP_DEPLOY_SCENARIO %} +{%- set vlan_private_start = (nm.vlan_private | string).rsplit('-')[0] %} +{%- do vlans.update({ vlan_private_start: nm.ctl01.nic_private }) %} +{%- endif %} +parameters: + linux: + network: +{%- if '-fdio-' not in conf.MCP_DEPLOY_SCENARIO %} +{%- set floating_br_type = 'ovs_bridge' %} + bridge: openvswitch +{%- else %} +{%- set floating_br_type = 'bridge' %} + vpp: + enabled: true + decimal_interface_names: true + # Reuse ovs-dpdk socket mem configuration from IDF + dpdk_socket_mem: ${_param:compute_ovs_dpdk_socket_mem} + main_core: ${linux:system:kernel:isolcpu} + gid: 'neutron' + commands: | + create tap host-if-name vpp_ext_tap host-bridge br-floating rx-ring-size 1024 tx-ring-size 1024 + set interface state ${_param:external_vpp_tap} up + dpdk: + enabled: true + driver: "${_param:compute_dpdk_driver}" +{%- endif %} + interface: + pxe_admin_int: + enabled: true + name: {{ nm.ctl01.nic_admin }} + proto: static + type: eth + address: ${_param:pxe_admin_address} + netmask: ${_param:opnfv_net_admin_mask} + mtu: ${_param:interface_mtu} + noifupdown: true + +{#- prevent duplicates for tagged mgmt on the same physical interface as PXE/admin #} +{%- if nm.ctl01.nic_admin in nics %} + {%- do nics.pop(nm.ctl01.nic_admin) %} +{%- endif %} + +{{ ma.linux_network_interfaces_nic(nics) }} + +{{ ma.linux_network_interfaces_vlan(vlans) }} + +{%- if '-fdio-' not in conf.MCP_DEPLOY_SCENARIO %} + {{ ma.interface_str(nm.ctl01.nic_public, nm.vlan_public) }}: + enabled: true + mtu: ${_param:interface_mtu} + proto: manual + ovs_port_type: OVSPort + type: ovs_port + ovs_bridge: br-floating + bridge: br-floating +{%- endif %} + br-floating: + enabled: true + type: {{ floating_br_type }} + proto: static + address: ${_param:external_address} + netmask: ${_param:opnfv_net_public_mask} + gateway: ${_param:opnfv_net_public_gw} + name_servers: {{ nm.dns_public }} + use_interfaces: + - {{ ma.interface_str(nm.ctl01.nic_public, nm.vlan_public) }} + noifupdown: true + br-mgmt: + enabled: true + type: bridge + proto: static + address: ${_param:single_address} + netmask: ${_param:opnfv_net_mgmt_mask} + mtu: ${_param:interface_mtu} + use_interfaces: + - {{ ma.interface_str(nm.ctl01.nic_mgmt, nm.vlan_mgmt) }} diff --git a/mcp/reclass/classes/cluster/mcp-common-noha/openstack_init.yml.j2 b/mcp/reclass/classes/cluster/mcp-common-noha/openstack_init.yml.j2 new file mode 100644 index 000000000..3f3ff0ab8 --- /dev/null +++ b/mcp/reclass/classes/cluster/mcp-common-noha/openstack_init.yml.j2 @@ -0,0 +1,133 @@ +############################################################################## +# Copyright (c) 2018 Mirantis Inc., Enea AB and others. +# 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 +############################################################################## +{%- import 'net_map.j2' as nm with context %} +--- +parameters: + _param: + openstack_region: RegionOne + admin_email: root@localhost + cluster_public_protocol: http + cluster_public_host: ${_param:opnfv_openstack_control_node01_external_address} + neutron_public_protocol: http + neutron_control_dvr: 'False' + neutron_l3_ha: 'False' + neutron_global_physnet_mtu: 1500 + neutron_external_mtu: 1500 + neutron_gateway_dvr: 'False' + neutron_gateway_agent_mode: legacy + neutron_compute_dvr: 'False' + neutron_compute_agent_mode: legacy + neutron_compute_external_access: 'False' + galera_server_cluster_name: openstack_cluster + cluster_vip_address: ${_param:cluster_public_host} + cluster_local_address: ${_param:openstack_control_address} + cluster_node01_hostname: ctl01 + cluster_node01_address: ${_param:opnfv_openstack_control_node01_address} + cluster_node02_hostname: ctl02 + cluster_node02_address: ${_param:opnfv_openstack_control_node02_address} + cluster_node03_hostname: ctl03 + cluster_node03_address: ${_param:opnfv_openstack_control_node03_address} + glance_version: ${_param:openstack_version} + glance_service_host: ${_param:cluster_local_address} + keystone_version: ${_param:openstack_version} + keystone_service_host: ${_param:cluster_local_address} + heat_version: ${_param:openstack_version} + heat_service_host: ${_param:cluster_local_address} + ceilometer_version: ${_param:openstack_version} + ceilometer_service_host: ${_param:cluster_local_address} + ceilometer_database_host: ${_param:cluster_local_address} + cinder_version: ${_param:openstack_version} + cinder_service_host: ${_param:cluster_local_address} + nova_version: ${_param:openstack_version} + nova_service_host: ${_param:cluster_local_address} + nova_vncproxy_url: http://${_param:cluster_vip_address}:8060 + neutron_version: ${_param:openstack_version} + neutron_service_host: ${_param:cluster_local_address} + mysql_admin_user: root + horizon_version: ${_param:openstack_version} + horizon_secret_key: opaesee8Que2yahJoh9fo0eefo1Aeyo6ahyei8zeiboh3aeth5loth7ieNa5xi5e + horizon_identity_host: ${_param:cluster_vip_address} + horizon_identity_encryption: none + horizon_identity_version: 3 + horizon_public_protocol: http + horizon_public_port: 80 + apache_mods_status_enabled: false + nginx_server_site_nginx_proxy_openstack_web_enabled: true + nginx_proxy_ssl: + enabled: false + + barbican_version: ${_param:openstack_version} + barbican_service_host: ${_param:cluster_local_address} + apache_barbican_api_address: ${_param:single_address} + barbican_simple_crypto_kek: "YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoxMjM0NTY=" + barbican_integration_enabled: true + +{%- if '-sfc-' in conf.MCP_DEPLOY_SCENARIO %} + tacker_service_host: ${_param:cluster_local_address} +{%- endif %} + + aodh_version: ${_param:openstack_version} + aodh_service_host: ${_param:cluster_local_address} + gnocchi_version: 4.3 + gnocchi_service_host: ${_param:cluster_local_address} + panko_version: ${_param:openstack_version} + panko_service_host: ${_param:cluster_local_address} + ceilometer_agent_default_polling_interval: 180 + ceilometer_agent_default_polling_meters: + - "*" + linux: + system: + kernel: + sysctl: + net.ipv4.tcp_congestion_control: yeah + net.ipv4.tcp_slow_start_after_idle: 0 + net.ipv4.tcp_fin_timeout: 30 +{%- if 'aarch64' in nm.cluster.arch %} + repo: + armband_3: # Should be in sync with the repo config generated via curtin/MaaS + source: "deb http://linux.enea.com/mcp-repos/${_param:armband_repo_version}/xenial ${_param:armband_repo_version}-armband main" + key: ${_param:armband_key} + pinning: + 15: + enabled: true + pin: 'release a=${_param:armband_repo_version}-armband' + priority: 15 + package: '*' + 1200: + enabled: true + pin: 'release a=${_param:armband_repo_version}-armband' + priority: 1200 + package: 'qemu-efi' +{%- endif %} + network: + host: + ctl: + address: ${_param:openstack_control_address} + names: + - ctl + - ctl.${_param:cluster_domain} + ctl01: + address: ${_param:openstack_control_node01_address} + names: + - ctl01 + - ctl01.${_param:cluster_domain} + gtw01: + address: ${_param:openstack_gateway_address} + names: + - gtw01 + - gtw01.${_param:cluster_domain} +{#- For compute nodes, expand values in-place, bypassing reclass param expansion #} +{%- for cmp in range(1, nm.cmp_nodes + 1) %} + {%- set h = 'cmp%03d' | format(cmp) %} + {%- set mgmt = nm.net_mgmt_hosts | length + nm.start_ip[nm.net_mgmt] + loop.index %} + {{ h }}: + address: {{ nm.net_mgmt | ipnet_hostaddr(mgmt) }} + names: + - {{ h }} + - {{ h }}.${_param:cluster_domain} +{%- endfor %} |