Skip to content

Commit 41bb9d3

Browse files
committed
monasca: Add SSL configuration (SOC-7423)
The change adds support for configuring Monasca APIs to use SSL.
1 parent 3065987 commit 41bb9d3

File tree

12 files changed

+104
-32
lines changed

12 files changed

+104
-32
lines changed

chef/cookbooks/monasca/attributes/default.rb

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,3 +137,11 @@
137137
default[:monasca][:api][:user] = "monasca-api"
138138
default[:monasca][:api][:group] = "monasca"
139139
default[:monasca][:api][:influxdb_user] = "mon_api"
140+
141+
# SSL
142+
default[:monasca][:ssl][:certfile] = "/etc/monasca/ssl/certs/signing_cert.pem"
143+
default[:monasca][:ssl][:keyfile] = "/etc/monasca/ssl/private/signing_key.pem"
144+
default[:monasca][:ssl][:generate_certs] = false
145+
default[:monasca][:ssl][:insecure] = false
146+
default[:monasca][:ssl][:cert_required] = false
147+
default[:monasca][:ssl][:ca_certs] = "/etc/monasca/ssl/certs/ca.pem"

chef/cookbooks/monasca/libraries/helper.rb

Lines changed: 6 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -30,27 +30,21 @@ def self.monasca_admin_host(node)
3030

3131
def self.api_public_url(node)
3232
host = monasca_public_host(node)
33-
# SSL is not supported at this moment
34-
# protocol = node[:monasca][:api][:ssl] ? "https" : "http"
35-
protocol = "http"
33+
protocol = node[:monasca][:api][:protocol]
3634
port = node[:monasca][:api][:bind_port]
3735
"#{protocol}://#{host}:#{port}/v2.0"
3836
end
3937

4038
def self.api_admin_url(node)
4139
host = monasca_admin_host(node)
42-
# SSL is not supported at this moment
43-
# protocol = node[:monasca][:api][:ssl] ? "https" : "http"
44-
protocol = "http"
40+
protocol = node[:monasca][:api][:protocol]
4541
port = node[:monasca][:api][:bind_port]
4642
"#{protocol}://#{host}:#{port}/v2.0"
4743
end
4844

4945
def self.api_internal_url(node)
5046
host = get_host_for_monitoring_url(node)
51-
# SSL is not supported at this moment
52-
# protocol = node[:monasca][:api][:ssl] ? "https" : "http"
53-
protocol = "http"
47+
protocol = node[:monasca][:api][:protocol]
5448
port = node[:monasca][:api][:bind_port]
5549
"#{protocol}://#{host}:#{port}/v2.0"
5650
end
@@ -69,27 +63,21 @@ def self.api_network_url(node)
6963

7064
def self.log_api_public_url(node, version = "v3.0")
7165
host = monasca_public_host(node)
72-
# SSL is not supported at this moment
73-
# protocol = node[:monasca][:log_api][:ssl] ? "https" : "http"
74-
protocol = "http"
66+
protocol = node[:monasca][:api][:protocol]
7567
port = node[:monasca][:log_api][:bind_port]
7668
"#{protocol}://#{host}:#{port}/#{version}"
7769
end
7870

7971
def self.log_api_admin_url(node, version = "v3.0")
8072
host = monasca_admin_host(node)
81-
# SSL is not supported at this moment
82-
# protocol = node[:monasca][:log_api][:ssl] ? "https" : "http"
83-
protocol = "http"
73+
protocol = node[:monasca][:api][:protocol]
8474
port = node[:monasca][:log_api][:bind_port]
8575
"#{protocol}://#{host}:#{port}/#{version}"
8676
end
8777

8878
def self.log_api_internal_url(node, version = "v3.0")
8979
host = get_host_for_monitoring_url(node)
90-
# SSL is not supported at this moment
91-
# protocol = node[:monasca][:log_api][:ssl] ? "https" : "http"
92-
protocol = "http"
80+
protocol = node[:monasca][:api][:protocol]
9381
port = node[:monasca][:log_api][:bind_port]
9482
"#{protocol}://#{host}:#{port}/#{version}"
9583
end

chef/cookbooks/monasca/recipes/log_agent.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@
7272
mode 0o640
7373
variables(
7474
monasca_log_api_url: monasca_log_api_url,
75+
insecure: node[:monasca][:ssl][:insecure],
7576
log_agent_keystone: log_agent_keystone,
7677
log_agent_settings: log_agent_settings,
7778
log_agent_dimensions: log_agent_dimensions,

chef/cookbooks/monasca/recipes/monasca_api.rb

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,18 @@
2424

2525
keystone_settings = KeystoneHelper.keystone_settings(node, @cookbook_name)
2626

27+
if node[:monasca][:api][:protocol] == "https"
28+
ssl_setup "setting up ssl for monasca-api" do
29+
generate_certs node[:monasca][:ssl][:generate_certs]
30+
certfile node[:monasca][:ssl][:certfile]
31+
keyfile node[:monasca][:ssl][:keyfile]
32+
group node[:monasca][:api][:group]
33+
fqdn node[:fqdn]
34+
cert_required node[:monasca][:ssl][:cert_required]
35+
ca_certs node[:monasca][:ssl][:ca_certs]
36+
end
37+
end
38+
2739
memcached_servers = MemcachedHelper.get_memcached_servers(
2840
if node[:monasca][:ha][:enabled]
2941
CrowbarPacemakerHelper.cluster_nodes(node, "monasca-server")
@@ -168,12 +180,10 @@
168180
user node[:monasca][:api][:user]
169181
group node[:monasca][:api][:group]
170182
ssl_enable node[:monasca][:api][:protocol] == "https"
171-
# FIXME(toabctl): the attributes do not even extist so SSL is broken!
172-
ssl_certfile nil # node[:monasca][:ssl][:certfile]
173-
ssl_keyfile nil # node[:monasca][:ssl][:keyfile]
174-
# if node[:monasca][:ssl][:cert_required]
175-
# ssl_cacert node[:monasca][:ssl][:ca_certs]
176-
# end
183+
ssl_certfile node[:monasca][:ssl][:certfile]
184+
ssl_keyfile node[:monasca][:ssl][:keyfile]
185+
ssl_cacert node[:monasca][:ssl][:ca_certs] if
186+
node[:monasca][:ssl][:cert_required]
177187
end
178188

179189
apache_site "monasca-api.conf" do

chef/cookbooks/monasca/recipes/monasca_log_api.rb

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -56,13 +56,11 @@
5656
script_alias "/usr/bin/monasca-log-api-wsgi"
5757
user node[:monasca][:log_api][:user]
5858
group node[:monasca][:log_api][:group]
59-
ssl_enable node[:monasca][:log_api][:protocol] == "https"
60-
# FIXME(toabctl): the attributes do not even extist so SSL is broken!
61-
ssl_certfile nil # node[:monasca][:ssl][:certfile]
62-
ssl_keyfile nil # node[:monasca][:ssl][:keyfile]
63-
# if node[:monasca][:ssl][:cert_required]
64-
# ssl_cacert node[:monasca][:ssl][:ca_certs]
65-
# end
59+
ssl_enable node[:monasca][:api][:protocol] == "https"
60+
ssl_certfile node[:monasca][:ssl][:certfile]
61+
ssl_keyfile node[:monasca][:ssl][:keyfile]
62+
ssl_cacert node[:monasca][:ssl][:ca_certs] if
63+
node[:monasca][:ssl][:cert_required]
6664
end
6765

6866
apache_site "monasca-log-api.conf" do

chef/cookbooks/monasca/templates/default/log-agent.conf.erb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ output {
3838
project_domain_name => "<%= @keystone_settings['admin_domain'] %>"
3939
### monasca specific settings
4040
monasca_log_api_url => "<%= @monasca_log_api_url %>"
41+
monasca_log_api_insecure => "<%= @insecure %>"
4142
num_of_logs => <%= @log_agent_settings[:num_of_logs] %>
4243
elapsed_time_sec => <%= @log_agent_settings[:elapsed_time_sec] %>
4344
delay => <%= @log_agent_settings[:delay] %>
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
def upgrade(template_attrs, template_deployment, attrs, deployment)
2+
attrs["ssl"] = template_attrs["ssl"]
3+
return attrs, deployment
4+
end
5+
6+
def downgrade(template_attrs, template_deployment, attrs, deployment)
7+
attrs.delete("ssl")
8+
return attrs, deployment
9+
end

chef/data_bags/crowbar/template-monasca.json

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,14 @@
7373
"service_role": "monasca-agent"
7474
}
7575
},
76+
"ssl": {
77+
"certfile": "/etc/monasca/ssl/certs/signing_cert.pem",
78+
"keyfile": "/etc/monasca/ssl/private/signing_key.pem",
79+
"generate_certs": false,
80+
"insecure": false,
81+
"cert_required": false,
82+
"ca_certs": "/etc/monasca/ssl/certs/ca.pem"
83+
},
7684
"api": {
7785
"url": "",
7886
"bind_host": "*",
@@ -167,7 +175,7 @@
167175
"monasca": {
168176
"crowbar-revision": 0,
169177
"crowbar-applied": false,
170-
"schema-revision": 315,
178+
"schema-revision": 316,
171179
"element_states": {
172180
"monasca-server": [ "readying", "ready", "applying" ],
173181
"monasca-agent": [ "readying", "ready", "applying" ],

chef/data_bags/crowbar/template-monasca.schema

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,16 @@
104104
}
105105
}
106106
},
107+
"ssl": {
108+
"type": "map", "required": true, "mapping": {
109+
"certfile": { "type" : "str", "required" : true },
110+
"keyfile": { "type" : "str", "required" : true },
111+
"generate_certs": { "type" : "bool", "required" : true },
112+
"insecure": { "type" : "bool", "required" : true },
113+
"cert_required": { "type" : "bool", "required" : true },
114+
"ca_certs": { "type" : "str", "required" : true }
115+
}
116+
},
107117
"api": {
108118
"required": true,
109119
"type": "map",

crowbar_framework/app/helpers/barclamp/monasca_helper.rb

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,5 +51,15 @@ def tsdbs(selected)
5151
selected.to_s
5252
)
5353
end
54+
55+
def api_protocols_for_monasca(selected)
56+
options_for_select(
57+
[
58+
["HTTP", "http"],
59+
["HTTPS", "https"]
60+
],
61+
selected.to_s
62+
)
63+
end
5464
end
5565
end

0 commit comments

Comments
 (0)