lita-puppet 0.3.1 → 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 +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
|