Skip to content

Commit

Permalink
Terminate ssl on haproxy for cinder (bsc#1149535)
Browse files Browse the repository at this point in the history
If ssl is passed-thru on haproxy, the source ip gets replaced with
the one of the node where haproxy lives, and there is no way to get the
original ip on the services side.

Add ssl termination on haproxy. Two new hidden options are added:
loadbalancer_terminate_ssl (boolean) and pemfile (path to the
certificate to use in haproxy-recognized format).

This patch adds support for cinder.

(cherry picked from commit 44e0f6a)
  • Loading branch information
Boris Bobrov committed Mar 27, 2020
1 parent 75df3da commit fd1427a
Show file tree
Hide file tree
Showing 5 changed files with 27 additions and 3 deletions.
6 changes: 6 additions & 0 deletions chef/cookbooks/cinder/attributes/default.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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"
2 changes: 2 additions & 0 deletions chef/cookbooks/cinder/recipes/controller_ha.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
12 changes: 12 additions & 0 deletions chef/data_bags/crowbar/migrate/cinder/210_add_haproxy_mode_http.rb
Original file line number Diff line number Diff line change
@@ -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
6 changes: 4 additions & 2 deletions chef/data_bags/crowbar/template-cinder.json
Original file line number Diff line number Diff line change
Expand Up @@ -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": "",
Expand All @@ -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" ]
Expand Down
4 changes: 3 additions & 1 deletion chef/data_bags/crowbar/template-cinder.schema
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down

0 comments on commit fd1427a

Please sign in to comment.