Class: Awful::Ssm
  
  
  
  
    
      Constant Summary
      collapse
    
    
      
        - COLORS =
          
        
 
        {
  Success:   :green,
  TimedOut:  :red,
  Cancelled: :red,
  Failed:    :red
} 
      
    
  
  
    
      Instance Method Summary
      collapse
    
    
  
  
  
  
  
  
  
  
  
  Methods inherited from Cli
  #initialize, #ll, #version
  
  Constructor Details
  
    This class inherits a constructor from Awful::Cli
  
 
  
    Instance Method Details
    
      
  
  
    
      
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102 
     | 
    
      # File 'lib/awful/ssm.rb', line 85
def commands
  ssm.list_commands.commands.output do |cmds|
    if options[:long]
      print_table cmds.map { |c|
        [
          c.command_id,
          c.instance_ids.join(','),
          c.document_name,
          color(c.status),
          c.requested_date_time,
          c.
        ]
      }
    else
      puts cmds.map(&:command_id)
    end
  end
end
     | 
  
 
    
      
  
  
    #delete(name)  ⇒ Object 
  
  
  
  
    
      
65
66
67
68
69
70
71 
     | 
    
      # File 'lib/awful/ssm.rb', line 65
def delete(name)
  if yes?("Really delete parameter #{name}?", :yellow)
    ssm.delete_parameter(name: name)
  end
rescue Aws::SSM::Errors::ParameterNotFound => e
  error(e.message)
end
     | 
  
 
    
      
  
  
    #documents(name = '.')  ⇒ Object 
  
  
  
  
    
      
116
117
118
119
120
121
122
123
124
125
126
127 
     | 
    
      # File 'lib/awful/ssm.rb', line 116
def documents(name = '.')
  filter = [{key: 'PlatformTypes', value: options[:platform_types].capitalize}]
  ssm.list_documents(document_filter_list: filter).document_identifiers.select do |doc|
    doc.name.match(/#{name}/i)
  end.output do |docs|
    if options[:long]
      print_table docs.map { |d| [d.name, d.platform_types.join(',')] }
    else
      puts docs.map(&:name)
    end
  end
end
     | 
  
 
    
      
  
  
    
      
105
106
107
108
109
110
111 
     | 
    
      # File 'lib/awful/ssm.rb', line 105
def dump(id)
  ssm.list_command_invocations(command_id: id, details: true).command_invocations.output do |cmds|
    cmds.each do |cmd|
      puts YAML.dump(stringify_keys(cmd.to_hash))
    end
  end
end
     | 
  
 
    
      
  
  
    #get(name)  ⇒ Object 
  
  
  
  
    
      
29
30
31
32
33 
     | 
    
      # File 'lib/awful/ssm.rb', line 29
def get(name)
  puts ssm.get_parameter(name: name, with_decryption: options[:decrypt]).parameter.value
rescue Aws::SSM::Errors::ParameterNotFound => e
  error(e.message)
end 
     | 
  
 
    
      
  
  
    #history(name)  ⇒ Object 
  
  
  
  
    
      
75
76
77
78
79
80
81 
     | 
    
      # File 'lib/awful/ssm.rb', line 75
def history(name)
  ssm.get_parameter_history(name: name, with_decryption: options[:decrypt]).each do |p|
    print_table p.parameters.map { |h|
      [ h.version, h.last_modified_date, h.value ]
    }
  end
end
     | 
  
 
    
      
  
  
    #ls(prefix = '/')  ⇒ Object 
  
  
  
  
    
      
19
20
21
22
23
24
25 
     | 
    
      # File 'lib/awful/ssm.rb', line 19
def ls(prefix = '/')
  filters = [ { key: :Name, option: :BeginsWith, values: [ prefix.sub(/^(\w)/, '/\1') ] } ]
  ssm.describe_parameters(parameter_filters: filters).each do |response|
    response.parameters.each { |p| puts p.name }
    sleep 0.1                 end
end
     | 
  
 
    
      
  
  
    #path(path)  ⇒ Object 
  
  
  
  
    
      
39
40
41
42
43
44 
     | 
    
      # File 'lib/awful/ssm.rb', line 39
def path(path)
  cmd = options[:show] ? ->(p) { puts "#{p.name} #{p.value}" } : ->(p) { puts p.name }
  ssm.get_parameters_by_path(path: path, with_decryption: options[:decrypt], recursive: options[:recursive]).each do |response|
    response.parameters.each(&cmd.method(:call))
  end
end
     | 
  
 
    
      
  
  
    #put(name, value)  ⇒ Object 
  
  
  
  
    
      
51
52
53
54
55
56
57
58
59
60
61
62 
     | 
    
      # File 'lib/awful/ssm.rb', line 51
def put(name, value)
  ssm.put_parameter(
    name:        name,
    value:       value,
    description: options[:description],
    type:        options[:type],
    key_id:      options[:key_id],
    overwrite:   options[:overwrite],
  )
rescue Aws::SSM::Errors::ParameterAlreadyExists => e
  error(e.message)
end
     | 
  
 
    
      
  
  
    #shell_script(*instance_ids)  ⇒ Object 
  
  
  
  
    
      
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149 
     | 
    
      # File 'lib/awful/ssm.rb', line 135
def shell_script(*instance_ids)
  ssm.send_command(
    instance_ids: instance_ids,
    comment: options[:comment],
    timeout_seconds: options[:timeout],
    output_s3_bucket_name: options[:bucket],
    output_s3_key_prefix: options[:prefix],
    document_name: 'AWS-RunShellScript',
    parameters: {
      commands: options[:commands]
    }
  ).output do |response|
    puts response.command.command_id
  end
end
     |