lita-puppet 0.3.1 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +23 -1
- data/lib/lita/handlers/puppet.rb +71 -33
- data/lita-puppet.gemspec +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3c1150a88c8b08a9520d3a28a724d5a12c58ee9f
|
4
|
+
data.tar.gz: 5c25d159b9492928484993df6a3736a79cbfb344
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 19e33adbed14606f8a02f54cb69f21c5c15dfde377145e1779c1b5c8099f327d2b3ecb3d5f278407c9bcb0b69fe1ec3f36eec6eceadada268e5fc9178cd91777
|
7
|
+
data.tar.gz: 362c3195f6d0ae7fb4441eb0d4edf9dff91ad17a04496b85131bd2a3fd7569014e923227474e7f209bf1fae1fd5ca4fff0ee226965c9557f065d79133f9a7c96
|
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# lita-puppet
|
2
2
|
|
3
|
-
|
3
|
+
A [Lita](https://www.lita.io/) handler plugin for some basic [Puppet](https://puppet.com/) operations.
|
4
4
|
|
5
5
|
## Installation
|
6
6
|
|
@@ -26,3 +26,25 @@ This is also available as:
|
|
26
26
|
puppet deploy [environment]
|
27
27
|
pp deploy [environment]
|
28
28
|
pp r10k [environment]
|
29
|
+
|
30
|
+
#### Trigger a manual run of the Puppet agent on a host
|
31
|
+
puppet agent run on <host>
|
32
|
+
|
33
|
+
This is also available as:
|
34
|
+
|
35
|
+
puppet run on <host>
|
36
|
+
puppet run <host>
|
37
|
+
pp agent run on <host>
|
38
|
+
pp run on <host>
|
39
|
+
pp on <host>
|
40
|
+
|
41
|
+
Though we don't recomend that last one...
|
42
|
+
|
43
|
+
#### Remove an SSL cert from the Puppet Master
|
44
|
+
puppet cert clean <host>
|
45
|
+
|
46
|
+
This is also available as:
|
47
|
+
|
48
|
+
pp cert clean <host>
|
49
|
+
|
50
|
+
**Note** though that this doesn't do anything on the client side. If you want puppet to work on the `<host>` machine you'll need to generate a new cert. Usually you run this if you're planning to do that anyway though.
|
data/lib/lita/handlers/puppet.rb
CHANGED
@@ -7,67 +7,61 @@ module Lita
|
|
7
7
|
config :control_repo_path, required: false, type: String
|
8
8
|
|
9
9
|
route(
|
10
|
-
/(puppet|pp)\s+(
|
11
|
-
:
|
10
|
+
/(puppet|pp)(\s+agent)?\s+(run)(\s+on)?\s+(\S+)/i,
|
11
|
+
:puppet_agent_run,
|
12
12
|
command: true,
|
13
13
|
help: {
|
14
|
-
"puppet
|
14
|
+
"puppet agent run on <host>" => "Run the puppet agent on <host>."
|
15
15
|
}
|
16
16
|
)
|
17
17
|
|
18
18
|
route(
|
19
|
-
/(puppet|pp)
|
20
|
-
:
|
19
|
+
/(puppet|pp)\s+(cert)\s+(clean)\s+(\S+)/i,
|
20
|
+
:cert_clean,
|
21
21
|
command: true,
|
22
22
|
help: {
|
23
|
-
"puppet
|
23
|
+
"puppet cert clean <host>" => "Remove all traces of the SSL cert for <host> on the Puppet Master."
|
24
|
+
}
|
25
|
+
)
|
26
|
+
|
27
|
+
route(
|
28
|
+
/(puppet|pp)\s+(r10k|deploy)(\s+(\S+))?/i,
|
29
|
+
:r10k_deploy,
|
30
|
+
command: true,
|
31
|
+
help: {
|
32
|
+
"puppet r10k [env]" => "Deploy the latest puppet code on the puppet master via r10k, optionally specifying an environment."
|
24
33
|
}
|
25
34
|
)
|
26
35
|
|
27
36
|
include ::Utils::SSH
|
28
37
|
include ::Utils::Text
|
29
38
|
|
30
|
-
def
|
31
|
-
|
32
|
-
control_repo = config.control_repo_path || '/opt/puppet/control'
|
39
|
+
def cert_clean(response)
|
40
|
+
cert = response.matches[0][3]
|
33
41
|
user = config.ssh_user || 'lita'
|
34
42
|
username = friendly_name(response.user.name)
|
35
43
|
|
36
|
-
response.reply("#{username},
|
37
|
-
|
38
|
-
result1 = over_ssh(host: config.master_hostname, user: user, timeout: 120) do |server|
|
39
|
-
# Need to use sudo
|
40
|
-
server.enable_sudo
|
41
|
-
server[control_repo].git :pull
|
42
|
-
end
|
43
|
-
|
44
|
-
if result1[:exception]
|
45
|
-
response.reply "#{username}, your r10k run didn't seem to work. Looks like there was a problem with Git:"
|
46
|
-
response.reply "/code " + result1[:exception].message
|
47
|
-
raise result1[:exception]
|
48
|
-
end
|
44
|
+
response.reply("#{username}, working on that `puppet cert clean`. I'll get right back to you.")
|
49
45
|
|
50
|
-
|
46
|
+
result = over_ssh(host: config.master_hostname, user: user, timeout: 120) do |server|
|
47
|
+
server.cd '/tmp'
|
51
48
|
# Need to use sudo
|
52
49
|
server.enable_sudo
|
53
50
|
# scary...
|
54
51
|
server.disable_safe_mode
|
55
52
|
|
56
|
-
|
57
|
-
command << " #{environment}" if environment
|
58
|
-
command << ' -pv'
|
59
|
-
server.execute command
|
53
|
+
server.execute "puppet cert clean #{cert}"
|
60
54
|
end
|
61
55
|
|
62
|
-
if
|
63
|
-
response.reply "#{username}, your
|
64
|
-
response.reply "/code " +
|
65
|
-
raise
|
56
|
+
if result[:exception]
|
57
|
+
response.reply "#{username}, your `puppet cert clean` didn't seem to work... ;-("
|
58
|
+
response.reply "/code " + result[:exception].message
|
59
|
+
raise result[:exception]
|
66
60
|
end
|
67
61
|
|
68
62
|
# build a reply
|
69
|
-
response.reply("#{username}, your
|
70
|
-
reply_content = [
|
63
|
+
response.reply("#{username}, your `puppet cert clean` is all done!")
|
64
|
+
reply_content = [result[:stdout].join("\n"), result[:stderr].join("\n")].join("\n")
|
71
65
|
response.reply "/code " + sanitze_for_chat(reply_content)
|
72
66
|
end
|
73
67
|
|
@@ -107,6 +101,50 @@ module Lita
|
|
107
101
|
end
|
108
102
|
end
|
109
103
|
|
104
|
+
def r10k_deploy(response)
|
105
|
+
environment = response.matches[0][3]
|
106
|
+
control_repo = config.control_repo_path || '/opt/puppet/control'
|
107
|
+
user = config.ssh_user || 'lita'
|
108
|
+
username = friendly_name(response.user.name)
|
109
|
+
|
110
|
+
response.reply("#{username}, I'll get right on that. Give me a moment and I'll let you know how it went.")
|
111
|
+
|
112
|
+
result1 = over_ssh(host: config.master_hostname, user: user, timeout: 120) do |server|
|
113
|
+
# Need to use sudo
|
114
|
+
server.enable_sudo
|
115
|
+
server[control_repo].git :pull
|
116
|
+
end
|
117
|
+
|
118
|
+
if result1[:exception]
|
119
|
+
response.reply "#{username}, your r10k run didn't seem to work. Looks like there was a problem with Git:"
|
120
|
+
response.reply "/code " + result1[:exception].message
|
121
|
+
raise result1[:exception]
|
122
|
+
end
|
123
|
+
|
124
|
+
result2 = over_ssh(host: config.master_hostname, user: user) do |server|
|
125
|
+
# Need to use sudo
|
126
|
+
server.enable_sudo
|
127
|
+
# scary...
|
128
|
+
server.disable_safe_mode
|
129
|
+
|
130
|
+
command = "r10k deploy environment"
|
131
|
+
command << " #{environment}" if environment
|
132
|
+
command << ' -pv'
|
133
|
+
server.execute command
|
134
|
+
end
|
135
|
+
|
136
|
+
if result2[:exception]
|
137
|
+
response.reply "#{username}, your r10k run didn't seem to work... Maybe it timed out?"
|
138
|
+
response.reply "/code " + result2[:exception].message
|
139
|
+
raise result2[:exception]
|
140
|
+
end
|
141
|
+
|
142
|
+
# build a reply
|
143
|
+
response.reply("#{username}, your r10k deployment is done!")
|
144
|
+
reply_content = [result1[:stdout].join("\n"), result2[:stderr].join("\n")].join("\n")
|
145
|
+
response.reply "/code " + sanitze_for_chat(reply_content)
|
146
|
+
end
|
147
|
+
|
110
148
|
Lita.register_handler(self)
|
111
149
|
end
|
112
150
|
end
|
data/lita-puppet.gemspec
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lita-puppet
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jonathan Gnagy
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-10-
|
11
|
+
date: 2016-10-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: lita
|