opsworks-cli 0.3.5 → 0.4.0
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/README.md +3 -2
- data/lib/opsworks/cli/agent.rb +2 -4
- data/lib/opsworks/cli/subcommands/{update.rb → chef.rb} +24 -5
- data/lib/opsworks/cli/subcommands/recipes.rb +16 -0
- data/lib/opsworks/cli/version.rb +1 -1
- data/lib/opsworks/layer.rb +10 -0
- data/lib/opsworks/stack.rb +23 -5
- data/spec/opsworks/cli/subcommands/{update_spec.rb → chef_spec.rb} +4 -4
- metadata +5 -6
- data/lib/opsworks/cli/subcommands/upgrade_chef.rb +0 -32
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8db33372954155ca2aa7df0535f12e67decbaa83
|
4
|
+
data.tar.gz: 0a98b7220142d4f68b99c525db8e459af142a7cf
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2f7eabb9792ff89932746e8d3c187bb6074a0e5e4b5e41c7231a8901078693fefecb3f40e4634af17fea9b9f02676df7366b46940f5ec78c34515db1a235b786
|
7
|
+
data.tar.gz: c938ebc4718cee2eb56a16637dad7ffc753b826c7b7bd6961544d58e71e168e18de18721831de789c07232839891f550a5b0c3084a50f953acd8050482a4dbd2
|
data/README.md
CHANGED
@@ -29,6 +29,8 @@ Commands:
|
|
29
29
|
opsworks apps:create APP [--stack STACK] # Create a new OpsWorks app
|
30
30
|
opsworks apps:deploy APP [--stack STACK] # Deploy an OpsWorks app
|
31
31
|
opsworks apps:status APP [--stack STACK] # Display the most recent deployment of an app
|
32
|
+
opsworks chef:configure [--stack STACK] # Configure Chef/Berkshelf
|
33
|
+
opsworks chef:sync [--stack STACK] # Sync OpsWorks custom cookbooks
|
32
34
|
opsworks config:get KEY [--stack STACK] # Get a single config value
|
33
35
|
opsworks config:set KEY VALUE [--stack STACK] # Set a config value
|
34
36
|
opsworks config:unset KEY [--stack STACK] # Unset a config value
|
@@ -36,9 +38,8 @@ Commands:
|
|
36
38
|
opsworks iam:allow USER [--stack STACK] # Allow an IAM user on a stack
|
37
39
|
opsworks iam:lockdown [--stack STACK] # Remove all stack permissions
|
38
40
|
opsworks recipes:add LAYER EVENT RECIPE [--stack STACK] # Add a recipe to a given layer and lifecycle event
|
41
|
+
opsworks recipes:rm LAYER EVENT RECIPE [--stack STACK] # Remove a recipe from a given layer and lifecycle event
|
39
42
|
opsworks recipes:run RECIPE [--stack STACK] # Execute a Chef recipe
|
40
|
-
opsworks update [--stack STACK] # Update OpsWorks custom cookbooks
|
41
|
-
opsworks upgrade-chef [--stack STACK] # Upgrade Chef version
|
42
43
|
opsworks version # Print OpsWorks CLI version
|
43
44
|
```
|
44
45
|
|
data/lib/opsworks/cli/agent.rb
CHANGED
@@ -4,8 +4,7 @@ require 'aws'
|
|
4
4
|
require_relative 'helpers/credentials'
|
5
5
|
require_relative 'helpers/options'
|
6
6
|
|
7
|
-
require_relative 'subcommands/
|
8
|
-
require_relative 'subcommands/upgrade_chef'
|
7
|
+
require_relative 'subcommands/chef'
|
9
8
|
require_relative 'subcommands/recipes'
|
10
9
|
require_relative 'subcommands/apps'
|
11
10
|
require_relative 'subcommands/iam'
|
@@ -19,8 +18,7 @@ module OpsWorks
|
|
19
18
|
include Helpers::Credentials
|
20
19
|
include Helpers::Options
|
21
20
|
|
22
|
-
include Subcommands::
|
23
|
-
include Subcommands::UpgradeChef
|
21
|
+
include Subcommands::Chef
|
24
22
|
include Subcommands::Recipes
|
25
23
|
include Subcommands::Apps
|
26
24
|
include Subcommands::IAM
|
@@ -1,22 +1,41 @@
|
|
1
1
|
require 'aws'
|
2
|
-
require 'opsworks/
|
2
|
+
require 'opsworks/stack'
|
3
3
|
|
4
4
|
module OpsWorks
|
5
5
|
module CLI
|
6
6
|
module Subcommands
|
7
|
-
module
|
7
|
+
module Chef
|
8
8
|
# rubocop:disable MethodLength
|
9
9
|
# rubocop:disable CyclomaticComplexity
|
10
10
|
def self.included(thor)
|
11
11
|
thor.class_eval do
|
12
|
-
desc '
|
12
|
+
desc 'chef:configure [--stack STACK]', 'Configure Chef/Berkshelf'
|
13
|
+
option :stack, type: :array
|
14
|
+
option :version, default: OpsWorks::Stack.latest_chef_version
|
15
|
+
option :manage_berkshelf, type: :boolean, default: false
|
16
|
+
option :berkshelf_version, default: '3.2.0'
|
17
|
+
option :cookbook_git_url
|
18
|
+
option :cookbook_branch
|
19
|
+
option :cookbook_s3_url
|
20
|
+
option :cookbook_username
|
21
|
+
option :cookbook_password
|
22
|
+
define_method 'chef:configure' do
|
23
|
+
fetch_credentials unless env_credentials?
|
24
|
+
stacks = parse_stacks(options.merge(active: true))
|
25
|
+
stacks.each do |stack|
|
26
|
+
say "Configuring Chef #{options[:version]} on #{stack.name}..."
|
27
|
+
stack.update_chef(options)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
desc 'chef:sync [--stack STACK]', 'Sync OpsWorks custom cookbooks'
|
13
32
|
option :stack, type: :array
|
14
33
|
option :timeout, type: :numeric, default: 300
|
15
|
-
|
34
|
+
define_method 'chef:sync' do
|
16
35
|
fetch_credentials unless env_credentials?
|
17
36
|
stacks = parse_stacks(options.merge(active: true))
|
18
37
|
deployments = stacks.map do |stack|
|
19
|
-
say "
|
38
|
+
say "Syncing #{stack.name}..."
|
20
39
|
stack.update_custom_cookbooks
|
21
40
|
end
|
22
41
|
OpsWorks::Deployment.wait(deployments, options[:timeout])
|
@@ -43,6 +43,22 @@ module OpsWorks
|
|
43
43
|
layer.add_custom_recipe(event, recipe)
|
44
44
|
end
|
45
45
|
end
|
46
|
+
|
47
|
+
desc 'recipes:rm LAYER EVENT RECIPE [--stack STACK]',
|
48
|
+
'Remove a recipe from a given layer and lifecycle event'
|
49
|
+
option :stack, type: :array
|
50
|
+
define_method 'recipes:rm' do |layername, event, recipe|
|
51
|
+
fetch_credentials unless env_credentials?
|
52
|
+
stacks = parse_stacks(options)
|
53
|
+
stacks.each do |stack|
|
54
|
+
layer = stack.layers.find { |l| l.shortname == layername }
|
55
|
+
next unless layer
|
56
|
+
next unless layer.custom_recipes[event].include?(recipe)
|
57
|
+
|
58
|
+
say "Removing recipe from #{stack.name}."
|
59
|
+
layer.remove_custom_recipe(event, recipe)
|
60
|
+
end
|
61
|
+
end
|
46
62
|
end
|
47
63
|
end
|
48
64
|
# rubocop:enable CyclomaticComplexity
|
data/lib/opsworks/cli/version.rb
CHANGED
data/lib/opsworks/layer.rb
CHANGED
@@ -32,5 +32,15 @@ module OpsWorks
|
|
32
32
|
custom_recipes: custom_recipes
|
33
33
|
)
|
34
34
|
end
|
35
|
+
|
36
|
+
def remove_custom_recipe(event, recipe)
|
37
|
+
return unless custom_recipes[event].include?(recipe)
|
38
|
+
|
39
|
+
custom_recipes[event].delete recipe
|
40
|
+
self.class.client.update_layer(
|
41
|
+
layer_id: id,
|
42
|
+
custom_recipes: custom_recipes
|
43
|
+
)
|
44
|
+
end
|
35
45
|
end
|
36
46
|
end
|
data/lib/opsworks/stack.rb
CHANGED
@@ -60,12 +60,30 @@ module OpsWorks
|
|
60
60
|
@layers ||= initialize_layers
|
61
61
|
end
|
62
62
|
|
63
|
-
def
|
64
|
-
|
63
|
+
def update_chef(options)
|
64
|
+
params = {
|
65
65
|
stack_id: id,
|
66
|
-
configuration_manager: { name: 'Chef', version: version },
|
67
|
-
chef_configuration: {
|
68
|
-
|
66
|
+
configuration_manager: { name: 'Chef', version: options[:version] },
|
67
|
+
chef_configuration: {
|
68
|
+
manage_berkshelf: options[:manage_berkshelf],
|
69
|
+
berkshelf_version: options[:berkshelf_version]
|
70
|
+
}
|
71
|
+
}
|
72
|
+
if options[:cookbook_git_url]
|
73
|
+
params[:custom_cookbooks_source] = {
|
74
|
+
type: 'git',
|
75
|
+
url: options[:cookbook_git_url],
|
76
|
+
revision: options[:cookbook_branch] || 'master'
|
77
|
+
}
|
78
|
+
elsif options[:cookbook_s3_url]
|
79
|
+
params[:custom_cookbooks_source] = {
|
80
|
+
type: 's3',
|
81
|
+
url: options[:cookbook_s3_url],
|
82
|
+
username: options[:cookbook_username],
|
83
|
+
password: options[:cookbook_password]
|
84
|
+
}
|
85
|
+
end
|
86
|
+
self.class.client.update_stack(params)
|
69
87
|
end
|
70
88
|
|
71
89
|
def update_custom_cookbooks
|
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe OpsWorks::CLI::Agent do
|
4
|
-
describe '
|
4
|
+
describe 'chef:sync' do
|
5
5
|
let(:stacks) { 2.times.map { Fabricate(:stack) } }
|
6
6
|
let(:deployment) { Fabricate(:deployment, status: 'successful') }
|
7
7
|
|
@@ -13,7 +13,7 @@ describe OpsWorks::CLI::Agent do
|
|
13
13
|
it 'should update custom cookbooks on all stacks' do
|
14
14
|
expect(stacks[0]).to receive(:update_custom_cookbooks) { deployment }
|
15
15
|
expect(stacks[1]).to receive(:update_custom_cookbooks) { deployment }
|
16
|
-
subject.
|
16
|
+
subject.send('chef:sync')
|
17
17
|
end
|
18
18
|
|
19
19
|
it 'should optionally run on a subset of stacks' do
|
@@ -21,7 +21,7 @@ describe OpsWorks::CLI::Agent do
|
|
21
21
|
expect(stacks[1]).not_to receive(:update_custom_cookbooks)
|
22
22
|
|
23
23
|
allow(subject).to receive(:options) { { stack: [stacks[0].name] } }
|
24
|
-
subject.
|
24
|
+
subject.send('chef:sync')
|
25
25
|
end
|
26
26
|
|
27
27
|
it 'should fail if any update fails' do
|
@@ -29,7 +29,7 @@ describe OpsWorks::CLI::Agent do
|
|
29
29
|
expect(stacks[0]).to receive(:update_custom_cookbooks) { failure }
|
30
30
|
|
31
31
|
allow(subject).to receive(:options) { { stack: [stacks[0].name] } }
|
32
|
-
expect { subject.
|
32
|
+
expect { subject.send('chef:sync') }.to raise_error
|
33
33
|
end
|
34
34
|
end
|
35
35
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: opsworks-cli
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Frank Macreery
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-04-
|
11
|
+
date: 2015-04-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|
@@ -186,11 +186,10 @@ files:
|
|
186
186
|
- lib/opsworks/cli/helpers/credentials.rb
|
187
187
|
- lib/opsworks/cli/helpers/options.rb
|
188
188
|
- lib/opsworks/cli/subcommands/apps.rb
|
189
|
+
- lib/opsworks/cli/subcommands/chef.rb
|
189
190
|
- lib/opsworks/cli/subcommands/config.rb
|
190
191
|
- lib/opsworks/cli/subcommands/iam.rb
|
191
192
|
- lib/opsworks/cli/subcommands/recipes.rb
|
192
|
-
- lib/opsworks/cli/subcommands/update.rb
|
193
|
-
- lib/opsworks/cli/subcommands/upgrade_chef.rb
|
194
193
|
- lib/opsworks/cli/version.rb
|
195
194
|
- lib/opsworks/deployment.rb
|
196
195
|
- lib/opsworks/instance.rb
|
@@ -205,10 +204,10 @@ files:
|
|
205
204
|
- spec/fabricators/opsworks/stack_fabricator.rb
|
206
205
|
- spec/opsworks/cli/agent_spec.rb
|
207
206
|
- spec/opsworks/cli/subcommands/apps_spec.rb
|
207
|
+
- spec/opsworks/cli/subcommands/chef_spec.rb
|
208
208
|
- spec/opsworks/cli/subcommands/config_spec.rb
|
209
209
|
- spec/opsworks/cli/subcommands/iam_spec.rb
|
210
210
|
- spec/opsworks/cli/subcommands/recipes_spec.rb
|
211
|
-
- spec/opsworks/cli/subcommands/update_spec.rb
|
212
211
|
- spec/spec_helper.rb
|
213
212
|
homepage: https://github.com/aptible/opsworks-cli
|
214
213
|
licenses:
|
@@ -241,8 +240,8 @@ test_files:
|
|
241
240
|
- spec/fabricators/opsworks/stack_fabricator.rb
|
242
241
|
- spec/opsworks/cli/agent_spec.rb
|
243
242
|
- spec/opsworks/cli/subcommands/apps_spec.rb
|
243
|
+
- spec/opsworks/cli/subcommands/chef_spec.rb
|
244
244
|
- spec/opsworks/cli/subcommands/config_spec.rb
|
245
245
|
- spec/opsworks/cli/subcommands/iam_spec.rb
|
246
246
|
- spec/opsworks/cli/subcommands/recipes_spec.rb
|
247
|
-
- spec/opsworks/cli/subcommands/update_spec.rb
|
248
247
|
- spec/spec_helper.rb
|
@@ -1,32 +0,0 @@
|
|
1
|
-
require 'aws'
|
2
|
-
require 'opsworks/stack'
|
3
|
-
|
4
|
-
module OpsWorks
|
5
|
-
module CLI
|
6
|
-
module Subcommands
|
7
|
-
module UpgradeChef
|
8
|
-
# rubocop:disable MethodLength
|
9
|
-
# rubocop:disable CyclomaticComplexity
|
10
|
-
def self.included(thor)
|
11
|
-
thor.class_eval do
|
12
|
-
desc 'upgrade-chef [--stack STACK]', 'Upgrade Chef version'
|
13
|
-
option :stack, type: :array
|
14
|
-
option :version
|
15
|
-
option :manage_berkshelf, type: :boolean, default: false
|
16
|
-
def upgrade_chef
|
17
|
-
fetch_credentials unless env_credentials?
|
18
|
-
stacks = parse_stacks(options.merge(active: true))
|
19
|
-
version = OpsWorks::Stack.latest_chef_version
|
20
|
-
stacks.each do |stack|
|
21
|
-
say "Upgrading #{stack.name} to #{version}..."
|
22
|
-
stack.upgrade_chef(version, options)
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
27
|
-
# rubocop:enable CyclomaticComplexity
|
28
|
-
# rubocop:enable MethodLength
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|