convox_installer 1.0.3 → 1.0.4
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/.bundle/config +1 -1
- data/README.md +18 -25
- data/lib/convox_installer/config.rb +2 -2
- data/lib/convox_installer/version.rb +1 -1
- data/spec/lib/convox_installer/config_spec.rb +8 -4
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c61afa4dfbb14346d5dc9c07eb23eca17eb1e612c8fe659c74d78fc154810479
|
4
|
+
data.tar.gz: b85f7bf5513cad08955f4a7ebc8c66f35ef0995d1d481bb2779af069a2980d0b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f4878d00fbe6b6111a8c316f6eb6c691f11ee5b5846628b46e1dde39eea2f2b6c510951f924e1ca51002808cdaba9662af70cd2be618627d25af94e1cb8a1a67
|
7
|
+
data.tar.gz: 9340387ce40c3ee1d41823ccc5c959638172944161c3f6ea3c74f8048d5d53706770bffcdf08f3fc464dac5543abd8f4c3f79584555da2be2f4d684fe5f083a3
|
data/.bundle/config
CHANGED
@@ -1,2 +1,2 @@
|
|
1
1
|
---
|
2
|
-
BUNDLE_JOBS: "
|
2
|
+
BUNDLE_JOBS: "16"
|
data/README.md
CHANGED
@@ -8,13 +8,13 @@ Please note that the code quality is not very good, and the test coverage needs
|
|
8
8
|
|
9
9
|
## Features
|
10
10
|
|
11
|
-
|
11
|
+
- Idempotent. If this script crashes, you can restart it and it will pick up
|
12
12
|
where it left off. Every step looks up the existing state, and only makes a change
|
13
13
|
if things are not yet set up (or out of sync).
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
14
|
+
- Ensures that the `convox` and `aws` CLI tools are installed
|
15
|
+
- Wraps the `convox` CLI and parses JSON output from API calls
|
16
|
+
- Add n Docker Repository (e.g. ECR registry)
|
17
|
+
- Set up an S3 bucket with an optional CORS policy
|
18
18
|
|
19
19
|
## Introduction
|
20
20
|
|
@@ -47,11 +47,10 @@ You should create a new git repo for your own installation script, and then use
|
|
47
47
|
|
48
48
|
You can see a complete example in [`examples/full_installation.rb`](./examples/full_installation.rb).
|
49
49
|
|
50
|
-
|
51
50
|
## Config
|
52
51
|
|
53
52
|
Config is loaded from ENV vars, or from saved JSON data at
|
54
|
-
|
53
|
+
`./.installer_config`. The script will save all of the user's responses into `./.installer_config` (in the current directory).
|
55
54
|
|
56
55
|
## Customize the Config Prompts
|
57
56
|
|
@@ -97,7 +96,7 @@ Shows a heading and optional details.
|
|
97
96
|
|
98
97
|
#### Config Prompt
|
99
98
|
|
100
|
-
|
99
|
+
- A config prompt with a default value:
|
101
100
|
|
102
101
|
```ruby
|
103
102
|
{
|
@@ -108,7 +107,7 @@ Shows a heading and optional details.
|
|
108
107
|
}
|
109
108
|
```
|
110
109
|
|
111
|
-
|
110
|
+
- Set a value from a `Proc`, and don't prompt the user:
|
112
111
|
|
113
112
|
```ruby
|
114
113
|
{
|
@@ -118,7 +117,7 @@ Shows a heading and optional details.
|
|
118
117
|
}
|
119
118
|
```
|
120
119
|
|
121
|
-
|
120
|
+
- Set a value, and hide this setting from the user (even in the summary):
|
122
121
|
|
123
122
|
```ruby
|
124
123
|
{
|
@@ -128,7 +127,6 @@ Shows a heading and optional details.
|
|
128
127
|
},
|
129
128
|
```
|
130
129
|
|
131
|
-
|
132
130
|
## `ConvoxInstaller` DSL
|
133
131
|
|
134
132
|
#### `ensure_requirements!`
|
@@ -137,7 +135,7 @@ Makes sure that the `convox` and `aws` CLI tools are installed on this system. I
|
|
137
135
|
|
138
136
|
#### `prompt_for_config`
|
139
137
|
|
140
|
-
Loads config from ENV vars, or from saved config at
|
138
|
+
Loads config from ENV vars, or from saved config at `./.installer_config`.
|
141
139
|
If any config settings are missing, it prompts the user for input. Finally, it shows a summary of the config, and asks the user if they want to proceed with the installation. If the user enters `y` (or `yes`), the `prompt_for_config` method completes. If they enter `n` (or `no`), we loop over every setting and let them press "enter" to keep the current value, or provide a new value to correct any mistakes.
|
142
140
|
|
143
141
|
#### `backup_convox_host_and_rack`
|
@@ -146,7 +144,7 @@ If there are any existing files at `~/.convox/host` or `~/.convox/rack`, this me
|
|
146
144
|
|
147
145
|
#### `install_convox`
|
148
146
|
|
149
|
-
|
147
|
+
- **Required Config:** `aws_region`, `aws_access_key_id`, `aws_secret_access_key`,
|
150
148
|
`stack_name`, `instance_type`
|
151
149
|
|
152
150
|
Runs `convox rack install ...`. Has some validations to ensure that all required settings are present.
|
@@ -165,19 +163,17 @@ Returns a Ruby hash with all convox rack data.
|
|
165
163
|
|
166
164
|
#### `create_convox_app!`
|
167
165
|
|
168
|
-
|
166
|
+
- **Required Config:** `convox_app_name`
|
169
167
|
|
170
168
|
Checks if the app already exists. If not, calls `convox apps create ... --wait` to create a new app. Then waits for the app to be ready. (Avoids an occasional race condition.)
|
171
169
|
|
172
|
-
|
173
170
|
#### `set_default_app_for_directory!`
|
174
171
|
|
175
172
|
Writes the app name into `./.convox/app` (in the current directory.) The `convox` CLI reads this file, so you don't need to specify the `--app` flag for future commands.
|
176
173
|
|
177
|
-
|
178
174
|
#### `create_s3_bucket!`
|
179
175
|
|
180
|
-
|
176
|
+
- **Required Config:** `s3_bucket_name`
|
181
177
|
|
182
178
|
Creates an S3 bucket from the `:s3_bucket_name` config setting. This is not a default setting, so you can add something like this to your custom `@prompts`:
|
183
179
|
|
@@ -195,11 +191,11 @@ The `:value` `Proc` will generate a bucket name with a random suffix. (Avoids co
|
|
195
191
|
|
196
192
|
#### `set_s3_bucket_cors_policy`
|
197
193
|
|
198
|
-
|
194
|
+
- **Required Config:** `s3_bucket_name`
|
199
195
|
|
200
196
|
Set up a CORS policy for your S3 bucket. (`:s3_bucket_name`)
|
201
197
|
|
202
|
-
|
198
|
+
_Note: If the `:s3_bucket_cors_policy` setting is not provided, then this method does nothing._
|
203
199
|
|
204
200
|
You should set `:s3_bucket_cors_policy` to a JSON string. Here's how I set this up in my own `install.rb` script:
|
205
201
|
|
@@ -226,10 +222,9 @@ JSON
|
|
226
222
|
]
|
227
223
|
```
|
228
224
|
|
229
|
-
|
230
225
|
#### `s3_bucket_details`
|
231
226
|
|
232
|
-
|
227
|
+
- **Required Config:** `s3_bucket_name`
|
233
228
|
|
234
229
|
Get the S3 bucket details for `s3_bucket_name`. Parses the URL and returns a hash:
|
235
230
|
|
@@ -243,16 +238,15 @@ Get the S3 bucket details for `s3_bucket_name`. Parses the URL and returns a has
|
|
243
238
|
|
244
239
|
I use these S3 bucket details to set env variables for my app. (`convox env set ...`)
|
245
240
|
|
246
|
-
|
247
241
|
#### `add_docker_registry!`
|
248
242
|
|
249
|
-
|
243
|
+
- **Required Config:** `docker_registry_url`, `docker_registry_username`, `docker_registry_password`
|
250
244
|
|
251
245
|
Checks the list of registries to see if `docker_registry_url` has already been added. If not, runs `convox registries add ...` to add a new Docker registry (e.g. Docker Hub, ECR).
|
252
246
|
|
253
247
|
#### `default_service_domain_name`
|
254
248
|
|
255
|
-
|
249
|
+
- **Required Config:** `convox_app_name`, `default_service`
|
256
250
|
|
257
251
|
Parses the rack router ELB name and region, and returns the default `convox.site` domain for your default service. (You can visit this URL in the browser to access your app.)
|
258
252
|
|
@@ -284,7 +278,6 @@ If you want to run `convox env set MYVAR=value`, then you would call:
|
|
284
278
|
run_convox_command! 'env set MYVAR=value'
|
285
279
|
```
|
286
280
|
|
287
|
-
|
288
281
|
## License
|
289
282
|
|
290
283
|
[MIT](./LICENSE)
|
@@ -7,10 +7,10 @@ require "securerandom"
|
|
7
7
|
|
8
8
|
module ConvoxInstaller
|
9
9
|
class Config
|
10
|
+
CONFIG_FILE = File.expand_path("./.installer_config").freeze
|
11
|
+
|
10
12
|
attr_accessor :logger, :config, :prompts, :highline
|
11
13
|
|
12
|
-
CONFIG_FILE = File.expand_path("~/.convox/installer_config").freeze
|
13
|
-
|
14
14
|
DEFAULT_PROMPTS = [
|
15
15
|
{
|
16
16
|
key: :stack_name,
|
@@ -4,12 +4,16 @@ require "convox_installer"
|
|
4
4
|
require "securerandom"
|
5
5
|
|
6
6
|
RSpec.describe ConvoxInstaller::Config do
|
7
|
+
before(:each) do
|
8
|
+
stub_const('ConvoxInstaller::Config::CONFIG_FILE', '/path/to/.installer_config')
|
9
|
+
end
|
10
|
+
|
7
11
|
after(:each) do
|
8
12
|
ENV.delete "AWS_REGION"
|
9
13
|
ENV.delete "AWS_ACCESS_KEY_ID"
|
10
14
|
end
|
11
15
|
|
12
|
-
it "loads the saved config from
|
16
|
+
it "loads the saved config from ./.installer_config" do
|
13
17
|
expect(described_class).to receive(:config_file_exists?).and_return(true)
|
14
18
|
expect(described_class).to receive(:read_config_file).and_return(
|
15
19
|
'{ "config": { "aws_region": "us-west-2", "aws_access_key_id": "1234" } }'
|
@@ -88,7 +92,7 @@ Please enter your AWS Access Key ID: Please enter your AWS Secret Access Key:
|
|
88
92
|
AWS Access Key ID: asdf
|
89
93
|
AWS Secret Access Key: xkcd
|
90
94
|
|
91
|
-
We've saved your configuration to: /
|
95
|
+
We've saved your configuration to: /path/to/.installer_config
|
92
96
|
If anything goes wrong during the installation, you can restart the script to reload the config and continue.
|
93
97
|
|
94
98
|
Please double check all of these configuration details.
|
@@ -110,7 +114,7 @@ Please enter your AWS Access Key ID: |asdf| Please enter your AWS Secret Access
|
|
110
114
|
AWS Access Key ID: sdfg
|
111
115
|
AWS Secret Access Key: xkcd
|
112
116
|
|
113
|
-
We've saved your configuration to: /
|
117
|
+
We've saved your configuration to: /path/to/.installer_config
|
114
118
|
If anything goes wrong during the installation, you can restart the script to reload the config and continue.
|
115
119
|
|
116
120
|
Please double check all of these configuration details.
|
@@ -218,7 +222,7 @@ Please enter your Docker Registry Access Key ID: Please enter your Docker Regist
|
|
218
222
|
Admin Email: admin@test.com
|
219
223
|
Admin Password: 99a6f67de0c7a117
|
220
224
|
|
221
|
-
We've saved your configuration to: /
|
225
|
+
We've saved your configuration to: /path/to/.installer_config
|
222
226
|
If anything goes wrong during the installation, you can restart the script to reload the config and continue.
|
223
227
|
|
224
228
|
Please double check all of these configuration details.
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: convox_installer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Form Applications Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-02-
|
11
|
+
date: 2021-02-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: highline
|