OSDN Git Service

refactoring.
[metasearch/grid-chef-repo.git] / cookbooks / minio-grid / recipes / docker-compose.rb
1 #
2 # Cookbook Name:: minio-grid
3 # Recipe:: docker-compose
4 #
5 # Copyright 2018, 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 doc_url = 'https://hub.docker.com/r/minio/minio/'
21
22 include_recipe 'platform_utils::kernel_user_namespace'
23 include_recipe 'docker-grid::compose'
24
25 app_dir = node['minio-grid']['docker-compose']['app_dir']
26 config_dir = node['minio-grid']['docker-compose']['config_dir']
27 certs_dir = "#{config_dir}/certs"
28 data_dir = node['minio-grid']['docker-compose']['data_dir']
29
30 [
31   app_dir,
32   config_dir,
33   certs_dir,
34   data_dir,
35 ].each {|dir|
36   resources(directory: dir) rescue directory dir do
37     owner 'root'
38     group 'root'
39     mode '0755'
40     recursive true
41   end
42 }
43
44 #override_minio_config = node.override['minio-grid']['config']
45 config_srvs = node['minio-grid']['docker-compose']['config']['services']
46 override_config_srvs = node.override['minio-grid']['docker-compose']['config']['services']
47 force_override_config_srvs = node.force_override['minio-grid']['docker-compose']['config']['services']
48 #minio_envs_org = config_srvs['minio']['environment']
49 minio_envs = {}
50 minio_vols = config_srvs['minio']['volumes'].to_a
51
52 ports = config_srvs['minio']['ports']
53 override_config_srvs['minio']['ports'] = ['9000:9000'] if ports.empty?
54
55 minio_vols.push("#{config_dir}:/root/.minio:rw")
56 minio_vols.push("#{data_dir}:/data:rw")
57
58 access_key = nil
59 access_key_vault_item = node['minio-grid']['access_key_vault_item']
60 unless access_key_vault_item.empty?
61   access_key = get_vault_item_value(access_key_vault_item)
62   minio_envs['MINIO_ACCESS_KEY'] = '${MINIO_ACCESS_KEY}'
63 end
64
65 secret_key = nil
66 secret_key_vault_item = node['minio-grid']['secret_key_vault_item']
67 unless secret_key_vault_item.empty?
68   secret_key = get_vault_item_value(secret_key_vault_item)
69   minio_envs['MINIO_SECRET_KEY'] = '${MINIO_SECRET_KEY}'
70 end
71
72 if node['minio-grid']['with_ssl_cert_cookbook']
73   ::Chef::Recipe.send(:include, SSLCert::Helper)
74   cn = node['minio-grid']['ssl_cert']['common_name']
75   append_server_ssl_cn(cn)
76   include_recipe 'ssl_cert::server_key_pairs'
77
78   minio_vols.push("#{server_cert_path(cn)}:/root/.minio/certs/public.crt:ro")
79   minio_vols.push("#{server_key_path(cn)}:/root/.minio/certs/private.key:ro")
80 end
81
82 # merge environment hash
83 force_override_config_srvs['minio']['environment'] = minio_envs unless minio_envs.empty?
84 # reset vlumes array.
85 override_config_srvs['minio']['volumes'] = minio_vols unless minio_vols.empty?
86
87 config_file = "#{app_dir}/docker-compose.yml"
88 template config_file do
89   source  'opt/docker-compose/app/minio/docker-compose.yml'
90   owner 'root'
91   group 'root'
92   mode '0644'
93 end
94
95 env_file = "#{app_dir}/.env"
96 template env_file do
97   source 'opt/docker-compose/app/minio/.env'
98   owner 'root'
99   group 'root'
100   mode '0600'
101   sensitive true
102   # prevent Chef from logging password attribute value.
103   variables(
104     # secrets
105     access_key: access_key,
106     secret_key: secret_key
107   )
108 end
109
110 log 'minio docker-compose post install message' do
111   message <<~"EOM"
112   Note: You must execute the following command manually.
113     See #{doc_url}
114     * Start:
115       $ cd #{app_dir}
116       $ docker-compose up -d
117     * Stop
118       $ docker-compose down
119 EOM
120 end