2 # Cookbook Name:: minio-grid
3 # Recipe:: docker-compose
5 # Copyright 2018, whitestar
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
11 # http://www.apache.org/licenses/LICENSE-2.0
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.
20 doc_url = 'https://hub.docker.com/r/minio/minio/'
22 include_recipe 'platform_utils::kernel_user_namespace'
23 include_recipe 'docker-grid::compose'
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']
36 resources(directory: dir) rescue directory dir do
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']
50 minio_vols = config_srvs['minio']['volumes'].to_a
52 ports = config_srvs['minio']['ports']
53 override_config_srvs['minio']['ports'] = ['9000:9000'] if ports.empty?
55 minio_vols.push("#{config_dir}:/root/.minio:rw")
56 minio_vols.push("#{data_dir}:/data:rw")
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}'
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}'
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'
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")
82 # merge environment hash
83 force_override_config_srvs['minio']['environment'] = minio_envs unless minio_envs.empty?
85 override_config_srvs['minio']['volumes'] = minio_vols unless minio_vols.empty?
87 config_file = "#{app_dir}/docker-compose.yml"
88 template config_file do
89 source 'opt/docker-compose/app/minio/docker-compose.yml'
95 env_file = "#{app_dir}/.env"
97 source 'opt/docker-compose/app/minio/.env'
102 # prevent Chef from logging password attribute value.
105 access_key: access_key,
106 secret_key: secret_key
110 log 'minio docker-compose post install message' do
112 Note: You must execute the following command manually.
116 $ docker-compose up -d
118 $ docker-compose down