sonic-screwdriver 1.4.0 → 2.2.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/.circleci/bin/commit_docs.sh +26 -0
- data/.circleci/config.yml +72 -0
- data/.gitignore +2 -1
- data/CHANGELOG.md +29 -3
- data/Gemfile +3 -3
- data/Guardfile +17 -10
- data/LICENSE.txt +2 -2
- data/README.md +25 -28
- data/Rakefile +9 -2
- data/docs/_config.yml +3 -0
- data/docs/_docs/help.md +1 -1
- data/docs/_docs/install-bastion.md +5 -15
- data/docs/_docs/install.md +3 -13
- data/docs/_docs/next-steps.md +1 -1
- data/docs/_docs/settings.md +42 -56
- data/docs/_docs/tutorial-ecs-exec.md +16 -20
- data/docs/_docs/tutorial-ecs-sh.md +73 -0
- data/docs/_docs/tutorial-execute.md +106 -38
- data/docs/_docs/tutorial-ssh.md +15 -19
- data/docs/_docs/why-ec2-run-command.md +1 -1
- data/docs/_includes/commands.html +5 -5
- data/docs/_includes/content.html +5 -0
- data/docs/_includes/css/main.css +15 -9
- data/docs/_includes/css/sonic.css +7 -5
- data/docs/_includes/example.html +4 -4
- data/docs/_includes/footer.html +6 -4
- data/docs/_includes/reference.md +1 -0
- data/docs/_includes/subnav.html +2 -1
- data/docs/_reference/sonic-completion.md +44 -0
- data/docs/_reference/sonic-completion_script.md +25 -0
- data/docs/_reference/sonic-ecs-exec.md +30 -0
- data/docs/_reference/sonic-ecs-help.md +21 -0
- data/docs/_reference/sonic-ecs-sh.md +35 -0
- data/docs/_reference/sonic-ecs.md +25 -0
- data/docs/_reference/sonic-execute.md +85 -0
- data/docs/_reference/sonic-list.md +40 -0
- data/docs/_reference/sonic-ssh.md +86 -0
- data/docs/_reference/sonic-version.md +21 -0
- data/docs/bin/web +1 -1
- data/docs/img/tutorials/ec2-console-run-command.png +0 -0
- data/docs/quick-start.md +17 -22
- data/docs/reference.md +12 -0
- data/{bin → exe}/sonic +3 -3
- data/lib/bash_scripts/docker-exec.sh +1 -0
- data/lib/bash_scripts/docker-run.sh +8 -1
- data/lib/sonic.rb +11 -3
- data/lib/sonic/{aws_services.rb → aws_service.rb} +6 -1
- data/lib/sonic/base_command.rb +82 -0
- data/lib/sonic/checks.rb +2 -2
- data/lib/sonic/cli.rb +41 -29
- data/lib/sonic/command.rb +8 -22
- data/lib/sonic/completer.rb +161 -0
- data/lib/sonic/completer/script.rb +6 -0
- data/lib/sonic/completer/script.sh +10 -0
- data/lib/sonic/core.rb +15 -0
- data/lib/sonic/default/settings.yml +9 -16
- data/lib/sonic/docker.rb +30 -2
- data/lib/sonic/ecs.rb +22 -0
- data/lib/sonic/execute.rb +203 -51
- data/lib/sonic/help.rb +9 -0
- data/lib/sonic/help/command/send.md +10 -0
- data/lib/sonic/help/completion.md +22 -0
- data/lib/sonic/help/completion_script.md +3 -0
- data/lib/sonic/help/ecs/exec.md +8 -0
- data/lib/sonic/help/ecs/sh.md +13 -0
- data/lib/sonic/help/execute.md +59 -0
- data/lib/sonic/help/list.md +17 -0
- data/lib/sonic/help/ssh.md +60 -0
- data/lib/sonic/list.rb +5 -2
- data/lib/sonic/setting.rb +47 -0
- data/lib/sonic/ssh.rb +42 -23
- data/lib/sonic/ssh/identifier_detector.rb +7 -3
- data/lib/sonic/ui.rb +2 -2
- data/lib/sonic/version.rb +1 -1
- data/sonic.gemspec +14 -9
- data/spec/lib/cli_spec.rb +11 -11
- data/spec/lib/sonic/execute_spec.rb +1 -2
- data/spec/spec_helper.rb +18 -10
- metadata +115 -19
- data/Gemfile.lock +0 -134
- data/docs/_docs/tutorial-ecs-run.md +0 -100
- data/lib/sonic/cli/help.rb +0 -152
- data/lib/sonic/settings.rb +0 -115
@@ -11,15 +11,15 @@
|
|
11
11
|
<div class="col-lg-8 col-lg-offset-2">
|
12
12
|
<div class="commands">
|
13
13
|
{% highlight sh %}
|
14
|
-
sonic ssh
|
14
|
+
sonic ssh # ssh onto instance
|
15
15
|
|
16
|
-
sonic ecs
|
16
|
+
sonic ecs sh # docker run on ECS
|
17
17
|
|
18
|
-
sonic ecs
|
18
|
+
sonic ecs exec # docker exec on ECS
|
19
19
|
|
20
|
-
sonic list
|
20
|
+
sonic list # list servers
|
21
21
|
|
22
|
-
sonic execute
|
22
|
+
sonic execute # run command with SSM
|
23
23
|
{% endhighlight %}
|
24
24
|
</div>
|
25
25
|
</div>
|
data/docs/_includes/content.html
CHANGED
@@ -8,6 +8,11 @@
|
|
8
8
|
<section id="main">
|
9
9
|
<div class="container">
|
10
10
|
<div class="row">
|
11
|
+
{% if page.reference %}
|
12
|
+
<div class="col-md-9 reference-nav">
|
13
|
+
<a href="/reference">Back to Reference Index</a>
|
14
|
+
</div>
|
15
|
+
{% endif %}
|
11
16
|
<div class="col-md-9 content-body">
|
12
17
|
<h2>{{ page.title }}</h2>
|
13
18
|
{{ content }}
|
data/docs/_includes/css/main.css
CHANGED
@@ -9,11 +9,13 @@ body {
|
|
9
9
|
}
|
10
10
|
|
11
11
|
p {
|
12
|
-
font-size: 20px
|
12
|
+
/*font-size: 20px;*/
|
13
|
+
font-size: 1.2em;
|
13
14
|
}
|
14
15
|
|
15
16
|
p.small {
|
16
|
-
font-size:
|
17
|
+
font-size: 1em;
|
18
|
+
/*font-size: 16px;*/
|
17
19
|
}
|
18
20
|
|
19
21
|
a,
|
@@ -31,16 +33,21 @@ h3,
|
|
31
33
|
h4,
|
32
34
|
h5,
|
33
35
|
h6 {
|
34
|
-
text-transform: uppercase;
|
35
36
|
font-family: Montserrat,"Helvetica Neue",Helvetica,Arial,sans-serif;
|
36
37
|
font-weight: 700;
|
37
38
|
}
|
38
39
|
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
40
|
+
h1 {
|
41
|
+
font-size: 1.6em;
|
42
|
+
}
|
43
|
+
h2 {
|
44
|
+
font-size: 1.5em;
|
45
|
+
}
|
46
|
+
h3 {
|
47
|
+
font-size: 1.4em;
|
48
|
+
}
|
49
|
+
h4 {
|
50
|
+
font-size: 1.3em;
|
44
51
|
}
|
45
52
|
|
46
53
|
hr.star-light,
|
@@ -201,7 +208,6 @@ section {
|
|
201
208
|
section h2 {
|
202
209
|
margin: 0;
|
203
210
|
margin-bottom: 15px;
|
204
|
-
font-size: 2em;
|
205
211
|
}
|
206
212
|
|
207
213
|
section.success {
|
@@ -28,7 +28,7 @@ section#main .intro-text .name {
|
|
28
28
|
display: block;
|
29
29
|
text-transform: uppercase;
|
30
30
|
font-family: Montserrat,"Helvetica Neue",Helvetica,Arial,sans-serif;
|
31
|
-
font-size:
|
31
|
+
font-size: 1.5em;
|
32
32
|
font-weight: 700;
|
33
33
|
}
|
34
34
|
|
@@ -58,22 +58,23 @@ section#main .intro-text .skills {
|
|
58
58
|
|
59
59
|
.content-body {
|
60
60
|
text-align: left;
|
61
|
-
font-size:
|
61
|
+
font-size: 1em;
|
62
62
|
}
|
63
63
|
|
64
64
|
.content-body h2 {
|
65
|
-
text-align:
|
65
|
+
text-align: left;
|
66
66
|
}
|
67
67
|
|
68
68
|
.content-body ul,
|
69
69
|
.content-body ol {
|
70
70
|
margin-top: 0;
|
71
|
+
font-size: 17px;
|
71
72
|
}
|
72
73
|
|
73
74
|
.content-nav {
|
74
75
|
/*background-color: green;*/
|
75
76
|
margin-top: 40px;
|
76
|
-
font-size: 1.
|
77
|
+
font-size: 1.15em;
|
77
78
|
}
|
78
79
|
|
79
80
|
.content-nav ul, .content-nav ol {
|
@@ -95,6 +96,7 @@ section#main .intro-text .skills {
|
|
95
96
|
code {
|
96
97
|
color: #443e40;
|
97
98
|
background-color: #cdcbd4;
|
99
|
+
font-size: 0.72em;
|
98
100
|
}
|
99
101
|
|
100
102
|
footer h3 {
|
@@ -140,7 +142,7 @@ ul.tools li {
|
|
140
142
|
.edit-on-github h2,
|
141
143
|
.edit-on-github p,
|
142
144
|
.edit-on-github li {
|
143
|
-
font-size: 1.5em
|
145
|
+
/*font-size: 1.5em;*/
|
144
146
|
}
|
145
147
|
|
146
148
|
.use-cases {
|
data/docs/_includes/example.html
CHANGED
@@ -10,10 +10,10 @@
|
|
10
10
|
<div class='col-md-offset-1 col-md-10'>
|
11
11
|
<p>With one command you can go from your local machine into a live ECS running docker container. Boom!</p>
|
12
12
|
{% highlight sh %}
|
13
|
-
$ sonic ecs
|
14
|
-
|
15
|
-
|
16
|
-
root@
|
13
|
+
$ sonic ecs exec boltops-web
|
14
|
+
...
|
15
|
+
+ exec docker exec -ti 385b643c7a895231d2b193574368b0c6c6bebce487267c3c175d0acea3082d4c bash
|
16
|
+
root@385b643c7a89:/app#
|
17
17
|
{% endhighlight %}
|
18
18
|
</div>
|
19
19
|
</div>
|
data/docs/_includes/footer.html
CHANGED
@@ -6,10 +6,12 @@
|
|
6
6
|
<div class="footer-col col-md-4">
|
7
7
|
<h3>More Tools</h3>
|
8
8
|
<ul class="list-unstyled tools">
|
9
|
-
<li><a href="
|
10
|
-
<li><a href="
|
11
|
-
<li><a href="
|
12
|
-
<li><a href="https://
|
9
|
+
<li><a href="https://terraspace.cloud">Terraspace</a></li>
|
10
|
+
<li><a href="https://kubes.guru">Kubes</a></li>
|
11
|
+
<li><a href="https://rubyonjets.com">Jets</a></li>
|
12
|
+
<li><a href="https://ufoships.com">Ufo</a></li>
|
13
|
+
<li><a href="https://lono.cloud">Lono</a></li>
|
14
|
+
<li><a href="https://jack-eb.com">Jack</a></li>
|
13
15
|
</ul>
|
14
16
|
</div>
|
15
17
|
<div class="footer-col col-md-4">
|
@@ -0,0 +1 @@
|
|
1
|
+
Multi-functional tool to manage AWS infrastructure. A swiss army knife with a variety of uses.
|
data/docs/_includes/subnav.html
CHANGED
@@ -11,7 +11,7 @@
|
|
11
11
|
<ul class="tutorial">
|
12
12
|
<li><a href="{% link _docs/tutorial-ssh.md %}">SSH</a></li>
|
13
13
|
<li><a href="{% link _docs/tutorial-ecs-exec.md %}">ECS Exec</a></li>
|
14
|
-
<li><a href="{% link _docs/tutorial-ecs-
|
14
|
+
<li><a href="{% link _docs/tutorial-ecs-sh.md %}">ECS Run</a></li>
|
15
15
|
<li><a href="{% link _docs/tutorial-execute.md %}">Execute</a></li>
|
16
16
|
<li><a href="{% link _docs/tutorial-list.md %}">List</a></li>
|
17
17
|
</ul>
|
@@ -25,5 +25,6 @@
|
|
25
25
|
</li>
|
26
26
|
<li><a href="{% link _docs/how-it-works.md %}">How It Works</a></li>
|
27
27
|
<li><a href="{% link _docs/next-steps.md %}">Next Steps</a></li>
|
28
|
+
<li><a href="{% link reference.md %}">CLI Reference</a></li>
|
28
29
|
</ul>
|
29
30
|
</div>
|
@@ -0,0 +1,44 @@
|
|
1
|
+
---
|
2
|
+
title: sonic completion
|
3
|
+
reference: true
|
4
|
+
---
|
5
|
+
|
6
|
+
## Usage
|
7
|
+
|
8
|
+
sonic completion *PARAMS
|
9
|
+
|
10
|
+
## Description
|
11
|
+
|
12
|
+
Prints words for auto-completion.
|
13
|
+
|
14
|
+
Example:
|
15
|
+
|
16
|
+
sonic completion
|
17
|
+
|
18
|
+
Prints words for TAB auto-completion.
|
19
|
+
|
20
|
+
Examples:
|
21
|
+
|
22
|
+
sonic completion
|
23
|
+
sonic completion execute
|
24
|
+
sonic completion list
|
25
|
+
|
26
|
+
To enable, TAB auto-completion add the following to your profile:
|
27
|
+
|
28
|
+
eval $(sonic completion_script)
|
29
|
+
|
30
|
+
Auto-completion example usage:
|
31
|
+
|
32
|
+
sonic [TAB]
|
33
|
+
sonic exe[TAB]
|
34
|
+
sonic execute [TAB]
|
35
|
+
sonic list [TAB]
|
36
|
+
|
37
|
+
|
38
|
+
## Options
|
39
|
+
|
40
|
+
```
|
41
|
+
[--verbose], [--no-verbose]
|
42
|
+
[--noop], [--no-noop]
|
43
|
+
```
|
44
|
+
|
@@ -0,0 +1,25 @@
|
|
1
|
+
---
|
2
|
+
title: sonic completion_script
|
3
|
+
reference: true
|
4
|
+
---
|
5
|
+
|
6
|
+
## Usage
|
7
|
+
|
8
|
+
sonic completion_script
|
9
|
+
|
10
|
+
## Description
|
11
|
+
|
12
|
+
Generates a script that can be eval to setup auto-completion.
|
13
|
+
|
14
|
+
To use, add the following to your `~/.bashrc` or `~/.profile`
|
15
|
+
|
16
|
+
eval $(sonic completion_script)
|
17
|
+
|
18
|
+
|
19
|
+
## Options
|
20
|
+
|
21
|
+
```
|
22
|
+
[--verbose], [--no-verbose]
|
23
|
+
[--noop], [--no-noop]
|
24
|
+
```
|
25
|
+
|
@@ -0,0 +1,30 @@
|
|
1
|
+
---
|
2
|
+
title: sonic ecs exec
|
3
|
+
reference: true
|
4
|
+
---
|
5
|
+
|
6
|
+
## Usage
|
7
|
+
|
8
|
+
sonic ecs exec [ECS_SERVICE]
|
9
|
+
|
10
|
+
## Description
|
11
|
+
|
12
|
+
docker exec into running docker container associated with the service on a container instance
|
13
|
+
|
14
|
+
Ssh into an ECS container instance, finds a running docker container associated
|
15
|
+
with the service and docker exec's into it.
|
16
|
+
|
17
|
+
Examples:
|
18
|
+
|
19
|
+
$ sonic ecs exec my-service --cluster my-cluster
|
20
|
+
|
21
|
+
You can use a variety of identifiers. These include the ECS service name and task id.
|
22
|
+
|
23
|
+
|
24
|
+
## Options
|
25
|
+
|
26
|
+
```
|
27
|
+
[--bastion=BASTION] # Bastion jump host to use. Defaults to no bastion server.
|
28
|
+
[--cluster=CLUSTER] # ECS Cluster to use. Default cluster is default
|
29
|
+
```
|
30
|
+
|
@@ -0,0 +1,21 @@
|
|
1
|
+
---
|
2
|
+
title: sonic ecs help
|
3
|
+
reference: true
|
4
|
+
---
|
5
|
+
|
6
|
+
## Usage
|
7
|
+
|
8
|
+
sonic ecs help [COMMAND]
|
9
|
+
|
10
|
+
## Description
|
11
|
+
|
12
|
+
Describe subcommands or one specific subcommand
|
13
|
+
|
14
|
+
|
15
|
+
## Options
|
16
|
+
|
17
|
+
```
|
18
|
+
[--bastion=BASTION] # Bastion jump host to use. Defaults to no bastion server.
|
19
|
+
[--cluster=CLUSTER] # ECS Cluster to use. Default cluster is default
|
20
|
+
```
|
21
|
+
|
@@ -0,0 +1,35 @@
|
|
1
|
+
---
|
2
|
+
title: sonic ecs sh
|
3
|
+
reference: true
|
4
|
+
---
|
5
|
+
|
6
|
+
## Usage
|
7
|
+
|
8
|
+
sonic ecs sh [ECS_SERVICE]
|
9
|
+
|
10
|
+
## Description
|
11
|
+
|
12
|
+
docker run with the service on a container instance
|
13
|
+
|
14
|
+
Ssh into an ECS container instance and runs a docker container using the same
|
15
|
+
environment and image as the specified running service.
|
16
|
+
|
17
|
+
Examples:
|
18
|
+
|
19
|
+
$ sonic ecs sh --cluster my-cluster my-service
|
20
|
+
$ sonic ecs sh --cluster my-cluster my-service
|
21
|
+
|
22
|
+
# If there are flags in the command that you want to pass down to the docker
|
23
|
+
run command you will need to put the command in single quotes. This is due to
|
24
|
+
the way Thor (what this tool uses) parses options.
|
25
|
+
|
26
|
+
$ sonic ecs sh --cluster production-hi hi-web 'rake -T'
|
27
|
+
|
28
|
+
|
29
|
+
## Options
|
30
|
+
|
31
|
+
```
|
32
|
+
[--bastion=BASTION] # Bastion jump host to use. Defaults to no bastion server.
|
33
|
+
[--cluster=CLUSTER] # ECS Cluster to use. Default cluster is default
|
34
|
+
```
|
35
|
+
|
@@ -0,0 +1,25 @@
|
|
1
|
+
---
|
2
|
+
title: sonic ecs
|
3
|
+
reference: true
|
4
|
+
---
|
5
|
+
|
6
|
+
## Usage
|
7
|
+
|
8
|
+
sonic ecs SUBCOMMAND
|
9
|
+
|
10
|
+
## Description
|
11
|
+
|
12
|
+
ecs subcommands
|
13
|
+
|
14
|
+
## Subcommands
|
15
|
+
|
16
|
+
* [sonic ecs exec]({% link _reference/sonic-ecs-exec.md %}) - docker exec into running docker container associated with the service on a container instance
|
17
|
+
* [sonic ecs sh]({% link _reference/sonic-ecs-sh.md %}) - docker run with the service on a container instance
|
18
|
+
|
19
|
+
## Options
|
20
|
+
|
21
|
+
```
|
22
|
+
[--verbose], [--no-verbose]
|
23
|
+
[--noop], [--no-noop]
|
24
|
+
```
|
25
|
+
|
@@ -0,0 +1,85 @@
|
|
1
|
+
---
|
2
|
+
title: sonic execute
|
3
|
+
reference: true
|
4
|
+
---
|
5
|
+
|
6
|
+
## Usage
|
7
|
+
|
8
|
+
sonic execute [FILTER] [COMMAND]
|
9
|
+
|
10
|
+
## Description
|
11
|
+
|
12
|
+
Runs command across fleet of servers via AWS Run Command.
|
13
|
+
|
14
|
+
* A filter must be provided. The filter can be a mix of instance ids and ec2 tags.
|
15
|
+
* The command can be provided inline or as a file. To a file use `file://` at the beginning of your file.
|
16
|
+
|
17
|
+
## Examples Summary
|
18
|
+
|
19
|
+
sonic execute --tags Name=demo-web uptime
|
20
|
+
sonic execute --tags Name=demo-web,demo-worker uptime # multiple values
|
21
|
+
sonic execute --instance-ids i-030033c20c54bf149,i-030033c20c54bf150 uname -a
|
22
|
+
sonic execute --instance-ids i-030033c20c54bf149 file://hello.sh # script from file
|
23
|
+
|
24
|
+
You cannot mix instance ids and tag names in the filter.
|
25
|
+
|
26
|
+
## Example Detailed
|
27
|
+
|
28
|
+
Here's a command example output in detailed:
|
29
|
+
|
30
|
+
$ sonic execute --instance-ids i-0bf51a000ab4e73a8 uptime
|
31
|
+
Sending command to SSM with options:
|
32
|
+
---
|
33
|
+
instance_ids:
|
34
|
+
- i-0bf51a000ab4e73a8
|
35
|
+
document_name: AWS-RunShellScript
|
36
|
+
comment: sonic execute --instance-ids i-0bf51a000ab4e73a8 uptime
|
37
|
+
parameters:
|
38
|
+
commands:
|
39
|
+
- uptime
|
40
|
+
output_s3_region: us-east-1
|
41
|
+
output_s3_bucket_name: [reacted]
|
42
|
+
output_s3_key_prefix: ssm/commands/sonic
|
43
|
+
|
44
|
+
Command sent to AWS SSM. To check the details of the command:
|
45
|
+
aws ssm list-commands --command-id 0bb18d58-6436-49fd-9bfd-0c4b6c51c7a2
|
46
|
+
aws ssm get-command-invocation --command-id 0bb18d58-6436-49fd-9bfd-0c4b6c51c7a2 --instance-id i-0bf51a000ab4e73a8
|
47
|
+
|
48
|
+
Waiting for ssm command to finish.....
|
49
|
+
Command finished.
|
50
|
+
|
51
|
+
Displaying output for i-0bf51a000ab4e73a8.
|
52
|
+
Command status: Success
|
53
|
+
Command standard output:
|
54
|
+
01:08:10 up 8 days, 6:41, 0 users, load average: 0.00, 0.00, 0.00
|
55
|
+
|
56
|
+
To see the more output details visit:
|
57
|
+
https://us-west-2.console.aws.amazon.com/systems-manager/run-command/0bb18d58-6436-49fd-9bfd-0c4b6c51c7a2
|
58
|
+
|
59
|
+
Pro tip: the console url is already in your copy/paste clipboard.
|
60
|
+
$
|
61
|
+
|
62
|
+
Notice the conveniences of `sonic execute`, it:
|
63
|
+
|
64
|
+
1. Showed the parameters that will be sent as part of the send_command call to SSM.
|
65
|
+
2. Sent the command to SSM.
|
66
|
+
3. Waited for the command to finish.
|
67
|
+
4. Displayed the output of the command.
|
68
|
+
5. Provided the console url that visit to view more details about the SSM command.
|
69
|
+
|
70
|
+
The AWS SSM console looks like this:
|
71
|
+
|
72
|
+
<img src="/img/tutorials/ec2-console-run-command.png" class="doc-photo" />
|
73
|
+
|
74
|
+
|
75
|
+
## Options
|
76
|
+
|
77
|
+
```
|
78
|
+
[--zero-warn], [--no-zero-warn] # Warns user when no instances found
|
79
|
+
# Default: true
|
80
|
+
[--instance-ids=INSTANCE_IDS] # Instance ids to execute command on. Format: --instance-ids "i-111,i-222"
|
81
|
+
[--tags=TAGS] # Tags used to determine what instances to execute command on. Format: --tags "Key1=v1,v2;Key2=v3"
|
82
|
+
[--verbose], [--no-verbose]
|
83
|
+
[--noop], [--no-noop]
|
84
|
+
```
|
85
|
+
|