• R/O
  • HTTP
  • SSH
  • HTTPS

grid-chef-repo: コミット

Grid環境構築用のChefリポジトリです。


コミットメタ情報

リビジョン7a46b99ec68e489c7868389632b08c35597b399c (tree)
日時2016-01-31 17:51:53
作者whitestar <whitestar@gaea...>
コミッターwhitestar

ログメッセージ

add ssl_cert::ssh_ca_krl recipe.

変更サマリ

差分

--- a/cookbooks/ssl_cert/CHANGELOG.md
+++ b/cookbooks/ssl_cert/CHANGELOG.md
@@ -1,6 +1,11 @@
11 ssl_cert CHANGELOG
22 ==================
33
4+0.3.0
5+-----
6+- add `ssh_ca_krl` recipe for SSH-CA
7+- add deployed filename extension attributes.
8+
49 0.2.0
510 -----
611 - add `ca_pubkeys` recipe for SSH-CA, ...
--- a/cookbooks/ssl_cert/README.md
+++ b/cookbooks/ssl_cert/README.md
@@ -18,6 +18,7 @@ Attributes
1818 |:--|:--|:--|:--|
1919 |`['ssl_cert']['ca_names']`|Array|deployed CA certificates from chef-vault|empty|
2020 |`['ssl_cert']['ca_pubkey_names']`|Array|deployed CA public keys from chef-vault (0.2.0 or later)|empty|
21+|`['ssl_cert']['ssh_ca_krl_name']`|String|deployed SSH-CA KRL (Key Revocation List) from chef-vault (0.3.0 or later)|`nil`|
2122 |`['ssl_cert']['common_names']`|Array|deployed server keys and/or certificates from chef-vault|empty|
2223 |`['ssl_cert']['rhel']['key_access_group']`|String|RHEL family's key access group (ver. 0.1.5 or later)|`'ssl-cert'`|
2324 |`['ssl_cert']['chef_gem']['clear_sources']`|Boolean|chef_gem resource's clear_sources property.|`false`|
@@ -29,19 +30,27 @@ Attributes
2930 |`['ssl_cert']['ca_cert_vault']`|String|CA certificate stored vault name.|`'ca_certs'`|
3031 |`['ssl_cert']['ca_cert_vault_item_key']`|String|CA certificate stored vault item key name. (single key or nested hash key path delimited by slash)|`'public'`|
3132 |`['ssl_cert']['ca_cert_file_prefix']`|String|CA certificate file name's prefix.|`''`|
33+|`['ssl_cert']['ca_cert_file_extension']`|String|CA certificate file name's extension. (0.3.0 or later)|`'crt'`|
3234 |`['ssl_cert']['ca_pubkey_vault']`|String|CA public key stored vault name. (0.2.0 or later)|`'ca_pubkeys'`|
3335 |`['ssl_cert']['ca_pubkey_vault_item_key']`|String|CA public key stored vault item key name. (single key or nested hash key path delimited by slash. 0.2.0 or later)|`'public'`|
3436 |`['ssl_cert']['ca_pubkey_file_prefix']`|String|CA public key file name's prefix. (0.2.0 or later)|`''`|
37+|`['ssl_cert']['ca_pubkey_file_extension']`|String|CA public key file name's extension. (0.3.0 or later)|`'pub'`|
38+|`['ssl_cert']['ssh_ca_krl_vault']`|String|SSH-CA KRL stored vault name. (0.3.0 or later)|`'ssh_ca_krls'`|
39+|`['ssl_cert']['ssh_ca_krl_vault_item_key']`|String|SSH-CA KRL stored vault item key name. (single key or nested hash key path delimited by slash. 0.3.0 or later)|`'public'`|
40+|`['ssl_cert']['ssh_ca_krl_file_prefix']`|String|SSH-CA KRL file name's prefix. (0.3.0 or later)|`''`|
41+|`['ssl_cert']['ssh_ca_krl_file_extension']`|String|SSH-CA KRL file name's extension. (0.3.0 or later)|`'krl'`|
3542 |`['ssl_cert']['server_key_vault']`|String|SSL server key stored vault name.|`'ssl_server_keys'`|
3643 |`['ssl_cert']['server_key_vault_item_key']`|String|SSL server key stored vault item key name. (single key or nested hash key path delimited by slash)|`'private'`|
3744 |`['ssl_cert']['server_key_file_prefix']`|String|SSL server key file name's prefix.|`''`|
45+|`['ssl_cert']['server_key_file_extension']`|String|SSL server key file name's extension. (0.3.0 or later)|`'key'`|
3846 |`['ssl_cert']['server_cert_vault']`|String|SSL server certificate stored vault name.|`'ssl_server_certs'`|
3947 |`['ssl_cert']['server_cert_vault_item_key']`|String|SSL server certificate stored vault item key name. (single key or nested hash key path delimited by slash)|`'public'`|
4048 |`['ssl_cert']['server_cert_file_prefix']`|String|SSL server certificate file name's prefix.|`''`|
41-|`['ssl_cert']["#{ca}_cert_path"]`|String|deployed CA certificate file path.|`"#{node['ssl_cert']['certs_dir']}/#{node['ssl_cert']['ca_cert_file_prefix']}#{ca}.crt"`|
42-|`['ssl_cert']["#{ca}_pubkey_path"]`|String|deployed CA public key file path. (0.2.0 or later)|`"#{node['ssl_cert']['certs_dir']}/#{node['ssl_cert']['ca_pubkey_file_prefix']}#{ca}.pub"`|
43-|`['ssl_cert']["#{undotted_cn}_key_path"]`|String|deployed SSL server key file path.|`"#{node['ssl_cert']['private_dir']}/#{node['ssl_cert']['server_key_file_prefix']}#{undotted_cn}.key"`|
44-|`['ssl_cert']["#{undotted_cn}_cert_path"]`|String|deployed SSL server certificate file path.|`"#{node['ssl_cert']['certs_dir']}/#{node['ssl_cert']['server_cert_file_prefix']}#{undotted_cn}.crt"`|
49+|`['ssl_cert']['server_cert_file_extension']`|String|SSL server certificate file name's extension. (0.3.0 or later)|`'crt'`|
50+|`['ssl_cert']["#{ca}_cert_path"]`|String|deployed CA certificate file path.|`"#{node['ssl_cert']['certs_dir']}/#{node['ssl_cert']['ca_cert_file_prefix']}#{ca}.#{node['ssl_cert']['ca_cert_file_extension']}"`|
51+|`['ssl_cert']["#{ca}_pubkey_path"]`|String|deployed CA public key file path. (0.2.0 or later)|`"#{node['ssl_cert']['certs_dir']}/#{node['ssl_cert']['ca_pubkey_file_prefix']}#{ca}.#{node['ssl_cert']['ca_pubkey_file_extension']}"`|
52+|`['ssl_cert']["#{undotted_cn}_key_path"]`|String|deployed SSL server key file path.|`"#{node['ssl_cert']['private_dir']}/#{node['ssl_cert']['server_key_file_prefix']}#{undotted_cn}.#{node['ssl_cert']['server_key_file_extension']}"`|
53+|`['ssl_cert']["#{undotted_cn}_cert_path"]`|String|deployed SSL server certificate file path.|`"#{node['ssl_cert']['certs_dir']}/#{node['ssl_cert']['server_cert_file_prefix']}#{undotted_cn}.#{node['ssl_cert']['server_cert_file_extension']}"`|
4554
4655 Usage
4756 -----
@@ -50,6 +59,7 @@ Usage
5059 - `ssl_cert::default` - deploys CA certificates, SSL server keys and/or certificates.
5160 - `ssl_cert::ca_certs` - deploys CA certificates.
5261 - `ssl_cert::ca_pubkeys` - deploys CA public keys for SSH-CA, ... (0.2.0 or later)
62+- `ssl_cert::ssh_ca_krl` - deploys a SSH-CA KRL (Key Revocation List) file. (0.3.0 or later)
5363 - `ssl_cert::server_key_pairs` - deploys SSL server keys and certificates.
5464 - `ssl_cert::server_keys` - deploys SSL server keys.
5565 - `ssl_cert::server_certs` - deploys SSL server certificates.
@@ -106,6 +116,28 @@ override_attributes(
106116 )
107117 ```
108118
119+#### SSH-CA KRL (0.3.0 or later)
120+
121+- create vault items.
122+
123+```text
124+$ ruby -rjson -e 'puts JSON.generate({"public" => File.read("grid_ssh_ca.prod.krl")})' \
125+> > ~/tmp/grid_ssh_ca.prod.krl.json
126+
127+$ knife vault create ssh_ca_krls grid_ssh_ca.prod \
128+> --json ~/tmp/grid_ssh_ca.prod.krl.json
129+```
130+
131+- add cookbook attributes.
132+
133+```ruby
134+override_attributes(
135+ 'ssl_cert' => {
136+ 'ssh_ca_krl_name' => 'grid_ssh_ca',
137+ },
138+)
139+```
140+
109141 #### SSL server keys and certificates
110142
111143 - create vault items.
@@ -141,6 +173,7 @@ override_attributes(
141173
142174 - `node['ssl_cert']["#{ca}_cert_path"]` - e.g. `node['ssl_cert']['grid_ca_cert_path']`
143175 - `node['ssl_cert']["#{ca}_pubkey_path"]` - e.g. `node['ssl_cert']['grid_ssh_ca_pubkey_path']`
176+- `node['ssl_cert']["#{ca}_krl_path"]` - e.g. `node['ssl_cert']['grid_ssh_ca_krl_path']`
144177 - `node['ssl_cert']["#{undotted_cn}_key_path"]` - e.g. `node['ssl_cert']['node_example_com_key_path']`
145178 - `node['ssl_cert']["#{undotted_cn}_cert_path"]` - e.g. `node['ssl_cert']['node_example_com_cert_path']`
146179
--- a/cookbooks/ssl_cert/attributes/default.rb
+++ b/cookbooks/ssl_cert/attributes/default.rb
@@ -28,6 +28,9 @@ default['ssl_cert']['ca_pubkey_names'] = [
2828 #'grid_ssh_ca',
2929 ]
3030
31+# deployed SSH-CA KRL (Key Revocation List) from chef-vault
32+default['ssl_cert']['ssh_ca_krl_name'] = nil # e.g. 'grid_ssh_ca'
33+
3134 # deployed server keys and/or certificates from chef-vault
3235 default['ssl_cert']['common_names'] = [
3336 #'ldap.grid.example.com',
@@ -47,9 +50,11 @@ default['ssl_cert']['vault_item_suffix'] = \
4750 (!node['ssl_cert']['env_context'].nil? && !node['ssl_cert']['env_context'].empty?) \
4851 ? ".#{node['ssl_cert']['env_context']}" : ''
4952
53+# CA certificates attributes
5054 default['ssl_cert']['ca_cert_vault'] = 'ca_certs'
5155 default['ssl_cert']['ca_cert_vault_item_key'] = 'public'
5256 default['ssl_cert']['ca_cert_file_prefix'] = ''
57+default['ssl_cert']['ca_cert_file_extension'] = 'crt'
5358 =begin
5459 CA certificate vault item name is
5560 each CA name + ".#{node['ssl_cert']['vault_item_suffix']}".
@@ -63,9 +68,11 @@ default['ssl_cert']['ca_cert_file_prefix'] = ''
6368 > --json ~/tmp/grid_ca.prod.crt.json
6469 =end
6570
71+# CA public keys attributes
6672 default['ssl_cert']['ca_pubkey_vault'] = 'ca_pubkeys'
6773 default['ssl_cert']['ca_pubkey_vault_item_key'] = 'public'
6874 default['ssl_cert']['ca_pubkey_file_prefix'] = ''
75+default['ssl_cert']['ca_pubkey_file_extension'] = 'pub'
6976 =begin
7077 CA public key vault item name is
7178 each CA name + ".#{node['ssl_cert']['vault_item_suffix']}".
@@ -79,9 +86,29 @@ default['ssl_cert']['ca_pubkey_file_prefix'] = ''
7986 > --json ~/tmp/grid_ssh_ca.prod.pub.json
8087 =end
8188
89+# SSH-CA KRL attributes
90+default['ssl_cert']['ssh_ca_krl_vault'] = 'ssh_ca_krls'
91+default['ssl_cert']['ssh_ca_krl_vault_item_key'] = 'public'
92+default['ssl_cert']['ssh_ca_krl_file_prefix'] = ''
93+default['ssl_cert']['ssh_ca_krl_file_extension'] = 'krl'
94+=begin
95+ SSH-CA KRL vault item name is
96+ each SSH-CA KRL name + ".#{node['ssl_cert']['vault_item_suffix']}".
97+ valut item key is 'public'.
98+
99+ * vault item management
100+
101+ $ ruby -rjson -e 'puts JSON.generate({"public" => File.read("grid_ssh_ca.prod.krl")})' \
102+ > > ~/tmp/grid_ssh_ca.prod.krl.json
103+ $ knife vault create ssh_ca_krls grid_ssh_ca.prod \
104+ > --json ~/tmp/grid_ssh_ca.prod.krl.json
105+=end
106+
107+# SSL sever private key attributes
82108 default['ssl_cert']['server_key_vault'] = 'ssl_server_keys'
83109 default['ssl_cert']['server_key_vault_item_key'] = 'private'
84110 default['ssl_cert']['server_key_file_prefix'] = ''
111+default['ssl_cert']['server_key_file_extension'] = 'key'
85112 =begin
86113 server key vault item name is
87114 each common name + "#{node['ssl_cert']['vault_item_suffix']}".
@@ -95,9 +122,11 @@ default['ssl_cert']['server_key_file_prefix'] = ''
95122 > --json ~/tmp/node_example_com.prod.key.json
96123 =end
97124
125+# SSL sever caertificates attributes
98126 default['ssl_cert']['server_cert_vault'] = 'ssl_server_certs'
99127 default['ssl_cert']['server_cert_vault_item_key'] = 'public'
100128 default['ssl_cert']['server_cert_file_prefix'] = ''
129+default['ssl_cert']['server_cert_file_extension'] = 'crt'
101130 =begin
102131 server certificate vault item name is
103132 each common name + ".#{node['ssl_cert']['vault_item_suffix']}".
@@ -127,18 +156,22 @@ default['ssl_cert']['private_dir'] = node.value_for_platform_family(
127156
128157 node['ssl_cert']['ca_names'].each {|ca|
129158 default['ssl_cert']["#{ca}_cert_path"] \
130- = "#{node['ssl_cert']['certs_dir']}/#{node['ssl_cert']['ca_cert_file_prefix']}#{ca}.crt"
159+ = "#{node['ssl_cert']['certs_dir']}/#{node['ssl_cert']['ca_cert_file_prefix']}#{ca}.#{node['ssl_cert']['ca_cert_file_extension']}"
131160 }
132161
133162 node['ssl_cert']['ca_pubkey_names'].each {|ca|
134163 default['ssl_cert']["#{ca}_pubkey_path"] \
135- = "#{node['ssl_cert']['certs_dir']}/#{node['ssl_cert']['ca_pubkey_file_prefix']}#{ca}.pub"
164+ = "#{node['ssl_cert']['certs_dir']}/#{node['ssl_cert']['ca_pubkey_file_prefix']}#{ca}.#{node['ssl_cert']['ca_pubkey_file_extension']}"
136165 }
137166
167+krl_name = node['ssl_cert']['ssh_ca_krl_name']
168+default['ssl_cert']["#{krl_name}_krl_path"] \
169+ = "/etc/ssh/#{node['ssl_cert']['ssh_ca_krl_file_prefix']}#{krl_name}.#{node['ssl_cert']['ssh_ca_krl_file_extension']}"
170+
138171 undotted_cns.each {|cn|
139172 default['ssl_cert']["#{cn}_key_path"] \
140- = "#{node['ssl_cert']['private_dir']}/#{node['ssl_cert']['server_key_file_prefix']}#{cn}.key"
173+ = "#{node['ssl_cert']['private_dir']}/#{node['ssl_cert']['server_key_file_prefix']}#{cn}.#{node['ssl_cert']['server_key_file_extension']}"
141174 default['ssl_cert']["#{cn}_cert_path"] \
142- = "#{node['ssl_cert']['certs_dir']}/#{node['ssl_cert']['server_cert_file_prefix']}#{cn}.crt"
175+ = "#{node['ssl_cert']['certs_dir']}/#{node['ssl_cert']['server_cert_file_prefix']}#{cn}.#{node['ssl_cert']['server_cert_file_extension']}"
143176 }
144177
--- a/cookbooks/ssl_cert/libraries/helper.rb
+++ b/cookbooks/ssl_cert/libraries/helper.rb
@@ -126,6 +126,27 @@ module Helper
126126 end
127127
128128
129+ def ssh_ca_krl(ca)
130+ undotted_ca = ca.gsub('.', '_')
131+
132+ chef_gem_chef_vault
133+ require 'chef-vault'
134+ krl = ChefVault::Item.load(
135+ node['ssl_cert']['ssh_ca_krl_vault'], "#{ca}#{vault_item_suffix}")
136+ node['ssl_cert']['ssh_ca_krl_vault_item_key'].split('/').each {|elm|
137+ krl = krl[elm]
138+ }
139+
140+ krl_path = node['ssl_cert']["#{undotted_ca}_krl_path"]
141+ resources(:file => krl_path) rescue file krl_path do
142+ content krl
143+ owner 'root'
144+ group 'root'
145+ mode 0644
146+ end
147+ end
148+
149+
129150 def server_certificate(cn)
130151 undotted_cn = cn.gsub('.', '_')
131152
--- a/cookbooks/ssl_cert/metadata.rb
+++ b/cookbooks/ssl_cert/metadata.rb
@@ -4,5 +4,5 @@ maintainer_email ''
44 license 'Apache 2.0'
55 description 'Installs/Configures ssl_cert'
66 long_description IO.read(File.join(File.dirname(__FILE__), 'README.md'))
7-version '0.2.0'
7+version '0.3.0'
88
--- /dev/null
+++ b/cookbooks/ssl_cert/recipes/ssh_ca_krl.rb
@@ -0,0 +1,23 @@
1+#
2+# Cookbook Name:: ssl_cert
3+# Recipe:: ssh_ca_krl
4+#
5+# Copyright 2016, whitestar
6+#
7+# Licensed under the Apache License, Version 2.0 (the "License");
8+# you may not use this file except in compliance with the License.
9+# You may obtain a copy of the License at
10+#
11+# http://www.apache.org/licenses/LICENSE-2.0
12+#
13+# Unless required by applicable law or agreed to in writing, software
14+# distributed under the License is distributed on an "AS IS" BASIS,
15+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16+# See the License for the specific language governing permissions and
17+# limitations under the License.
18+#
19+
20+::Chef::Recipe.send(:include, SSLCert::Helper)
21+
22+ssh_ca_krl(node['ssl_cert']['ssh_ca_krl_name'])
23+
旧リポジトリブラウザで表示