Merge "Use Deployment actions for blacklist"
[apex-tripleo-heat-templates.git] / puppet / services / barbican-api.yaml
1 heat_template_version: pike
2
3 description: >
4   OpenStack Barbican API service 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   BarbicanPassword:
30     description: The password for the barbican service account.
31     type: string
32     hidden: true
33   BarbicanWorkers:
34     description: Set the number of workers for barbican::wsgi::apache
35     default: '%{::processorcount}'
36     type: string
37   Debug:
38     default: ''
39     description: Set to True to enable debugging on all services.
40     type: string
41   BarbicanDebug:
42     default: ''
43     description: Set to True to enable debugging Barbican service.
44     type: string
45   KeystoneRegion:
46     type: string
47     default: 'regionOne'
48     description: Keystone region for endpoint
49   RabbitClientPort:
50     default: 5672
51     description: Set rabbit subscriber port, change this if using SSL
52     type: number
53   RabbitClientUseSSL:
54     default: false
55     description: >
56         Rabbit client subscriber parameter to specify
57         an SSL connection to the RabbitMQ host.
58     type: string
59   RabbitPassword:
60     description: The password for RabbitMQ
61     type: string
62     hidden: true
63   RabbitUserName:
64     default: guest
65     description: The username for RabbitMQ
66     type: string
67   EnableInternalTLS:
68     type: boolean
69     default: false
70   BarbicanPolicies:
71     description: |
72       A hash of policies to configure for Barbican.
73       e.g. { barbican-context_is_admin: { key: context_is_admin, value: 'role:admin' } }
74     default: {}
75     type: json
76
77 resources:
78
79   ApacheServiceBase:
80     type: ./apache.yaml
81     properties:
82       ServiceNetMap: {get_param: ServiceNetMap}
83       DefaultPasswords: {get_param: DefaultPasswords}
84       EndpointMap: {get_param: EndpointMap}
85       RoleName: {get_param: RoleName}
86       RoleParameters: {get_param: RoleParameters}
87
88 conditions:
89   service_debug_unset: {equals : [{get_param: BarbicanDebug}, '']}
90
91 outputs:
92   role_data:
93     description: Role data for the Barbican API role.
94     value:
95       service_name: barbican_api
96       config_settings:
97         map_merge:
98           - get_attr: [ApacheServiceBase, role_data, config_settings]
99           - barbican::keystone::authtoken::password: {get_param: BarbicanPassword}
100             barbican::keystone::authtoken::auth_uri: {get_param: [EndpointMap, KeystoneInternal, uri_no_suffix]}
101             barbican::keystone::authtoken::auth_url: { get_param: [EndpointMap, KeystoneInternal, uri_no_suffix]}
102             barbican::keystone::authtoken::project_name: 'service'
103             barbican::policy::policies: {get_param: BarbicanPolicies}
104             barbican::api::host_href: {get_param: [EndpointMap, BarbicanPublic, uri]}
105             barbican::api::db_auto_create: false
106             barbican::api::enabled_certificate_plugins: ['simple_certificate']
107             barbican::api::logging::debug:
108               if:
109               - service_debug_unset
110               - {get_param: Debug }
111               - {get_param: BarbicanDebug }
112             barbican::api::rabbit_use_ssl: {get_param: RabbitClientUseSSL}
113             barbican::api::rabbit_userid: {get_param: RabbitUserName}
114             barbican::api::rabbit_password: {get_param: RabbitPassword}
115             barbican::api::rabbit_port: {get_param: RabbitClientPort}
116             barbican::api::rabbit_heartbeat_timeout_threshold: 60
117             barbican::api::service_name: 'httpd'
118             barbican::wsgi::apache::bind_host: {get_param: [ServiceNetMap, BarbicanApiNetwork]}
119             barbican::wsgi::apache::ssl:  {get_param: EnableInternalTLS}
120             barbican::wsgi::apache::workers: {get_param: BarbicanWorkers}
121             barbican::wsgi::apache::servername:
122               str_replace:
123                 template:
124                   "%{hiera('fqdn_$NETWORK')}"
125                 params:
126                   $NETWORK: {get_param: [ServiceNetMap, BarbicanApiNetwork]}
127             barbican::db::database_connection:
128               make_url:
129                 scheme: {get_param: [EndpointMap, MysqlInternal, protocol]}
130                 username: barbican
131                 password: {get_param: BarbicanPassword}
132                 host: {get_param: [EndpointMap, MysqlInternal, host]}
133                 path: /barbican
134                 query:
135                   read_default_file: /etc/my.cnf.d/tripleo.cnf
136                   read_default_group: tripleo
137             tripleo.barbican_api.firewall_rules:
138               '117 barbican':
139                 dport:
140                   - 9311
141                   - 13311
142       step_config: |
143         include ::tripleo::profile::base::barbican::api
144       service_config_settings:
145         mysql:
146           barbican::db::mysql::password: {get_param: BarbicanPassword}
147           barbican::db::mysql::user: barbican
148           barbican::db::mysql::host: {get_param: [EndpointMap, MysqlInternal, host_nobrackets]}
149           barbican::db::mysql::dbname: barbican
150           barbican::db::mysql::allowed_hosts:
151             - '%'
152             - "%{hiera('mysql_bind_host')}"
153         keystone:
154           barbican::keystone::auth::public_url: {get_param: [EndpointMap, BarbicanPublic, uri]}
155           barbican::keystone::auth::internal_url: {get_param: [EndpointMap, BarbicanInternal, uri]}
156           barbican::keystone::auth::admin_url: {get_param: [EndpointMap, BarbicanAdmin, uri]}
157           barbican::keystone::auth::password: {get_param: BarbicanPassword}
158           barbican::keystone::auth::region: {get_param: KeystoneRegion}
159           barbican::keystone::auth::tenant: 'service'
160         nova_compute:
161           nova::compute::keymgr_api_class: >
162             castellan.key_manager.barbican_key_manager.BarbicanKeyManager
163           nova::compute::barbican_endpoint:
164             get_param: [EndpointMap, BarbicanInternal, uri]
165           nova::compute::barbican_auth_endpoint:
166             get_param: [EndpointMap, KeystoneInternal, uri_no_suffix]
167         cinder_api:
168           cinder::api::keymgr_api_class: >
169             castellan.key_manager.barbican_key_manager.BarbicanKeyManager
170           cinder::api::keymgr_encryption_api_url:
171             get_param: [EndpointMap, BarbicanInternal, uri]
172           cinder::api::keymgr_encryption_auth_url:
173             get_param: [EndpointMap, KeystoneInternal, uri_no_suffix]
174       metadata_settings:
175         get_attr: [ApacheServiceBase, role_data, metadata_settings]
176       upgrade_tasks:
177         yaql:
178           expression: $.data.apache_upgrade + $.data.barbican_api_upgrade
179           data:
180             apache_upgrade:
181               get_attr: [ApacheServiceBase, role_data, upgrade_tasks]
182             barbican_api_upgrade:
183               - name: Check if barbican_api is deployed
184                 command: systemctl is-enabled openstack-barbican-api
185                 tags: common
186                 ignore_errors: True
187                 register: barbican_api_enabled
188               - name: "PreUpgrade step0,validation: Check service openstack-barbican-api is running"
189                 shell: /usr/bin/systemctl show 'openstack-barbican-api' --property ActiveState | grep '\bactive\b'
190                 when: barbican_api_enabled.rc == 0
191                 tags: step0,validation
192               - name: Install openstack-barbican-api package if it was disabled
193                 tags: step3
194                 yum: name=openstack-barbican-api state=latest
195                 when: barbican_api_enabled.rc != 0