chef-zero-scheduled-task 0.1.0 → 0.2.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 +2 -36
- data/chef-zero-scheduled-task.gemspec +1 -2
- data/lib/chef/zero/scheduled/task/version.rb +1 -1
- data/lib/kitchen/provisioner/chef_zero_scheduled_task.rb +9 -145
- metadata +5 -19
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 608601471764f4e51c89d85f9461d17bb9792bde
|
4
|
+
data.tar.gz: d037970d8f12c554a9d7e8b41996b7c4628a3a45
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 461d755d1b78cef6a6e1fd83e44d3c5358fdb2c78643b850ad5edb7626f67896e23d5a15c62e615f975d04aebe1471335195e03ac2d7cf023655ef3b76ca752b
|
7
|
+
data.tar.gz: 3c6efb7589f0a35619c18768ee37881928dac2fffaec2f75865ba2ef1d95affefd2c82d3dab9ddc47ac8b2a8d40ed1df9ae42c7ca9e2b79262a735e77a43cd51
|
data/README.md
CHANGED
@@ -1,39 +1,5 @@
|
|
1
1
|
[](http://badge.fury.io/rb/chef-zero-scheduled-task)
|
2
|
-
# Chef::Zero::Scheduled::Task
|
3
2
|
|
4
|
-
|
3
|
+
# Deprecated!
|
5
4
|
|
6
|
-
|
7
|
-
|
8
|
-
```ruby
|
9
|
-
gem 'chef-zero-scheduled-task'
|
10
|
-
```
|
11
|
-
|
12
|
-
And then execute:
|
13
|
-
|
14
|
-
$ bundle
|
15
|
-
|
16
|
-
Or install it yourself as:
|
17
|
-
|
18
|
-
$ gem install chef-zero-scheduled-task
|
19
|
-
|
20
|
-
## Usage
|
21
|
-
|
22
|
-
In the .kitchen.yml
|
23
|
-
```
|
24
|
-
provisioner:
|
25
|
-
name: chef_zero_scheduled_task
|
26
|
-
```
|
27
|
-
|
28
|
-
This provisioner uses all the same configuration options as the native chef-zero provisioner, as well as:
|
29
|
-
|
30
|
-
* task_username - user account the scheduled task should run under. (defaults to the username used for the transport)
|
31
|
-
* task_password - password to use to create the scheduled task. (defaults to the password used for the transport)
|
32
|
-
|
33
|
-
## Contributing
|
34
|
-
|
35
|
-
1. Fork it ( https://github.com/[my-github-username]/chef-zero-scheduled-task/fork )
|
36
|
-
2. Create your feature branch (`git checkout -b my-new-feature`)
|
37
|
-
3. Commit your changes (`git commit -am 'Add some feature'`)
|
38
|
-
4. Push to the branch (`git push origin my-new-feature`)
|
39
|
-
5. Create a new Pull Request
|
5
|
+
This project has been deprecated in favor of the scheduled task support built in to the WinRM transport in Test-Kitchen v1.8 or newer.
|
@@ -19,10 +19,9 @@ Gem::Specification.new do |spec|
|
|
19
19
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
20
20
|
spec.require_paths = ["lib"]
|
21
21
|
|
22
|
-
spec.add_dependency "test-kitchen", "~> 1.
|
22
|
+
spec.add_dependency "test-kitchen", "~> 1.8"
|
23
23
|
|
24
24
|
spec.add_development_dependency "pry"
|
25
|
-
spec.add_development_dependency "winrm-transport", "~> 1.0"
|
26
25
|
|
27
26
|
spec.add_development_dependency "bundler", "~> 1.3"
|
28
27
|
spec.add_development_dependency "rake"
|
@@ -25,151 +25,15 @@ module Kitchen
|
|
25
25
|
kitchen_provisioner_api_version 2
|
26
26
|
|
27
27
|
plugin_version Kitchen::VERSION
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
else
|
38
|
-
super
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
def run_command
|
43
|
-
if windows_os?
|
44
|
-
script = <<-EOH
|
45
|
-
$script = @'\n#{scheduled_task_command_script}\n'@
|
46
|
-
$ExecutionContext.InvokeCommand.ExpandString($Script) |
|
47
|
-
out-file "$env:temp/kitchen/chef-client-script.ps1"
|
48
|
-
#{run_scheduled_task_command}
|
49
|
-
EOH
|
50
|
-
wrap_shell_code(script)
|
51
|
-
else
|
52
|
-
super
|
53
|
-
end
|
54
|
-
end
|
55
|
-
|
56
|
-
# private
|
57
|
-
|
58
|
-
def local_state_file
|
59
|
-
@local_state_file ||= @instance.diagnose[:state_file]
|
60
|
-
end
|
61
|
-
|
62
|
-
def task_username
|
63
|
-
if config[:task_username]
|
64
|
-
config[:task_username]
|
65
|
-
else
|
66
|
-
if local_state_file.key?(:username)
|
67
|
-
local_state_file[:username]
|
68
|
-
else
|
69
|
-
@instance.transport[:username]
|
70
|
-
end
|
71
|
-
end
|
72
|
-
end
|
73
|
-
|
74
|
-
def task_password
|
75
|
-
unless config[:task_password]
|
76
|
-
if local_state_file.key?(:password)
|
77
|
-
local_state_file[:password]
|
78
|
-
else
|
79
|
-
@instance.transport[:password]
|
80
|
-
end
|
81
|
-
end
|
82
|
-
end
|
83
|
-
|
84
|
-
# rubocop:disable MethodLength
|
85
|
-
def run_scheduled_task_command
|
86
|
-
<<-EOH
|
87
|
-
try {
|
88
|
-
Add-Type -AssemblyName System.Core
|
89
|
-
$npipeServer = new-object System.IO.Pipes.NamedPipeServerStream('task',
|
90
|
-
[System.IO.Pipes.PipeDirection]::In)
|
91
|
-
$pipeReader = new-object System.IO.StreamReader($npipeServer)
|
92
|
-
schtasks /run /tn "chef-tk" /i
|
93
|
-
$npipeserver.waitforconnection()
|
94
|
-
$host.ui.writeline('Connected to the scheduled task.')
|
95
|
-
while ($npipeserver.IsConnected) {
|
96
|
-
$output = $pipereader.ReadLine()
|
97
|
-
if ($output -like 'SCHEDULED_TASK_DONE:*') {
|
98
|
-
$exit_code = ($output -replace 'SCHEDULED_TASK_DONE:').trim()
|
99
|
-
}
|
100
|
-
else { $host.ui.WriteLine($output) } } }
|
101
|
-
finally {
|
102
|
-
$pipereader.dispose()
|
103
|
-
$npipeserver.dispose()
|
104
|
-
$host.setshouldexit($exit_code)
|
105
|
-
}
|
106
|
-
EOH
|
107
|
-
end
|
108
|
-
# rubocop:enable MethodLength
|
109
|
-
|
110
|
-
def new_scheduled_task_command
|
111
|
-
"schtasks /create /tn 'chef-tk' " \
|
112
|
-
"/ru '#{task_username}' /rp '#{task_password}' " \
|
113
|
-
"/sc daily /st 00:00 /rl HIGHEST /f "
|
114
|
-
end
|
115
|
-
|
116
|
-
def new_scheduled_task_command_line_ps
|
117
|
-
"/tr $executioncontext.invokecommand.expandstring(" \
|
118
|
-
'"powershell -executionpolicy unrestricted -File '
|
119
|
-
end
|
120
|
-
|
121
|
-
def setup_scheduled_task_command
|
122
|
-
new_scheduled_task_command +
|
123
|
-
new_scheduled_task_command_line_ps +
|
124
|
-
remote_chef_client_script +
|
125
|
-
'")'
|
126
|
-
end
|
127
|
-
|
128
|
-
def remote_chef_client_script
|
129
|
-
@remote_script_path ||= remote_path_join(
|
130
|
-
config[:root_path], "chef-client-script.ps1")
|
131
|
-
end
|
132
|
-
|
133
|
-
def scheduled_task_command_script
|
134
|
-
<<-EOH
|
135
|
-
Add-Type -AssemblyName System.Core
|
136
|
-
start-sleep -seconds 5;
|
137
|
-
`$npipeClient = new-object System.IO.Pipes.NamedPipeClientStream(`$env:ComputerName,
|
138
|
-
`'task`', [System.IO.Pipes.PipeDirection]::Out);
|
139
|
-
`$npipeclient.connect();
|
140
|
-
`$pipeWriter = new-object System.IO.StreamWriter(`$npipeClient);
|
141
|
-
`$pipeWriter.AutoFlush = `$true;
|
142
|
-
#{client_zero_command} |
|
143
|
-
foreach-object {} {`$pipewriter.writeline(`$_)} {
|
144
|
-
`$pipewriter.writeline("SCHEDULED_TASK_DONE: `$LastExitCode");
|
145
|
-
`$pipewriter.dispose();
|
146
|
-
`$npipeclient.dispose()
|
147
|
-
}
|
148
|
-
EOH
|
149
|
-
end
|
150
|
-
|
151
|
-
def prepare_client_zero_script
|
152
|
-
File.open(File.join(sandbox_path, "chef-client-script.ps1"), "w") do |file|
|
153
|
-
file.write(Util.outdent!(scheduled_task_command_script))
|
154
|
-
end
|
155
|
-
end
|
156
|
-
|
157
|
-
def client_zero_command
|
158
|
-
[local_mode_command, *chef_client_args].join(" ")
|
159
|
-
end
|
160
|
-
|
161
|
-
def chef_client_args
|
162
|
-
level = config[:log_level] == :info ? :info : config[:log_level]
|
163
|
-
args = [
|
164
|
-
"--config #{remote_path_join(config[:root_path], "client.rb")}",
|
165
|
-
"--log_level #{level}",
|
166
|
-
"--force-formatter",
|
167
|
-
"--no-color"
|
168
|
-
]
|
169
|
-
add_optional_chef_client_args!(args)
|
170
|
-
|
171
|
-
args
|
172
|
-
end
|
28
|
+
|
29
|
+
def install_command
|
30
|
+
warn "This provisioner has been deprecated."
|
31
|
+
warn "This is will run the default ChefZero provisioner."
|
32
|
+
warn "The WinRM transport in Test-Kitchen 1.8 or newer now supports using scheduled tasks to run commands."
|
33
|
+
warn "To execute this in a scheduled task, `elvated:true` in the transport configuration."
|
34
|
+
super
|
35
|
+
end
|
36
|
+
|
173
37
|
end
|
174
38
|
end
|
175
39
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: chef-zero-scheduled-task
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Steven Murawski
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-05-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: test-kitchen
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '1.
|
19
|
+
version: '1.8'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '1.
|
26
|
+
version: '1.8'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: pry
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -38,20 +38,6 @@ dependencies:
|
|
38
38
|
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: winrm-transport
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - "~>"
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: '1.0'
|
48
|
-
type: :development
|
49
|
-
prerelease: false
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - "~>"
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: '1.0'
|
55
41
|
- !ruby/object:Gem::Dependency
|
56
42
|
name: bundler
|
57
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -259,7 +245,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
259
245
|
version: '0'
|
260
246
|
requirements: []
|
261
247
|
rubyforge_project:
|
262
|
-
rubygems_version: 2.
|
248
|
+
rubygems_version: 2.6.4
|
263
249
|
signing_key:
|
264
250
|
specification_version: 4
|
265
251
|
summary: Test-Kitchen Provisioner that runs Chef Zero in a Scheduled Task
|