|`['docker-grid']['compose']['install_flavor']`|String|`'dockerproject'` or `'os-repository'` or `'pypi'`|`'dockerproject'`|
|`['docker-grid']['compose']['skip_setup']`|Boolean||`false`|
|`['docker-grid']['compose']['auto_upgrade']`|Boolean|upgrade/reinstall the docker-compose automatically. Note: this flag is ignored in the case of `os-repository`.|`false`|
-|`['docker-grid']['compose']['version']`|String|Note: this version is ignored in the case of `os-repository`, do not use empty value.|`'1.21.1'`|
+|`['docker-grid']['compose']['version']`|String|Note: this version is ignored in the case of `os-repository`. `''` (empty) means the latest version. This version is ignored in the case of `'os-repository'`.|`'1.21.1'`|
|`['docker-grid']['compose']['release_base_url']`|String||`"https://github.com/docker/compose/releases/download/#{['docker-grid']['compose']['version']}"`|
|`['docker-grid']['compose']['release_url']`|String||`"#{node['docker-grid']['compose']['release_base_url']}/docker-compose-#{node['kernel']['name']}-#{node['kernel']['machine']}"`|
|`['docker-grid']['compose']['home_dir']`|String||`'/opt/docker-compose'`|
release_url = node['docker-grid']['compose']['release_url']
expected_ver = release_url.match(/(\d+\.\d+.\d+)/)
expected_ver = expected_ver[1] unless expected_ver.nil?
- # TODO: latest version
- # %x(curl -s https://api.github.com/repos/docker/compose/releases/latest | jq -r .tag_name).chomp
+ # latest version
+ if expected_ver.nil?
+ pkgs = ['jq']
+ pkgs.prepend('epel-release') if node['platform_family'] == 'rhel'
+ pkgs.each {|pkg|
+ resources(package: pkg) rescue package pkg do
+ action :install
+ end
+ }
+
+ result = shell_out!('curl -s https://api.github.com/repos/docker/compose/releases/latest | jq -r .tag_name')
+ expected_ver = result.stdout.chomp if result.exitstatus.zero? && !result.stdout.chomp.empty?
+ release_url = "https://github.com/docker/compose/releases/download/#{expected_ver}/docker-compose-#{node['kernel']['name']}-#{node['kernel']['machine']}"
+ end
execute 'install_docker_compose' do
user 'root'
command "pip install docker-compose#{pin_ver}"
action :run
not_if "pip list | grep docker-compose | grep '(#{expected_ver})'" unless expected_ver.empty?
- not_if "pip list | grep docker-compose" unless auto_upgrade
+ not_if 'pip list | grep docker-compose' unless auto_upgrade
end
end