Add secret envs

This commit is contained in:
David Heinemeier Hansson
2023-01-21 10:56:24 +01:00
parent 3bf56c2fdb
commit f6ca864e06
4 changed files with 53 additions and 2 deletions

View File

@@ -81,7 +81,11 @@ class Mrsk::Configuration
def env_args
if config.env.present?
argumentize "-e", config.env
if config.env["secret"].present?
argumentize("-e", expand_env_secrets, redacted: true) + argumentize("-e", config.env["clear"])
else
argumentize "-e", config.env
end
else
[]
end
@@ -134,6 +138,10 @@ class Mrsk::Configuration
def role_names
config.servers.is_a?(Array) ? [ "web" ] : config.servers.keys.sort
end
def expand_env_secrets
config.env["secret"].to_h { |key| [ key, ENV[key] ] }
end
end
require "mrsk/configuration/role"

View File

@@ -3,7 +3,7 @@ module Mrsk::Utils
# Return a list of shell arguments using the same named argument against the passed attributes.
def argumentize(argument, attributes, redacted: false)
attributes.flat_map { |k, v| [ argument, redacted ? redact("#{k}=#{v}") : "#{k}=#{v}" ] }
Array(attributes).flat_map { |k, v| [ argument, redacted ? redact("#{k}=#{v}") : "#{k}=#{v}" ] }
end
# Copied from SSHKit::Backend::Abstract#redact to be available inside Commands classes