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