diff --git a/chef/cookbooks/cinder/attributes/default.rb b/chef/cookbooks/cinder/attributes/default.rb index 92d31d6951..8e2e112cd3 100644 --- a/chef/cookbooks/cinder/attributes/default.rb +++ b/chef/cookbooks/cinder/attributes/default.rb @@ -54,3 +54,9 @@ default[:cinder][:ha][:op][:monitor][:interval] = "10s" # Ports to bind to when haproxy is used for the real ports default[:cinder][:ha][:ports][:api] = 5520 + +# +# SSL settings +# +default[:cinder][:ssl][:loadbalancer_terminate_ssl] = false +default[:cinder][:ssl][:pemfile] = "/etc/ssl/private/cinder.pem" diff --git a/chef/cookbooks/cinder/recipes/controller_ha.rb b/chef/cookbooks/cinder/recipes/controller_ha.rb index a4b2390839..bff42d2e62 100644 --- a/chef/cookbooks/cinder/recipes/controller_ha.rb +++ b/chef/cookbooks/cinder/recipes/controller_ha.rb @@ -28,6 +28,8 @@ address node[:cinder][:api][:bind_open_address] ? "0.0.0.0" : cluster_admin_ip port node[:cinder][:api][:bind_port] use_ssl (node[:cinder][:api][:protocol] == "https") + terminate_ssl node[:cinder][:ssl][:loadbalancer_terminate_ssl] + pemfile node[:cinder][:ssl][:pemfile] servers CrowbarPacemakerHelper.haproxy_servers_for_service(node, "cinder", "cinder-controller", "api") rate_limit node[:cinder][:ha_rate_limit]["cinder-api"] action :nothing diff --git a/chef/data_bags/crowbar/migrate/cinder/210_add_haproxy_mode_http.rb b/chef/data_bags/crowbar/migrate/cinder/210_add_haproxy_mode_http.rb new file mode 100644 index 0000000000..08254d0e07 --- /dev/null +++ b/chef/data_bags/crowbar/migrate/cinder/210_add_haproxy_mode_http.rb @@ -0,0 +1,12 @@ +def upgrade(template_attrs, template_deployment, attrs, deployment) + key = "loadbalancer_terminate_ssl" + template_value = template_attrs["cinder"]["ssl"][key] + attrs["cinder"]["ssl"][key] = template_value unless attrs["cinder"]["ssl"].key? key + return attrs, deployment +end + +def downgrade(template_attrs, template_deployment, attrs, deployment) + key = "loadbalancer_terminate_ssl" + attrs["cinder"]["ssl"].delete(key) unless template_attrs["cinder"]["ssl"].key? key + return attrs, deployment +end diff --git a/chef/data_bags/crowbar/template-cinder.json b/chef/data_bags/crowbar/template-cinder.json index c3653aa891..e2f01b2883 100644 --- a/chef/data_bags/crowbar/template-cinder.json +++ b/chef/data_bags/crowbar/template-cinder.json @@ -156,7 +156,9 @@ "generate_certs": false, "insecure": false, "cert_required": false, - "ca_certs": "/etc/cinder/ssl/certs/ca.pem" + "ca_certs": "/etc/cinder/ssl/certs/ca.pem", + "loadbalancer_terminate_ssl": false, + "pemfile": "/etc/ssl/private/cinder.pem" }, "db": { "password": "", @@ -183,7 +185,7 @@ "cinder": { "crowbar-revision": 0, "crowbar-applied": false, - "schema-revision": 209, + "schema-revision": 210, "element_states": { "cinder-controller": [ "readying", "ready", "applying" ], "cinder-volume": [ "readying", "ready", "applying" ] diff --git a/chef/data_bags/crowbar/template-cinder.schema b/chef/data_bags/crowbar/template-cinder.schema index 0c7804509c..58ef0e1ab7 100644 --- a/chef/data_bags/crowbar/template-cinder.schema +++ b/chef/data_bags/crowbar/template-cinder.schema @@ -332,7 +332,9 @@ "generate_certs": { "type" : "bool", "required" : true }, "insecure": { "type" : "bool", "required" : true }, "cert_required": { "type" : "bool", "required" : true }, - "ca_certs": { "type" : "str", "required" : true } + "ca_certs": { "type" : "str", "required" : true }, + "loadbalancer_terminate_ssl": { "type" : "bool", "required": true}, + "pemfile": { "type" : "str", "required": true} }}, "db": { "type": "map",