From 9ae3886b2be0fdfa8de7fce8826c0086bd5d40f0 Mon Sep 17 00:00:00 2001 From: Simon Rand Date: Sun, 5 Mar 2023 10:56:51 +0000 Subject: [PATCH 1/3] Ensure curl is installed during bootstrapping --- lib/mrsk/cli/main.rb | 4 ++-- lib/mrsk/cli/server.rb | 13 +++++++++++-- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/lib/mrsk/cli/main.rb b/lib/mrsk/cli/main.rb index db80d9f6..73268f50 100644 --- a/lib/mrsk/cli/main.rb +++ b/lib/mrsk/cli/main.rb @@ -11,7 +11,7 @@ class Mrsk::Cli::Main < Mrsk::Cli::Base desc "deploy", "Deploy app to servers" def deploy runtime = print_runtime do - say "Ensure Docker is installed...", :magenta + say "Ensure curl and Docker are installed...", :magenta invoke "mrsk:cli:server:bootstrap" say "Log into image registry...", :magenta @@ -173,7 +173,7 @@ class Mrsk::Cli::Main < Mrsk::Cli::Base desc "registry", "Login and -out of the image registry" subcommand "registry", Mrsk::Cli::Registry - desc "server", "Bootstrap servers with Docker" + desc "server", "Bootstrap servers with curl and Docker" subcommand "server", Mrsk::Cli::Server desc "traefik", "Manage Traefik load balancer" diff --git a/lib/mrsk/cli/server.rb b/lib/mrsk/cli/server.rb index 9030ffd6..d6ae074a 100644 --- a/lib/mrsk/cli/server.rb +++ b/lib/mrsk/cli/server.rb @@ -1,6 +1,15 @@ class Mrsk::Cli::Server < Mrsk::Cli::Base - desc "bootstrap", "Ensure Docker is installed on servers" + desc "bootstrap", "Ensure curl and Docker are installed on servers" def bootstrap - on(MRSK.hosts + MRSK.accessory_hosts) { execute "which docker || (apt-get update -y && apt-get install docker.io -y)" } + on(MRSK.hosts + MRSK.accessory_hosts) do + dependencies_to_install = [].tap do |dependencies| + dependencies << "curl" unless execute "which curl", raise_on_non_zero_exit: false + dependencies << "docker.io" unless execute "which docker", raise_on_non_zero_exit: false + end + + if dependencies_to_install.any? + execute "apt-get update -y && apt-get install #{dependencies_to_install.join(' ')} -y)" + end + end end end From 3457c3f606310e90c60fbf3007f0e570e55ffc49 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Wed, 8 Mar 2023 18:05:00 +0100 Subject: [PATCH 2/3] Style --- lib/mrsk/cli/server.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/mrsk/cli/server.rb b/lib/mrsk/cli/server.rb index d6ae074a..39861ec2 100644 --- a/lib/mrsk/cli/server.rb +++ b/lib/mrsk/cli/server.rb @@ -2,13 +2,13 @@ class Mrsk::Cli::Server < Mrsk::Cli::Base desc "bootstrap", "Ensure curl and Docker are installed on servers" def bootstrap on(MRSK.hosts + MRSK.accessory_hosts) do - dependencies_to_install = [].tap do |dependencies| + dependencies_to_install = Array.new.tap do |dependencies| dependencies << "curl" unless execute "which curl", raise_on_non_zero_exit: false dependencies << "docker.io" unless execute "which docker", raise_on_non_zero_exit: false end if dependencies_to_install.any? - execute "apt-get update -y && apt-get install #{dependencies_to_install.join(' ')} -y)" + execute "apt-get update -y && apt-get install #{dependencies_to_install.join(" ")} -y)" end end end From 347046019f55f6b1a3e9d69293c1e847ed23e5e0 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Wed, 8 Mar 2023 18:05:06 +0100 Subject: [PATCH 3/3] Add test --- test/cli/server_test.rb | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 test/cli/server_test.rb diff --git a/test/cli/server_test.rb b/test/cli/server_test.rb new file mode 100644 index 00000000..bf0119f4 --- /dev/null +++ b/test/cli/server_test.rb @@ -0,0 +1,16 @@ +require_relative "cli_test_case" + +class CliServerTest < CliTestCase + test "bootstrap" do + run_command("bootstrap").tap do |output| + assert_match /which curl/, output + assert_match /which docker/, output + assert_match /apt-get update -y && apt-get install curl docker.io -y/, output + end + end + + private + def run_command(*command) + stdouted { Mrsk::Cli::Server.start([*command, "-c", "test/fixtures/deploy_with_accessories.yml"]) } + end +end