dtk-node-agent 0.7.4.1 → 0.7.5
Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 67738c6472f467c7ab9ba074af7bb4a0235f9992
|
4
|
+
data.tar.gz: 24cfbf7e9347326c224b2de278aad9fb5d6dfe99
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 88bebb7d0b909a80a3d65c6356693a4fd5515edcb258d34659a9bebb0de7c1182c8fb96918a337323284c6e5861ddb755bf012af773bd33d7222db273c836df9
|
7
|
+
data.tar.gz: d449a271411f1d14654c691484e13041a811f5ffdc23564a2178f2ba71dca3173d88da6e65a3e7f61bd84e589ca30c6e0ffa9f359ed6f431f1ec821902354004
|
data/README.md
CHANGED
@@ -12,29 +12,6 @@ Code that is present in AMIs that server basis for nodes being spun up
|
|
12
12
|
#### Intalling the node agent on a running machine (with puppet omnibus)
|
13
13
|
`sudo ./install_agent.sh [--sanitize]`
|
14
14
|
|
15
|
-
#### Create a new AMI image with the node agent
|
16
|
-
```
|
17
|
-
./create_agent_ami.rb --help
|
18
|
-
Options:
|
19
|
-
--region, -r <s>: AWS Region on which to create the AMI image
|
20
|
-
--aws-key, -a <s>: AWS Access Key
|
21
|
-
--aws-secret, -w <s>: AWS Secret Access Key
|
22
|
-
--security-group, -s <s>: AWS Security group (default: default)
|
23
|
-
--key-pair, -k <s>: AWS keypair for the new instance
|
24
|
-
--key-path, -e <s>: Path to the PEM file for ssh access
|
25
|
-
--ssh-username, -u <s>: SSH Username
|
26
|
-
--ssh-timeout, -t <i>: Time to wait before instance is ssh ready (seconds) (default: 100)
|
27
|
-
--ami-id, -m <s>: AMI id which to spin up
|
28
|
-
--image-name, -i <s>: Name of the new image
|
29
|
-
--help, -h: Show this message
|
30
|
-
```
|
31
|
-
|
32
|
-
example:
|
33
|
-
```
|
34
|
-
ruby create_agent_ami.rb --region us-east-1 --ami-id ami-da0000aa --key-pair test_key --key-path /somepath/test_key.pem \
|
35
|
-
--ssh-username root --image-name dtk-agent-ubuntu-precise
|
36
|
-
```
|
37
|
-
|
38
15
|
#### Build all supported AMI images with [packer](http://www.packer.io/)
|
39
16
|
```
|
40
17
|
export AWS_ACCESS_KEY="your aws access key"
|
@@ -1,11 +1,14 @@
|
|
1
1
|
require 'base64'
|
2
|
+
require 'tmpdir'
|
3
|
+
require 'fileutils'
|
2
4
|
|
3
5
|
module MCollective
|
4
6
|
module Agent
|
5
7
|
class Dev_manager < RPC::Agent
|
6
8
|
|
7
9
|
AGENT_MCOLLECTIVE_LOCATION = "#{::MCollective::Config.instance.libdir.join}/mcollective/agent/"
|
8
|
-
|
10
|
+
DTK_AA_TEMP_DIR = File.join(Dir.tmpdir(), 'dtk-action-agent')
|
11
|
+
|
9
12
|
action "inject_agent" do
|
10
13
|
begin
|
11
14
|
|
@@ -14,7 +17,7 @@ module MCollective
|
|
14
17
|
# make sure default `service` command paths are set
|
15
18
|
ENV['PATH'] += ":/usr/sbin:/sbin"
|
16
19
|
|
17
|
-
request[:agent_files].each do |k,v|
|
20
|
+
(request[:agent_files]||[]).each do |k,v|
|
18
21
|
if v == :deleted
|
19
22
|
File.delete("#{AGENT_MCOLLECTIVE_LOCATION}#{k}")
|
20
23
|
next
|
@@ -24,8 +27,37 @@ module MCollective
|
|
24
27
|
file << content
|
25
28
|
end
|
26
29
|
end
|
30
|
+
|
27
31
|
ret.set_status_succeeded!()
|
28
32
|
|
33
|
+
dtk_aa_url = request[:action_agent_remote_url]
|
34
|
+
dtk_aa_branch = request[:action_agent_branch]
|
35
|
+
|
36
|
+
# DTK Action Agent Sync
|
37
|
+
if dtk_aa_url && dtk_aa_branch
|
38
|
+
begin
|
39
|
+
Log.instance.info("Started DTK Action Agent sync, temp dir '#{DTK_AA_TEMP_DIR}'")
|
40
|
+
output = `git clone #{dtk_aa_url} -b #{dtk_aa_branch} #{DTK_AA_TEMP_DIR}`
|
41
|
+
result = $?
|
42
|
+
|
43
|
+
if result.success?
|
44
|
+
Log.instance.info("Cloned latest code from branch '#{dtk_aa_branch}' for DTK Action Agent.")
|
45
|
+
|
46
|
+
output = `cd #{DTK_AA_TEMP_DIR} && /opt/puppet-omnibus/embedded/bin/gem build #{DTK_AA_TEMP_DIR}/dtk-action-agent.gemspec && /opt/puppet-omnibus/embedded/bin/gem install #{DTK_AA_TEMP_DIR}/dtk-action-agent-*.gem --no-ri --no-rdoc`
|
47
|
+
result = $?
|
48
|
+
if result.success?
|
49
|
+
Log.instance.info("DTK Action Agent has been successfully update from branch '#{dtk_aa_branch}'")
|
50
|
+
else
|
51
|
+
Log.instance.error("DTK Action Agent could not be updated, reason: #{output}")
|
52
|
+
end
|
53
|
+
else
|
54
|
+
Log.instance.error("Not able to clone latest code from '#{dtk_aa_url} branch #{dtk_aa_branch}', aborting DTK Action Agent Sync. #{output}")
|
55
|
+
end
|
56
|
+
ensure
|
57
|
+
FileUtils.rm_rf DTK_AA_TEMP_DIR
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
29
61
|
t1 = Thread.new do
|
30
62
|
sleep(2)
|
31
63
|
Log.instance.info "Initiating mcollective restart..."
|
@@ -45,6 +77,7 @@ module MCollective
|
|
45
77
|
error_info = { :error => { :message => "Error syncing agents: #{e}" } }
|
46
78
|
ret.merge!(error_info)
|
47
79
|
end
|
80
|
+
|
48
81
|
return ret
|
49
82
|
end
|
50
83
|
end
|
@@ -15,6 +15,9 @@ DTKPuppetModulePath = "/usr/share/dtk/puppet-modules"
|
|
15
15
|
module MCollective
|
16
16
|
module Agent
|
17
17
|
class Puppet_apply < RPC::Agent
|
18
|
+
|
19
|
+
NUMBER_OF_RETRIES = 5
|
20
|
+
|
18
21
|
def initialize()
|
19
22
|
super()
|
20
23
|
@log = Log.instance
|
@@ -85,12 +88,18 @@ module MCollective
|
|
85
88
|
|
86
89
|
if clean_and_clone
|
87
90
|
begin
|
91
|
+
tries ||= NUMBER_OF_RETRIES
|
88
92
|
clean_and_clone_module(puppet_repo_dir, remote_repo,vc[:branch], opts)
|
89
93
|
rescue Exception => e
|
90
|
-
# TODO: not used now
|
91
|
-
error_backtrace = backtrace_subset(e)
|
92
94
|
# to achieve idempotent behavior; fully remove directory if any problems
|
93
95
|
FileUtils.rm_rf puppet_repo_dir
|
96
|
+
unless (tries -= 1).zero?
|
97
|
+
@log.info("Re-trying last command becuase of error: #{e.message}, retries left: #{tries}")
|
98
|
+
sleep(1)
|
99
|
+
retry
|
100
|
+
end
|
101
|
+
# TODO: not used now
|
102
|
+
error_backtrace = backtrace_subset(e)
|
94
103
|
raise e
|
95
104
|
end
|
96
105
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dtk-node-agent
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.7.
|
4
|
+
version: 0.7.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Rich PELAVIN
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-09-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: puppet
|
@@ -270,7 +270,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
270
270
|
version: '0'
|
271
271
|
requirements: []
|
272
272
|
rubyforge_project:
|
273
|
-
rubygems_version: 2.4.
|
273
|
+
rubygems_version: 2.4.1
|
274
274
|
signing_key:
|
275
275
|
specification_version: 4
|
276
276
|
summary: DTK Node Agent gem.
|