train-awsssm 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +16 -0
- data/README.md +16 -16
- data/lib/train-awsssm/connection.rb +14 -1
- data/lib/train-awsssm/version.rb +1 -1
- metadata +36 -23
- data/Gemfile +0 -10
- data/train-awsssm.gemspec +0 -27
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c80692d5264b12a209c446350e189224beafd77f022b3b83a5be863120fa2830
|
4
|
+
data.tar.gz: 63d5691bf13b81f8819224d44b6b5a650deb9b9466135d5170fe4549254b7a16
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 302e26f18826f458ff0ffdab020ee15533a269fdd5364e17b04a0e7698c49d4592fe94dcbc7b0b8a48fefa14a1daf717e449b9a84d59e6b67563bb9362b83a13
|
7
|
+
data.tar.gz: 5eed935063c8024ef395e0fbfd4f31143412ef926b788f2c84df748a828c41d71e0f2122be974ea18e6045e49ee4a1998a3bc0af9e2b015f75c7211d0455b719
|
data/CHANGELOG.md
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
# Changelog
|
2
|
+
|
3
|
+
## Unreleased
|
4
|
+
|
5
|
+
## Version 0.1.1
|
6
|
+
|
7
|
+
- Add support for passing in an instance-id instead of IP/DNS
|
8
|
+
- Add note on support for Linux only
|
9
|
+
- Add check for mandatory `host` parameter
|
10
|
+
- Add GitHub templates and workflows
|
11
|
+
- Add development tools (mdl, yamllint, editorconfig, ...)
|
12
|
+
- Fix style on Gemspec
|
13
|
+
|
14
|
+
## Version 0.1.0
|
15
|
+
|
16
|
+
- Initial version
|
data/README.md
CHANGED
@@ -1,44 +1,44 @@
|
|
1
1
|
# train-awsssm - Train Plugin for using AWS Systems Manager Agent
|
2
2
|
|
3
|
-
This plugin allows applications that rely on Train to communicate via AWS SSM.
|
3
|
+
This plugin allows applications that rely on Train to communicate via AWS SSM with Linux instances.
|
4
|
+
|
5
|
+
Windows is currently not yet supported
|
4
6
|
|
5
7
|
## Requirements
|
6
8
|
|
7
|
-
The instance in question must run on AWS and you need to have all AWS credentials
|
8
|
-
set up for the shell which executes the command. Please check the [AWS documentation](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html)
|
9
|
-
for appropriate configuration files and environment variables.
|
9
|
+
The instance in question must run on AWS and you need to have all AWS credentials set up for the shell which executes the command. Please check the [AWS documentation](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html) for appropriate configuration files and environment variables.
|
10
10
|
|
11
|
-
You need the [SSM agent to be installed](https://docs.aws.amazon.com/systems-manager/latest/userguide/ssm-agent.html) on the machine (most current AMIs already
|
12
|
-
have this integrated) and the machine needs to have the managed policy
|
13
|
-
`AmazonSSMManagedInstanceCore` or a least privilege equivalent attached as
|
14
|
-
IAM profile.
|
11
|
+
You need the [SSM agent to be installed](https://docs.aws.amazon.com/systems-manager/latest/userguide/ssm-agent.html) on the machine (most current AMIs already have this integrated) and the machine needs to have the managed policy `AmazonSSMManagedInstanceCore` or a least privilege equivalent attached as IAM profile.
|
15
12
|
|
16
|
-
Commands will be executed under the `
|
13
|
+
Commands will be executed under the `root` user.
|
17
14
|
|
18
15
|
## Installation
|
19
16
|
|
20
|
-
|
21
|
-
Rubygems.Org. For this there is a rake task which makes this a one-liner:
|
17
|
+
If you use this Gem as a plain transport you can use `gem install train-awsssm` but if you need it for InSpec you will need to do it via `inspec plugin install train-awsssm`, as InSpec does not use the global/user Gem directory by default.
|
22
18
|
|
23
|
-
|
24
|
-
rake install:local
|
25
|
-
```
|
19
|
+
You can build and install this gem on your local system as well via a Rake task: `rake install:local`.
|
26
20
|
|
27
21
|
## Transport parameters
|
28
22
|
|
29
23
|
| Option | Explanation | Default |
|
30
24
|
| -------------------- | --------------------------------------------- | ---------------- |
|
31
|
-
| `host` | IP
|
25
|
+
| `host` | IP, DNS name or EC2 ID of instance | (required) |
|
32
26
|
| `execution_timeout` | Maximum time until timeout | 60 |
|
33
27
|
| `recheck_invocation` | Interval of rechecking AWS command invocation | 1.0 |
|
34
28
|
| `recheck_execution` | Interval of rechecking completion of command | 1.0 |
|
35
29
|
|
30
|
+
## Limitations
|
31
|
+
|
32
|
+
Currently, this transport is limited to executing commands via the `AWS-RunShellScript` command which means there is no file upload/download capability.
|
33
|
+
|
34
|
+
Support for proper use of the AWS Session Manager, which allows complete tunneling, is planned.
|
35
|
+
|
36
36
|
## Example use
|
37
37
|
|
38
38
|
```ruby
|
39
39
|
require "train-awsssm"
|
40
40
|
train = Train.create("awsssm", {
|
41
|
-
host:
|
41
|
+
host: "172.16.3.12",
|
42
42
|
logger: Logger.new($stdout, level: :info)
|
43
43
|
})
|
44
44
|
conn = train.connection
|
@@ -9,6 +9,8 @@ module TrainPlugins
|
|
9
9
|
def initialize(options)
|
10
10
|
super(options)
|
11
11
|
|
12
|
+
check_options
|
13
|
+
|
12
14
|
@ssm = Aws::SSM::Client.new
|
13
15
|
end
|
14
16
|
|
@@ -114,7 +116,11 @@ module TrainPlugins
|
|
114
116
|
|
115
117
|
# Execute a command via SSM
|
116
118
|
def execute_command(address, command)
|
117
|
-
instance_id =
|
119
|
+
instance_id = if address.start_with? "i-"
|
120
|
+
address
|
121
|
+
else
|
122
|
+
instance_id(address)
|
123
|
+
end
|
118
124
|
|
119
125
|
cmd = @ssm.send_command(instance_ids: [instance_id], document_name: "AWS-RunShellScript", parameters: { "commands": [command] })
|
120
126
|
cmd_id = cmd.command.command_id
|
@@ -138,6 +144,13 @@ module TrainPlugins
|
|
138
144
|
|
139
145
|
result
|
140
146
|
end
|
147
|
+
|
148
|
+
# Check if options are as needed
|
149
|
+
def check_options
|
150
|
+
unless options[:host]
|
151
|
+
raise format("Missing required option :host for train-awsssm")
|
152
|
+
end
|
153
|
+
end
|
141
154
|
end
|
142
155
|
end
|
143
156
|
end
|
data/lib/train-awsssm/version.rb
CHANGED
metadata
CHANGED
@@ -1,87 +1,100 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: train-awsssm
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Thomas Heinen
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-10-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: bump
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
20
|
-
type: :
|
19
|
+
version: '0.9'
|
20
|
+
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
26
|
+
version: '0.9'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: chefstyle
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
34
|
-
type: :
|
33
|
+
version: '0.14'
|
34
|
+
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
40
|
+
version: '0.14'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
42
|
+
name: guard
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
48
|
-
type: :
|
47
|
+
version: '2.16'
|
48
|
+
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
54
|
+
version: '2.16'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
56
|
+
name: mdl
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: '0.
|
61
|
+
version: '0.9'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: '0.
|
69
|
-
|
70
|
-
|
68
|
+
version: '0.9'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rake
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '13.0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '13.0'
|
83
|
+
description: Train plugin to use the AWS Systems Manager Agent to execute commands
|
84
|
+
on machines without SSH/WinRM
|
71
85
|
email:
|
72
86
|
- theinen@tecracer.de
|
73
87
|
executables: []
|
74
88
|
extensions: []
|
75
89
|
extra_rdoc_files: []
|
76
90
|
files:
|
77
|
-
-
|
91
|
+
- CHANGELOG.md
|
78
92
|
- README.md
|
79
93
|
- lib/train-awsssm.rb
|
80
94
|
- lib/train-awsssm/connection.rb
|
81
95
|
- lib/train-awsssm/transport.rb
|
82
96
|
- lib/train-awsssm/version.rb
|
83
|
-
-
|
84
|
-
homepage: https://github.com/tecracer_theinen/train-awsssm
|
97
|
+
homepage: https://github.com/tecracer-chef/train-awsssm
|
85
98
|
licenses:
|
86
99
|
- Apache-2.0
|
87
100
|
metadata: {}
|
@@ -93,7 +106,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
93
106
|
requirements:
|
94
107
|
- - ">="
|
95
108
|
- !ruby/object:Gem::Version
|
96
|
-
version: '
|
109
|
+
version: '2.6'
|
97
110
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
98
111
|
requirements:
|
99
112
|
- - ">="
|
data/Gemfile
DELETED
data/train-awsssm.gemspec
DELETED
@@ -1,27 +0,0 @@
|
|
1
|
-
lib = File.expand_path("../lib", __FILE__)
|
2
|
-
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
3
|
-
require "train-awsssm/version"
|
4
|
-
|
5
|
-
Gem::Specification.new do |spec|
|
6
|
-
spec.name = "train-awsssm"
|
7
|
-
spec.version = TrainPlugins::AWSSSM::VERSION
|
8
|
-
spec.authors = ["Thomas Heinen"]
|
9
|
-
spec.email = ["theinen@tecracer.de"]
|
10
|
-
spec.summary = "Train Transport for AWS Systems Manager Agents"
|
11
|
-
spec.description = "Train plugin to use the AWS Systems Manager Agent to execute commands on machines without SSH/WinRM "
|
12
|
-
spec.homepage = "https://github.com/tecracer_theinen/train-awsssm"
|
13
|
-
spec.license = "Apache-2.0"
|
14
|
-
|
15
|
-
spec.files = %w{
|
16
|
-
README.md train-awsssm.gemspec Gemfile
|
17
|
-
} + Dir.glob(
|
18
|
-
"lib/**/*", File::FNM_DOTMATCH
|
19
|
-
).reject { |f| File.directory?(f) }
|
20
|
-
spec.require_paths = ["lib"]
|
21
|
-
|
22
|
-
spec.add_dependency "train", "~> 2.0"
|
23
|
-
spec.add_dependency "aws-sdk-ec2", "~> 1.129"
|
24
|
-
spec.add_dependency "aws-sdk-ssm", "~> 1.69"
|
25
|
-
|
26
|
-
spec.add_development_dependency "bump", "~> 0.8"
|
27
|
-
end
|