From 6330f1e9b0a4f48d66bcfd7a04ac031ee939836d Mon Sep 17 00:00:00 2001 From: Kazuhiro MUSASHI Date: Sat, 14 Nov 2020 12:52:16 +0900 Subject: [PATCH] Install `rclone`. --- cookbooks/digdag/default.rb | 2 ++ cookbooks/digdag/rclone_install.rb | 48 ++++++++++++++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 cookbooks/digdag/rclone_install.rb diff --git a/cookbooks/digdag/default.rb b/cookbooks/digdag/default.rb index 1a4f1e1..869820e 100644 --- a/cookbooks/digdag/default.rb +++ b/cookbooks/digdag/default.rb @@ -4,6 +4,8 @@ include_recipe './install.rb' include_recipe './setup.rb' +include_recipe './rclone_install.rb' + # AWS EC2 Swap Setting: if !node['is_ec2'] include_recipe './shared_dir.rb' diff --git a/cookbooks/digdag/rclone_install.rb b/cookbooks/digdag/rclone_install.rb new file mode 100644 index 0000000..8a34044 --- /dev/null +++ b/cookbooks/digdag/rclone_install.rb @@ -0,0 +1,48 @@ +rclone_url = '' +rclone_dir = '' + +vtag = '' + +# Calculate the Download URL: +begin + require 'net/http' + + uri = URI.parse('https://github.com/rclone/rclone/releases/latest') + + Timeout.timeout(3) do + response = Net::HTTP.get_response(uri) + + vtag = $1 if response.body =~ %r{tag\/(v\d+\.\d+\.\d+)} + + rclone_dir = "#{node['rclone']['prefix']}#{vtag}#{node['rclone']['postfix']}" + rclone_url = "#{node['rclone']['url']}/#{vtag}/#{rclone_dir}.zip" + end +rescue + # Abort the chef client process: + raise 'Cannot connect to http://github.com.' +end + +# バージョン確認して、アップデート必要かどうか確認 +result = run_command("rclone --version 2>&1 | grep #{vtag}", error: false) +if result.exit_status != 0 + # Download: + TMP = "/tmp/#{rclone_dir}.zip" + + execute "wget #{rclone_url} -O #{TMP}" + + # Install: + execute "unzip -d /opt/ -o #{TMP}" + execute "mv /opt/#{rclone_dir} /opt/rclone" + + # Change Owner and Permissions: + file "#{node['rclone']['storage']}rclone" do + owner 'root' + group 'root' + mode '755' + end + + # Create Link + link "#{node['rclone']['location']}rclone" do + to "#{node['rclone']['storage']}rclone" + end +end