Module: Stax::Ssm

Defined in:
lib/stax/mixin/ssm.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(thor) ⇒ Object



7
8
9
10
# File 'lib/stax/mixin/ssm.rb', line 7

def self.included(thor)
  thor.desc(:ssm, 'SSM subcommands')
  thor.subcommand(:ssm, Cmd::Ssm)
end

Instance Method Details

#ssm_parameter_delete(*names) ⇒ Object



45
46
47
# 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) ⇒ Object



32
33
34
# 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) ⇒ Object



16
17
18
# File 'lib/stax/mixin/ssm.rb', line 16

def ssm_parameter_name(name)
  [ssm_parameter_path, name].join('/')
end

#ssm_parameter_pathObject



12
13
14
# 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 = {}) ⇒ Object



20
21
22
23
24
25
26
27
28
29
30
# 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) ⇒ Object

get a parameter from the store to a Tmpfile



37
38
39
40
41
42
43
# 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) ⇒ Object

run a command on stack instances



50
51
52
53
54
55
56
# 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