Merge "Adds check for existing yum process during the legacy minor update"
[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: Enable Neutron DVR.
57     type: boolean
58   NeutronEnableARPResponder:
59     default: false
60     description: |
61       Enable ARP responder feature in the OVS Agent.
62     type: boolean
63   MonitoringSubscriptionNeutronOvs:
64     default: 'overcloud-neutron-ovs-agent'
65     type: string
66   NeutronOVSFirewallDriver:
67     default: ''
68     description: |
69       Configure the classname of the firewall driver to use for implementing
70       security groups. Possible values depend on system configuration. Some
71       examples are: noop, openvswitch, iptables_hybrid. The default value of an
72       empty string will result in a default supported configuration.
73     type: string
74   NeutronOpenVswitchAgentLoggingSource:
75     type: json
76     default:
77       tag: openstack.neutron.agent.openvswitch
78       path: /var/log/neutron/openvswitch-agent.log
79
80 conditions:
81   no_firewall_driver: {equals : [{get_param: NeutronOVSFirewallDriver}, '']}
82
83 resources:
84
85   NeutronBase:
86     type: ./neutron-base.yaml
87     properties:
88       ServiceNetMap: {get_param: ServiceNetMap}
89       DefaultPasswords: {get_param: DefaultPasswords}
90       EndpointMap: {get_param: EndpointMap}
91       RoleName: {get_param: RoleName}
92       RoleParameters: {get_param: RoleParameters}
93
94   Ovs:
95     type: ./openvswitch.yaml
96     properties:
97       ServiceNetMap: {get_param: ServiceNetMap}
98       DefaultPasswords: {get_param: DefaultPasswords}
99       EndpointMap: {get_param: EndpointMap}
100
101 outputs:
102   role_data:
103     description: Role data for the Neutron OVS agent service.
104     value:
105       service_name: neutron_ovs_agent
106       monitoring_subscription: {get_param: MonitoringSubscriptionNeutronOvs}
107       logging_source: {get_param: NeutronOpenVswitchAgentLoggingSource}
108       logging_groups:
109         - neutron
110       config_settings:
111         map_merge:
112           - get_attr: [NeutronBase, role_data, config_settings]
113           - neutron::agents::ml2::ovs::l2_population: {get_param: NeutronEnableL2Pop}
114             neutron::agents::ml2::ovs::enable_distributed_routing: {get_param: NeutronEnableDVR}
115             neutron::agents::ml2::ovs::arp_responder: {get_param: NeutronEnableARPResponder}
116             neutron::agents::ml2::ovs::bridge_mappings: {get_param: NeutronBridgeMappings}
117             neutron::agents::ml2::ovs::tunnel_types: {get_param: NeutronTunnelTypes}
118             neutron::agents::ml2::ovs::extensions: {get_param: NeutronAgentExtensions}
119             # NOTE: bind IP is found in Heat replacing the network name with the
120             # local node IP for the given network; replacement examples
121             # (eg. for internal_api):
122             # internal_api -> IP
123             # internal_api_uri -> [IP]
124             # internal_api_subnet - > IP/CIDR
125             neutron::agents::ml2::ovs::local_ip: {get_param: [ServiceNetMap, NeutronTenantNetwork]}
126             tripleo.neutron_ovs_agent.firewall_rules:
127               '118 neutron vxlan networks':
128                 proto: 'udp'
129                 dport: 4789
130               '136 neutron gre networks':
131                 proto: 'gre'
132           -
133             if:
134             - no_firewall_driver
135             - {}
136             - neutron::agents::ml2::ovs::firewall_driver: {get_param: NeutronOVSFirewallDriver}
137       step_config: |
138         include ::tripleo::profile::base::neutron::ovs
139       upgrade_tasks:
140         yaql:
141           expression: $.data.ovs_upgrade + $.data.neutron_ovs_upgrade
142           data:
143             ovs_upgrade:
144               get_attr: [Ovs, role_data, upgrade_tasks]
145             neutron_ovs_upgrade:
146               - name: Check if neutron_ovs_agent is deployed
147                 command: systemctl is-enabled neutron-openvswitch-agent
148                 tags: common
149                 ignore_errors: True
150                 register: neutron_ovs_agent_enabled
151               - name: "PreUpgrade step0,validation: Check service neutron-openvswitch-agent is running"
152                 shell: /usr/bin/systemctl show 'neutron-openvswitch-agent' --property ActiveState | grep '\bactive\b'
153                 when: neutron_ovs_agent_enabled.rc == 0
154                 tags: step0,validation
155               - name: Stop neutron_ovs_agent service
156                 tags: step1
157                 when: neutron_ovs_agent_enabled.rc == 0
158                 service: name=neutron-openvswitch-agent state=stopped