Merge "Containerize clustercheck galera monitor for HA deployments"
[apex-tripleo-heat-templates.git] / puppet / services / neutron-ovs-agent.yaml
1 heat_template_version: pike
2
3 description: >
4   OpenStack Neutron OVS agent configured with Puppet
5
6 parameters:
7   ServiceNetMap:
8     default: {}
9     description: Mapping of service_name -> network name. Typically set
10                  via parameter_defaults in the resource registry.  This
11                  mapping overrides those in ServiceNetMapDefaults.
12     type: json
13   DefaultPasswords:
14     default: {}
15     type: json
16   RoleName:
17     default: ''
18     description: Role name on which the service is applied
19     type: string
20   RoleParameters:
21     default: {}
22     description: Parameters specific to the role
23     type: json
24   EndpointMap:
25     default: {}
26     description: Mapping of service endpoint -> protocol. Typically set
27                  via parameter_defaults in the resource registry.
28     type: json
29   NeutronEnableL2Pop:
30     type: string
31     description: >
32         Enable/disable the L2 population feature in the Neutron agents.
33     default: "False"
34   NeutronBridgeMappings:
35     description: >
36       The OVS logical->physical bridge mappings to use. See the Neutron
37       documentation for details. Defaults to mapping br-ex - the external
38       bridge on hosts - to a physical name 'datacentre' which can be used
39       to create provider networks (and we use this for the default floating
40       network) - if changing this either use different post-install network
41       scripts or be sure to keep 'datacentre' as a mapping network name.
42     type: comma_delimited_list
43     default: "datacentre:br-ex"
44   NeutronTunnelTypes:
45     default: 'vxlan'
46     description: |
47         The tunnel types for the Neutron tenant network.
48     type: comma_delimited_list
49   NeutronAgentExtensions:
50     default: "qos"
51     description: |
52         Comma-separated list of extensions enabled for the Neutron agents.
53     type: comma_delimited_list
54   NeutronEnableDVR:
55     default: False
56     description: |
57       Enable support for distributed routing in the OVS Agent.
58     type: boolean
59   NeutronEnableARPResponder:
60     default: false
61     description: |
62       Enable ARP responder feature in the OVS Agent.
63     type: boolean
64   MonitoringSubscriptionNeutronOvs:
65     default: 'overcloud-neutron-ovs-agent'
66     type: string
67   NeutronOVSFirewallDriver:
68     default: ''
69     description: |
70       Configure the classname of the firewall driver to use for implementing
71       security groups. Possible values depend on system configuration. Some
72       examples are: noop, openvswitch, iptables_hybrid. The default value of an
73       empty string will result in a default supported configuration.
74     type: string
75   NeutronOpenVswitchAgentLoggingSource:
76     type: json
77     default:
78       tag: openstack.neutron.agent.openvswitch
79       path: /var/log/neutron/openvswitch-agent.log
80
81 conditions:
82   no_firewall_driver: {equals : [{get_param: NeutronOVSFirewallDriver}, '']}
83
84 resources:
85
86   NeutronBase:
87     type: ./neutron-base.yaml
88     properties:
89       ServiceNetMap: {get_param: ServiceNetMap}
90       DefaultPasswords: {get_param: DefaultPasswords}
91       EndpointMap: {get_param: EndpointMap}
92       RoleName: {get_param: RoleName}
93       RoleParameters: {get_param: RoleParameters}
94
95   OpenVswitchUpgrade:
96     type: ./openvswitch-upgrade.yaml
97
98 outputs:
99   role_data:
100     description: Role data for the Neutron OVS agent service.
101     value:
102       service_name: neutron_ovs_agent
103       monitoring_subscription: {get_param: MonitoringSubscriptionNeutronOvs}
104       logging_source: {get_param: NeutronOpenVswitchAgentLoggingSource}
105       logging_groups:
106         - neutron
107       config_settings:
108         map_merge:
109           - get_attr: [NeutronBase, role_data, config_settings]
110           - neutron::agents::ml2::ovs::l2_population: {get_param: NeutronEnableL2Pop}
111             neutron::agents::ml2::ovs::enable_distributed_routing: {get_param: NeutronEnableDVR}
112             neutron::agents::ml2::ovs::arp_responder: {get_param: NeutronEnableARPResponder}
113             neutron::agents::ml2::ovs::bridge_mappings: {get_param: NeutronBridgeMappings}
114             neutron::agents::ml2::ovs::tunnel_types: {get_param: NeutronTunnelTypes}
115             neutron::agents::ml2::ovs::extensions: {get_param: NeutronAgentExtensions}
116             # NOTE: bind IP is found in Heat replacing the network name with the
117             # local node IP for the given network; replacement examples
118             # (eg. for internal_api):
119             # internal_api -> IP
120             # internal_api_uri -> [IP]
121             # internal_api_subnet - > IP/CIDR
122             neutron::agents::ml2::ovs::local_ip: {get_param: [ServiceNetMap, NeutronTenantNetwork]}
123             tripleo.neutron_ovs_agent.firewall_rules:
124               '118 neutron vxlan networks':
125                 proto: 'udp'
126                 dport: 4789
127               '136 neutron gre networks':
128                 proto: 'gre'
129           -
130             if:
131             - no_firewall_driver
132             - {}
133             - neutron::agents::ml2::ovs::firewall_driver: {get_param: NeutronOVSFirewallDriver}
134       step_config: |
135         include ::tripleo::profile::base::neutron::ovs
136       upgrade_tasks:
137         yaql:
138           expression: $.data.ovs_upgrade + $.data.neutron_ovs_upgrade
139           data:
140             ovs_upgrade:
141               get_attr: [OpenVswitchUpgrade, role_data, upgrade_tasks]
142             neutron_ovs_upgrade:
143               - name: Check if neutron_ovs_agent is deployed
144                 command: systemctl is-enabled neutron-openvswitch-agent
145                 tags: common
146                 ignore_errors: True
147                 register: neutron_ovs_agent_enabled
148               - name: "PreUpgrade step0,validation: Check service neutron-openvswitch-agent is running"
149                 shell: /usr/bin/systemctl show 'neutron-openvswitch-agent' --property ActiveState | grep '\bactive\b'
150                 when: neutron_ovs_agent_enabled.rc == 0
151                 tags: step0,validation
152               - name: Stop neutron_ovs_agent service
153                 tags: step1
154                 when: neutron_ovs_agent_enabled.rc == 0
155                 service: name=neutron-openvswitch-agent state=stopped