sonic-screwdriver 1.4.0 → 2.2.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
+
|