module Stax::Ssm

Public Class Methods

included(thor) click to toggle source
# File lib/stax/mixin/ssm.rb, line 7
def self.included(thor)
  thor.desc(:ssm, 'SSM subcommands')
  thor.subcommand(:ssm, Cmd::Ssm)
end

Public Instance Methods

ssm_parameter_delete(*names) click to toggle source
# File lib/stax/mixin/ssm.rb, line 45
def ssm_parameter_delete(*names)
  Aws::Ssm.delete(names: names.map { |name| ssm_parameter_name(name) })
end
ssm_parameter_get(name) click to toggle source
# File lib/stax/mixin/ssm.rb, line 32
def ssm_parameter_get(name)
  Aws::Ssm.get(names: [ssm_parameter_name(name)], with_decryption: true).first&.value
end
ssm_parameter_name(name) click to toggle source
# File lib/stax/mixin/ssm.rb, line 16
def ssm_parameter_name(name)
  [ssm_parameter_path, name].join('/')
end
ssm_parameter_path() click to toggle source
# File lib/stax/mixin/ssm.rb, line 12
def ssm_parameter_path
  @_ssm_parameter_path ||= prepend('/', [app_name, branch_name, class_name].join('/'))
end
ssm_parameter_put(name, value, opt = {}) click to toggle source
# File lib/stax/mixin/ssm.rb, line 20
def ssm_parameter_put(name, value, opt = {})
  Aws::Ssm.put(
    {
      name: ssm_parameter_name(name),
      value: value,
      type: :SecureString,
      # key_id: options[:key],
      overwrite: true,
    }.merge(opt)
  )
end
ssm_parameter_tmpfile(name) click to toggle source

get a parameter from the store to a Tmpfile

# File lib/stax/mixin/ssm.rb, line 37
def ssm_parameter_tmpfile(name)
  Tempfile.new(stack_name).tap do |file|
    file.write(ssm_parameter_get(name))
    File.chmod(0400, file.path)
    file.close
  end
end
ssm_run_shellscript(*cmd) click to toggle source

run a command on stack instances

# File lib/stax/mixin/ssm.rb, line 50
def ssm_run_shellscript(*cmd)
  Aws::Ssm.run(
    document_name: 'AWS-RunShellScript',
    targets: [{key: 'tag:aws:cloudformation:stack-name', values: [stack_name]}],
    parameters: {commands: cmd}
  )&.command_id.tap(&method(:puts))
end