beaker 3.35.0 → 3.36.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +32 -9
- data/CHANGELOG.md +15 -1
- data/CONTRIBUTING.md +37 -31
- data/DOCUMENTING.md +68 -44
- data/README.md +14 -31
- data/acceptance/tests/base/dsl/helpers/host_helpers/curl_on_test.rb +3 -3
- data/beaker.gemspec +1 -1
- data/docs/README.md +5 -12
- data/docs/concepts/beaker_libraries.md +2 -2
- data/docs/concepts/glossary.md +11 -0
- data/docs/concepts/style_guide.md +24 -91
- data/docs/concepts/test_tagging.md +3 -10
- data/docs/concepts/testing_beaker_itself.md +3 -2
- data/docs/concepts/ticket_process.md +17 -45
- data/docs/how_to/archive_sut_files.md +7 -33
- data/docs/how_to/change_terminal_output_coloring.md +7 -4
- data/docs/how_to/confine.md +5 -16
- data/docs/how_to/debug_beaker_tests.md +14 -6
- data/docs/how_to/hosts/README.md +2 -5
- data/docs/how_to/hosts/archlinux.md +4 -2
- data/docs/how_to/hosts/cisco.md +9 -30
- data/docs/how_to/hosts/eos.md +5 -14
- data/docs/how_to/hypervisors/README.md +9 -31
- data/docs/how_to/install_puppet.md +16 -51
- data/docs/how_to/platform_specific_tag_confines.md +11 -31
- data/docs/how_to/preserve_hosts.md +13 -54
- data/docs/how_to/rake_tasks.md +1 -4
- data/docs/how_to/recipes.md +9 -2
- data/docs/how_to/run_in_parallel.md +10 -10
- data/docs/how_to/ssh_agent_forwarding.md +8 -13
- data/docs/how_to/ssh_connection_preference.md +10 -10
- data/docs/how_to/test_arbitrary_beaker_versions.md +5 -12
- data/docs/how_to/the_beaker_dsl.md +44 -21
- data/docs/how_to/upgrade_from_2_to_3.md +13 -53
- data/docs/how_to/use_hocon_helpers.md +10 -28
- data/docs/how_to/use_user_password_authentication.md +13 -10
- data/docs/how_to/write_a_beaker_test_for_a_module.md +6 -2
- data/docs/tutorials/README.md +14 -55
- data/docs/tutorials/creating_a_test_environment.md +47 -52
- data/docs/tutorials/installation.md +57 -21
- data/docs/tutorials/lets_write_a_test.md +8 -1
- data/docs/tutorials/quick_start_rake_tasks.md +63 -62
- data/docs/tutorials/subcommands.md +19 -32
- data/docs/tutorials/test_run.md +14 -16
- data/docs/tutorials/test_suites.md +14 -43
- data/docs/tutorials/the_command_line.md +14 -2
- data/lib/beaker/host/unix/pkg.rb +9 -2
- data/lib/beaker/host_prebuilt_steps.rb +1 -1
- data/lib/beaker/shared/host_manager.rb +6 -3
- data/lib/beaker/version.rb +1 -1
- data/spec/beaker/host/unix/pkg_spec.rb +66 -17
- data/spec/beaker/host/unix_spec.rb +4 -4
- data/spec/beaker/host_prebuilt_steps_spec.rb +10 -6
- data/spec/beaker/hypervisor/hypervisor_spec.rb +2 -2
- data/spec/beaker/shared/host_manager_spec.rb +8 -0
- metadata +9 -2
@@ -5,16 +5,18 @@ Beaker uses a set of colors to output different types of messages on to the term
|
|
5
5
|
If you do not provide any values, the defaults are: [Default colors](https://github.com/puppetlabs/beaker/blob/master/lib/beaker/logger.rb#L85-L95)
|
6
6
|
|
7
7
|
## Beaker Color Codes:
|
8
|
+
|
8
9
|
In addition, Beaker can support few other colors. List of all colors supported by Beaker: [Colors Supported by Beaker] (https://github.com/puppetlabs/beaker/blob/master/lib/beaker/logger.rb#L14-L32)
|
9
10
|
|
10
11
|
## How to Customize:
|
12
|
+
|
11
13
|
Changes to the default options can be made by editing the configuration file.
|
12
14
|
|
13
15
|
Here are some examples:
|
14
16
|
|
15
|
-
**
|
16
|
-
|
17
|
-
To get the color-code corresponding to a color, refer to: [Colors Supported by Beaker] (https://github.com/puppetlabs/beaker/blob/master/lib/beaker/logger.rb#L14-L32)
|
17
|
+
**Ex 1: Changing color of a particular type of message**
|
18
|
+
|
19
|
+
Add the following to the hosts file to change the color of `success` messages to `GREEN` and `warning` messages to `YELLOW`. To get the color-code corresponding to a color, refer to: [Colors Supported by Beaker] (https://github.com/puppetlabs/beaker/blob/master/lib/beaker/logger.rb#L14-L32)
|
18
20
|
|
19
21
|
HOSTS:
|
20
22
|
...
|
@@ -23,7 +25,8 @@ To get the color-code corresponding to a color, refer to: [Colors Supported by B
|
|
23
25
|
success: "\e[01;35m"
|
24
26
|
warn: "\e[00;33m"
|
25
27
|
|
26
|
-
**
|
28
|
+
**Ex 2: Turning off colors.**
|
29
|
+
|
27
30
|
The following option in the hosts file will print the whole output in one single color.
|
28
31
|
|
29
32
|
HOSTS:
|
data/docs/how_to/confine.md
CHANGED
@@ -2,10 +2,7 @@
|
|
2
2
|
|
3
3
|
## How does it work?
|
4
4
|
|
5
|
-
The confine method will limit the hosts the testcase is run against. You can pass in either :to or :except
|
6
|
-
to control how the criteria is applied (**:to** will apply the criteria to the hosts in order to find a match,
|
7
|
-
**:except** will apply the criteria to the hosts, and return those hosts that do not match). The default behaviour
|
8
|
-
is that the **TestCase#hosts** array is modified to only contain the hosts that match (or don't match) the criteria.
|
5
|
+
The confine method will limit the hosts the testcase is run against. You can pass in either :to or :except to control how the criteria is applied (**:to** will apply the criteria to the hosts in order to find a match, **:except** will apply the criteria to the hosts, and return those hosts that do not match). The default behaviour is that the **TestCase#hosts** array is modified to only contain the hosts that match (or don't match) the criteria.
|
9
6
|
|
10
7
|
Full method documentation here:
|
11
8
|
|
@@ -13,10 +10,7 @@ Full method documentation here:
|
|
13
10
|
|
14
11
|
## How does the optional Array<Host> parameter work?
|
15
12
|
|
16
|
-
However, if you pass in the optional Array<Host> to the method, the criteria will be applied to this hosts array
|
17
|
-
(not **TestCase#hosts**). Subsequently, any of the hosts contained in **TestCase#hosts** that were not included in the Array<Host>
|
18
|
-
passed to the method, will remain in **TestCase#hosts**. But any hosts that were filtered out by the criteria match
|
19
|
-
will be overwritten.
|
13
|
+
However, if you pass in the optional Array<Host> to the method, the criteria will be applied to this hosts array (not **TestCase#hosts**). Subsequently, any of the hosts contained in **TestCase#hosts** that were not included in the Array<Host> passed to the method, will remain in **TestCase#hosts**. But any hosts that were filtered out by the criteria match will be overwritten.
|
20
14
|
|
21
15
|
Take the following example:
|
22
16
|
|
@@ -52,20 +46,15 @@ Using the following confine:
|
|
52
46
|
|
53
47
|
We will end up with a **TestCase#hosts** array with two hosts, one agent and one master.
|
54
48
|
|
55
|
-
Since we passed in the 'agents' host array to the method, the criteria (:platform => 'el-7-x86_64') will be applied
|
56
|
-
to this set of hosts. Only one agent matches this criteria (centos7_agent). Since the master host (ubuntu_master) was not
|
57
|
-
included in the 'agents' host array when the criteria match was performed, it will remain in **TestCase#hosts**. But only one agent
|
58
|
-
remains after the criteria match.
|
49
|
+
Since we passed in the 'agents' host array to the method, the criteria (:platform => 'el-7-x86_64') will be applied to this set of hosts. Only one agent matches this criteria (centos7_agent). Since the master host (ubuntu_master) was not included in the 'agents' host array when the criteria match was performed, it will remain in **TestCase#hosts**. But only one agent remains after the criteria match.
|
59
50
|
|
60
51
|
`confine :except, { :platform => 'el-7-x86_64' }, agents`
|
61
52
|
|
62
|
-
Will also return two hosts, one agent and one master. But it will be the other agent (ubuntu_agent) as its platform does not match
|
63
|
-
'el-7-x86_64'.
|
53
|
+
Will also return two hosts, one agent and one master. But it will be the other agent (ubuntu_agent) as its platform does not match 'el-7-x86_64'.
|
64
54
|
|
65
55
|
`confine :to, { :platform => 'el-7-x86_64' }`
|
66
56
|
|
67
|
-
Will return one host (centos7_agent). Because no Array<Host> was passed to the confine method, the criteria match
|
68
|
-
is being applied directly to **TestCase#hosts** (which contains all hosts).
|
57
|
+
Will return one host (centos7_agent). Because no Array<Host> was passed to the confine method, the criteria match is being applied directly to **TestCase#hosts** (which contains all hosts).
|
69
58
|
|
70
59
|
`confine :except, { :platform => 'el-7-x86_64' }`
|
71
60
|
|
@@ -7,6 +7,7 @@ beaker includes [pry-byebug](https://github.com/deivid-rodriguez/pry-byebug), a
|
|
7
7
|
[Pry](http://pryrepl.org/) is a powerful Ruby editing and debugging tool. Beaker uses Pry runtime invocation to create a developer console.
|
8
8
|
|
9
9
|
### What is byebug?
|
10
|
+
|
10
11
|
[Byebug](https://github.com/deivid-rodriguez/byebug) is a powerful debugger for ruby. It allows for flexible control of breakpoints, stepping through lines or the call stack. It lacks some features of pry such as source code editing and replaying code execution from within the debugging session, but can be used in combination with pry.
|
11
12
|
|
12
13
|
There are several ways to have your tests break and enter debugging:
|
@@ -17,11 +18,12 @@ There are several ways to have your tests break and enter debugging:
|
|
17
18
|
|
18
19
|
## Add a breakpoint to your test file
|
19
20
|
|
20
|
-
Add Pry to individual tests by adding `require 'pry'` to the Ruby test file.
|
21
|
-
Then add the statement `binding.pry` at the point in code where you want access to the full, current Beaker environment.
|
21
|
+
Add Pry to individual tests by adding `require 'pry'` to the Ruby test file. Then add the statement `binding.pry` at the point in code where you want access to the full, current Beaker environment.
|
22
22
|
|
23
23
|
### Example
|
24
|
+
|
24
25
|
#### Example test trypry.rb
|
26
|
+
|
25
27
|
Here's a test file that exercises different ways of running commands on Beaker hosts. At the end of the main `hosts.each` loop I've included `binding.pry` to invoke the console.
|
26
28
|
|
27
29
|
```
|
@@ -49,6 +51,7 @@ end
|
|
49
51
|
```
|
50
52
|
|
51
53
|
#### Sample output to the first `binding.pry` call:
|
54
|
+
|
52
55
|
```
|
53
56
|
$ bundle exec beaker --tests tests/trypry.rb --hosts configs/fusion/winfusion.cfg --no-provision
|
54
57
|
{
|
@@ -128,7 +131,9 @@ From: /Users/anode/beaker/tests/trypry.rb @ line 19 self.run_test:
|
|
128
131
|
|
129
132
|
[1] pry(#<Beaker::TestCase>)>
|
130
133
|
```
|
134
|
+
|
131
135
|
#### Using the console
|
136
|
+
|
132
137
|
At this point I have access to the console. I have full access to Beaker hosts, the Beaker DSL and Ruby.
|
133
138
|
|
134
139
|
Here's some sample console calls:
|
@@ -216,8 +221,11 @@ w2k8r2 executed in 0.08 seconds
|
|
216
221
|
[5] pry(#<Beaker::TestCase>)> result.stdout.chomp
|
217
222
|
=> "Application Data\nDesktop\nDocuments\nFavorites\nMicrosoft\nPackage Cache\nStart Menu\nTemplates\nVMware\nbeaker.gemspec\nntuser.pol"
|
218
223
|
```
|
224
|
+
|
219
225
|
#### Continue regular test execution
|
226
|
+
|
220
227
|
Simply `exit` the console.
|
228
|
+
|
221
229
|
```
|
222
230
|
[6] pry(#<Beaker::TestCase>)> exit
|
223
231
|
```
|
@@ -239,11 +247,9 @@ Consider this example test case _test.rb_, which is going to fail:
|
|
239
247
|
assert_equal(important_expected_value, actual_value, 'This product is faulty')
|
240
248
|
end
|
241
249
|
|
242
|
-
You can run this test using `beaker -t test.rb` or (to use the `run` subcommand and just run the test and bypass host provisioning etc) `beaker run -t test.rb
|
243
|
-
It fails.
|
250
|
+
You can run this test using `beaker -t test.rb` or (to use the `run` subcommand and just run the test and bypass host provisioning etc) `beaker run -t test.rb`. It fails.
|
244
251
|
|
245
|
-
Now try `beaker run -t test.rb --debug-errors`
|
246
|
-
This will enter a pry console when the failure occurs.
|
252
|
+
Now try `beaker run -t test.rb --debug-errors` This will enter a pry console when the failure occurs.
|
247
253
|
|
248
254
|
* Assert expected matches actual
|
249
255
|
Exception raised during step execution and debug-errors option is set, entering pry. Exception was: #<Minitest::Assertion: This product is faulty.
|
@@ -305,11 +311,13 @@ The arrow indicates pry is showing code at the top of the stack trace. At positi
|
|
305
311
|
From here, you can examine variables in your test. If you have hosts provisioned, you can send them commands using the [on](http://www.rubydoc.info/github/puppetlabs/beaker/Beaker/DSL/Helpers/HostHelpers#on-instance_method) method, or in a separate terminal ssh into them to investigate their state at the point of failure.
|
306
312
|
|
307
313
|
## Defining external breakpoints with byebug
|
314
|
+
|
308
315
|
This method is perhaps the least intuitive to use; but combines the advantages of letting you pick the line(s) of code to set breakpoints on; and being able to debug without needing to edit your test code directly. It is sometimes desirable to debug a test without changing the test's code at all; for example, if you want to compare a test at two or more different git commits, your test source needs to remain unmodified from its committed form.
|
309
316
|
|
310
317
|
byebug allows you to externally define breakpoints to keep them separate from your source code.
|
311
318
|
|
312
319
|
### Example
|
320
|
+
|
313
321
|
Consider the following test file test.rb:
|
314
322
|
|
315
323
|
```ruby
|
data/docs/how_to/hosts/README.md
CHANGED
@@ -1,8 +1,5 @@
|
|
1
1
|
# The Hosts Directory
|
2
2
|
|
3
|
-
This directory contains docs explaining any peculiarities or details of a particular
|
4
|
-
OS's host implementation.
|
3
|
+
This directory contains docs explaining any peculiarities or details of a particular OS's host implementation.
|
5
4
|
|
6
|
-
If you don't see a file here for an OS, then it's either not yet documented
|
7
|
-
(feel free to help us out here!), or it should conform to our normal host
|
8
|
-
abstraction assumptions.
|
5
|
+
If you don't see a file here for an OS, then it's either not yet documented (feel free to help us out here!), or it should conform to our normal host abstraction assumptions.
|
@@ -1,14 +1,16 @@
|
|
1
1
|
# Arch Linux
|
2
2
|
|
3
3
|
> Arch Linux is an independently developed, i686/x86-64 general-purpose GNU/Linux distribution that strives to provide the latest stable versions of most software by following a rolling-release model. The default installation is a minimal base system, configured by the user to only add what is purposely required.
|
4
|
-
|
4
|
+
|
5
|
+
Source: https://wiki.archlinux.org/index.php/Arch_Linux
|
5
6
|
|
6
7
|
# Installation
|
7
8
|
|
8
9
|
## Specifying a version to install
|
9
10
|
|
10
11
|
> Arch Linux strives to maintain the latest stable release versions of its software as long as systemic package breakage can be reasonably avoided.
|
11
|
-
|
12
|
+
|
13
|
+
Source: https://wiki.archlinux.org/index.php/Arch_Linux
|
12
14
|
|
13
15
|
Since Arch is a rolling release, the Puppet version installed by Pacman will always be the latest avaliable release from the upstream.
|
14
16
|
|
data/docs/how_to/hosts/cisco.md
CHANGED
@@ -1,36 +1,23 @@
|
|
1
1
|
# Wind River Linux
|
2
2
|
|
3
|
-
Wind River Linux is an embedded systems OS from Wind, an Intel Company. You
|
4
|
-
can get more details on this from their
|
5
|
-
[product page](http://www.windriver.com/products/linux/).
|
3
|
+
Wind River Linux is an embedded systems OS from Wind, an Intel Company. You can get more details on this from their [product page](http://www.windriver.com/products/linux/).
|
6
4
|
|
7
|
-
Beaker provides support for 2 of Cisco's Wind River Linux platforms.
|
8
|
-
Those platform codenames are `cisco_nexus` for Cisco NX-OS based systems
|
9
|
-
and `cisco_ios_xr` for Cisco IOS XR based systems.
|
5
|
+
Beaker provides support for 2 of Cisco's Wind River Linux platforms. Those platform codenames are `cisco_nexus` for Cisco NX-OS based systems and `cisco_ios_xr` for Cisco IOS XR based systems.
|
10
6
|
|
11
7
|
Beaker currently can install puppet on Cisco Nexus and Cisco IOS XR.
|
12
8
|
|
13
9
|
# Host Requirements
|
14
10
|
|
15
|
-
WRLinux hosts validate their setup once created, and will fail if not
|
16
|
-
setup correctly. There are two conditions that are validated specifically
|
17
|
-
on WRLinux hosts. These conditions are listed below.
|
11
|
+
WRLinux hosts validate their setup once created, and will fail if not setup correctly. There are two conditions that are validated specifically on WRLinux hosts. These conditions are listed below.
|
18
12
|
|
19
|
-
A. All Cisco Nexus hosts will need a `:vrf` value, which determines their
|
20
|
-
virtual routing framework for networking purposes. For our purposes,
|
21
|
-
we tend to use the value `management`, so there is always a hosts
|
22
|
-
file line that looks like this in our configuration:
|
13
|
+
A. All Cisco Nexus hosts will need a `:vrf` value, which determines their virtual routing framework for networking purposes. For our purposes, we tend to use the value `management`, so there is always a hosts file line that looks like this in our configuration:
|
23
14
|
|
24
15
|
HOSTS:
|
25
16
|
<hostname>:
|
26
17
|
...
|
27
18
|
vrf: management
|
28
19
|
|
29
|
-
B. All Cisco hosts will also require a user to be set on the
|
30
|
-
hosts. This is because they don't allow ssh'ing as the root user,
|
31
|
-
which is one of the main assumptions that Beaker operates under in
|
32
|
-
the usual case. In order to specify a user to ssh with, add this
|
33
|
-
block to a host:
|
20
|
+
B. All Cisco hosts will also require a user to be set on the hosts. This is because they don't allow ssh'ing as the root user, which is one of the main assumptions that Beaker operates under in the usual case. In order to specify a user to ssh with, add this block to a host:
|
34
21
|
|
35
22
|
HOSTS:
|
36
23
|
<hostname>:
|
@@ -40,22 +27,14 @@ block to a host:
|
|
40
27
|
|
41
28
|
# Hypervisors
|
42
29
|
|
43
|
-
WRLinux has only been developed and tested as a
|
44
|
-
[vmpooler](https://github.com/puppetlabs/vmpooler) host.
|
30
|
+
WRLinux has only been developed and tested as a [vmpooler](https://github.com/puppetlabs/vmpooler) host.
|
45
31
|
|
46
|
-
This doesn't mean that it can't be used in another hypervisor, but that
|
47
|
-
Beaker doesn't specifically deal with the details of that hypervisor in creating
|
48
|
-
WRLinux hosts, if there is anything specific to WRLinux that will need to be done in
|
49
|
-
provisioning steps.
|
32
|
+
This doesn't mean that it can't be used in another hypervisor, but that Beaker doesn't specifically deal with the details of that hypervisor in creating WRLinux hosts, if there is anything specific to WRLinux that will need to be done in provisioning steps.
|
50
33
|
|
51
34
|
# Installation Methods
|
52
35
|
|
53
36
|
## Open Source
|
54
37
|
|
55
|
-
In order to install a puppet-agent against a WRLinux host, you'll have to use the
|
56
|
-
[`install_puppet_agent_on`](blob/master/lib/beaker/dsl/install_utils/foss_utils.rb#L327)
|
57
|
-
method.
|
38
|
+
In order to install a puppet-agent against a WRLinux host, you'll have to use the [`install_puppet_agent_on`](blob/master/lib/beaker/dsl/install_utils/foss_utils.rb#L327) method.
|
58
39
|
|
59
|
-
It reaches out to the WRLinux-specific host code for any information that it needs.
|
60
|
-
You can check out [these methods](blob/master/lib/beaker/host/cisco.rb) if you
|
61
|
-
need more information about this.
|
40
|
+
It reaches out to the WRLinux-specific host code for any information that it needs. You can check out [these methods](blob/master/lib/beaker/host/cisco.rb) if you need more information about this.
|
data/docs/how_to/hosts/eos.md
CHANGED
@@ -1,17 +1,12 @@
|
|
1
1
|
# EOS - Arista
|
2
2
|
|
3
|
-
EOS is the network device OS from Arista. You can get more details from their
|
4
|
-
[product page](https://www.arista.com/en/products/eos).
|
3
|
+
EOS is the network device OS from Arista. You can get more details from their [product page](https://www.arista.com/en/products/eos).
|
5
4
|
|
6
5
|
# Hypervisors
|
7
6
|
|
8
|
-
EOS has only been developed and tested as a
|
9
|
-
[vmpooler](https://github.com/puppetlabs/vmpooler) host.
|
7
|
+
EOS has only been developed and tested as a [vmpooler](https://github.com/puppetlabs/vmpooler) host.
|
10
8
|
|
11
|
-
This doesn't mean that it can't be used in another hypervisor, but that
|
12
|
-
Beaker doesn't specifically deal with the details of that hypervisor in creating
|
13
|
-
EOS hosts, if there is anything specific to EOS that will need to be done in
|
14
|
-
provisioning steps.
|
9
|
+
This doesn't mean that it can't be used in another hypervisor, but that Beaker doesn't specifically deal with the details of that hypervisor in creating EOS hosts, if there is anything specific to EOS that will need to be done in provisioning steps.
|
15
10
|
|
16
11
|
# Installation Methods
|
17
12
|
|
@@ -21,10 +16,6 @@ provisioning steps.
|
|
21
16
|
|
22
17
|
## Open Source
|
23
18
|
|
24
|
-
In order to install a puppet-agent against an EOS host, you'll have to use the
|
25
|
-
[`install_puppet_agent_dev_repo_on`](blob/master/lib/beaker/dsl/install_utils/foss_utils.rb#L1085)
|
26
|
-
method.
|
19
|
+
In order to install a puppet-agent against an EOS host, you'll have to use the [`install_puppet_agent_dev_repo_on`](blob/master/lib/beaker/dsl/install_utils/foss_utils.rb#L1085) method.
|
27
20
|
|
28
|
-
It reaches out to the EOS-specific host code for any information that it needs.
|
29
|
-
You can check out [these methods](blob/master/lib/beaker/host/eos.rb) if you
|
30
|
-
need more information about this.
|
21
|
+
It reaches out to the EOS-specific host code for any information that it needs. You can check out [these methods](blob/master/lib/beaker/host/eos.rb) if you need more information about this.
|
@@ -1,26 +1,16 @@
|
|
1
1
|
# The Hypervisors Directory
|
2
2
|
|
3
|
-
This directory contains docs explaining any peculiarities or details of a particular
|
4
|
-
hypervisor's implementation.
|
3
|
+
This directory contains docs explaining any peculiarities or details of a particular hypervisor's implementation.
|
5
4
|
|
6
|
-
If you don't see a file here for a hypervisor, then it's either not yet documented
|
7
|
-
(feel free to help us out here!), or it should conform to our normal hypervisor
|
8
|
-
assumptions.
|
5
|
+
If you don't see a file here for a hypervisor, then it's either not yet documented (feel free to help us out here!), or it should conform to our normal hypervisor assumptions.
|
9
6
|
|
10
7
|
# Credentials File
|
11
8
|
|
12
|
-
Beaker uses credentials from a `.fog` file for authentication. This file came
|
13
|
-
from using the [fog cloud services library](http://fog.io). Beaker now only uses
|
14
|
-
fog functionality in the openstack hypervisor, but we still use the `.fog` file
|
15
|
-
for a credentials store.
|
9
|
+
Beaker uses credentials from a `.fog` file for authentication. This file came from using the [fog cloud services library](http://fog.io). Beaker now only uses fog functionality in the openstack hypervisor, but we still use the `.fog` file for a credentials store.
|
16
10
|
|
17
|
-
By default, the file is located under the user's home directory. This helps to
|
18
|
-
keep the credentials confidential. The path of `.fog` file can be changed by
|
19
|
-
setting the `dot_fog` global beaker option.
|
11
|
+
By default, the file is located under the user's home directory. This helps to keep the credentials confidential. The path of `.fog` file can be changed by setting the `dot_fog` global beaker option.
|
20
12
|
|
21
|
-
The `.fog` file is written in YAML. The keys are particular to the service that
|
22
|
-
they correspond to, and each hypervisor's documentation should include the keys
|
23
|
-
that are needed for it. An example `.fog` file is below:
|
13
|
+
The `.fog` file is written in YAML. The keys are particular to the service that they correspond to, and each hypervisor's documentation should include the keys that are needed for it. An example `.fog` file is below:
|
24
14
|
|
25
15
|
```yaml
|
26
16
|
:default:
|
@@ -32,16 +22,9 @@ that are needed for it. An example `.fog` file is below:
|
|
32
22
|
|
33
23
|
# External Hypervisors
|
34
24
|
|
35
|
-
Puppet and its community have made several gems that support different
|
36
|
-
hypervisors with beaker, the reason for this is that we're looking to decrease Beaker's
|
37
|
-
dependency footprint, and hypervisors are one of the places where we can often
|
38
|
-
increase the load across all Beaker uses to benefit a small group that uses a
|
39
|
-
particular hypervisor.
|
25
|
+
Puppet and its community have made several gems that support different hypervisors with beaker, the reason for this is that we're looking to decrease Beaker's dependency footprint, and hypervisors are one of the places where we can often increase the load across all Beaker uses to benefit a small group that uses a particular hypervisor.
|
40
26
|
|
41
|
-
In order to offset this, we've made a listing of gems and community-supported forks
|
42
|
-
that support other external hypervisors. Please check them out if you'd like to use
|
43
|
-
those hypervisors, hopefully it'll save you from spending time trying to support a
|
44
|
-
new hypervisor yourself.
|
27
|
+
In order to offset this, we've made a listing of gems and community-supported forks that support other external hypervisors. Please check them out if you'd like to use those hypervisors, hopefully it'll save you from spending time trying to support a new hypervisor yourself.
|
45
28
|
|
46
29
|
### Hypervisor gems made by puppet (pre-included in beaker 3.x):
|
47
30
|
|
@@ -59,14 +42,9 @@ new hypervisor yourself.
|
|
59
42
|
|
60
43
|
### beaker-abs
|
61
44
|
|
62
|
-
There is another hypervisor made and used internally by puppet,
|
63
|
-
[beaker-abs](https://github.com/puppetlabs/beaker-abs), but it isn't included
|
64
|
-
in beaker 3.x. If you'd like to use beaker-abs, you'll have to include it yourself.
|
45
|
+
There is another hypervisor made and used internally by puppet, [beaker-abs](https://github.com/puppetlabs/beaker-abs), but it isn't included in beaker 3.x. If you'd like to use beaker-abs, you'll have to include it yourself.
|
65
46
|
|
66
|
-
You do that by requiring beaker-abs in your Gemfile as a sibling to beaker itself
|
67
|
-
and then using `abs` as your hypervisor value in your hosts file. Please check the
|
68
|
-
[beaker-abs README](https://github.com/puppetlabs/beaker-abs/blob/master/README.md)
|
69
|
-
for more information.
|
47
|
+
You do that by requiring beaker-abs in your Gemfile as a sibling to beaker itself and then using `abs` as your hypervisor value in your hosts file. Please check the [beaker-abs README](https://github.com/puppetlabs/beaker-abs/blob/master/README.md) for more information.
|
70
48
|
|
71
49
|
### Hypervisor gems and beaker forks made by community:
|
72
50
|
|
@@ -1,88 +1,53 @@
|
|
1
1
|
# How To Install Puppet
|
2
2
|
|
3
|
-
This doc will guide you through the process of installing Puppet Agent using
|
4
|
-
beaker's DSL helpers.
|
3
|
+
This doc will guide you through the process of installing Puppet Agent using beaker's DSL helpers.
|
5
4
|
|
6
|
-
Note that this is not a complete documentation of the process, but a general
|
7
|
-
overview. There will be specific hiccups for particular platforms and special
|
8
|
-
cases. These are not all included at this point. The idea is that as we come
|
9
|
-
upon them, we will now have a place to document those details, so that we can
|
10
|
-
over time bring this to 100% completeness.
|
5
|
+
Note that this is not a complete documentation of the process, but a general overview. There will be specific hiccups for particular platforms and special cases. These are not all included at this point. The idea is that as we come upon them, we will now have a place to document those details, so that we can over time bring this to 100% completeness.
|
11
6
|
|
12
7
|
# First Things First: What Do You Want to Install?
|
13
8
|
|
14
|
-
If you understand [beaker's roles](https://github.com/puppetlabs/beaker/blob/master/docs/concepts/roles_what_are_they.md)
|
15
|
-
and just want the shortcuts to installing Open Source Puppet across your testing
|
16
|
-
environment, then you should go to our "High Level Shortcuts" section below.
|
9
|
+
If you understand [beaker's roles](https://github.com/puppetlabs/beaker/blob/master/docs/concepts/roles_what_are_they.md) and just want the shortcuts to installing Open Source Puppet across your testing environment, then you should go to our "High Level Shortcuts" section below.
|
17
10
|
|
18
|
-
If you'd like to only install Puppet Agents, please checkout our "Puppet Agent
|
19
|
-
Installs" section for more information.
|
11
|
+
If you'd like to only install Puppet Agents, please checkout our "Puppet Agent Installs" section for more information.
|
20
12
|
|
21
13
|
# High Level Shortcuts
|
22
14
|
|
23
|
-
The
|
24
|
-
[`install_puppet_on`](http://www.rubydoc.info/gems/beaker/Beaker/DSL/InstallUtils/FOSSUtils#install_puppet_on-instance_method)
|
25
|
-
method is a wrapper on our installing Puppet behavior that allows you to pass in
|
26
|
-
which hosts in particular you'd like to install Puppet on as well as specifying
|
27
|
-
the options used yourself. Please checkout the Rubydocs linked above for more
|
28
|
-
info on this method.
|
15
|
+
The [`install_puppet_on`](http://www.rubydoc.info/gems/beaker/Beaker/DSL/InstallUtils/FOSSUtils#install_puppet_on-instance_method) method is a wrapper on our installing Puppet behavior that allows you to pass in which hosts in particular you'd like to install Puppet on as well as specifying the options used yourself. Please checkout the Rubydocs linked above for more info on this method.
|
29
16
|
|
30
|
-
The
|
31
|
-
[`install_puppet`](http://www.rubydoc.info/gems/beaker/Beaker/DSL/InstallUtils/FOSSUtils#install_puppet-instance_method)
|
32
|
-
is deprecated. It's a shortcut method that just calls `install_puppet_on`
|
33
|
-
passing the entire hosts array and global options hash. You can get the same
|
34
|
-
using this code in your pre-suite:
|
17
|
+
The [`install_puppet`](http://www.rubydoc.info/gems/beaker/Beaker/DSL/InstallUtils/FOSSUtils#install_puppet-instance_method) is deprecated. It's a shortcut method that just calls `install_puppet_on` passing the entire hosts array and global options hash. You can get the same using this code in your pre-suite:
|
35
18
|
|
36
19
|
```ruby
|
37
20
|
install_puppet_on(hosts, options)
|
38
21
|
```
|
39
22
|
|
40
|
-
Note that both of the high level methods will call the `install_puppet_agent_on`
|
41
|
-
method to install released Puppet Agent versions for your agent Systems Under
|
42
|
-
Test (SUTs). Please checkout our "Released Open Source Puppet Agents" section
|
43
|
-
below for more information on this method.
|
23
|
+
Note that both of the high level methods will call the `install_puppet_agent_on` method to install released Puppet Agent versions for your agent Systems Under Test (SUTs). Please checkout our "Released Open Source Puppet Agents" section below for more information on this method.
|
44
24
|
|
45
25
|
# Puppet Agent Installs
|
46
26
|
|
47
|
-
There are a number of Puppet Agents that you could be installing. There aren't
|
48
|
-
only an ever-growing number of versions, but you can get Puppet Agent from a
|
49
|
-
number of locations.
|
27
|
+
There are a number of Puppet Agents that you could be installing. There aren't only an ever-growing number of versions, but you can get Puppet Agent from a number of locations.
|
50
28
|
|
51
|
-
If you'd like to install the Puppet Agent that comes with your particular Puppet
|
52
|
-
Enterprise (PE) install, then please skip to our "PE Promoted Agent Installs"
|
53
|
-
section below.
|
29
|
+
If you'd like to install the Puppet Agent that comes with your particular Puppet Enterprise (PE) install, then please skip to our "PE Promoted Agent Installs" section below.
|
54
30
|
|
55
|
-
For our different Open Source variants, check out the sections just below, which
|
56
|
-
differentiate between released & development Puppet Agent versions.
|
31
|
+
For our different Open Source variants, check out the sections just below, which differentiate between released & development Puppet Agent versions.
|
57
32
|
|
58
33
|
### Released Open Source Puppet Agents
|
59
34
|
|
60
|
-
To install a released version of Puppet Agent, beaker provides the
|
61
|
-
[`install_puppet_agent_on`](http://www.rubydoc.info/gems/beaker/Beaker/DSL/InstallUtils/FOSSUtils#install_puppet_agent_on-instance_method)
|
62
|
-
method. Please checkout the Rubydocs for more info on this method.
|
35
|
+
To install a released version of Puppet Agent, beaker provides the [`install_puppet_agent_on`](http://www.rubydoc.info/gems/beaker/Beaker/DSL/InstallUtils/FOSSUtils#install_puppet_agent_on-instance_method) method. Please checkout the Rubydocs for more info on this method.
|
63
36
|
|
64
37
|
### Development Open Source Puppet Agents
|
65
38
|
|
66
|
-
To install a development build of Puppet Agent, beaker provides the
|
67
|
-
[`install_puppet_agent_dev_repo_on`](http://www.rubydoc.info/gems/beaker/Beaker/DSL/InstallUtils/FOSSUtils#install_puppet_agent_dev_repo_on-instance_method)
|
68
|
-
method. Please checkout the Rubydocs for more info on this method.
|
39
|
+
To install a development build of Puppet Agent, beaker provides the [`install_puppet_agent_dev_repo_on`](http://www.rubydoc.info/gems/beaker/Beaker/DSL/InstallUtils/FOSSUtils#install_puppet_agent_dev_repo_on-instance_method) method. Please checkout the Rubydocs for more info on this method.
|
69
40
|
|
70
41
|
### PE Promoted Agent Installs
|
71
42
|
|
72
|
-
If you're using this method, then you're going to be downloading the installer
|
73
|
-
from a URL configured like so:
|
43
|
+
If you're using this method, then you're going to be downloading the installer from a URL configured like so:
|
74
44
|
|
75
45
|
```ruby
|
76
46
|
http://pm.puppetlabs.com/puppet-agent/#{ pe_version }/#{ puppet_agent_version }/repos
|
77
47
|
```
|
78
48
|
|
79
|
-
`pe_version` is a variable that you can provide using either the host or global
|
80
|
-
property `:pe_ver`. This is usually done in the hosts file, and will default to
|
81
|
-
`4.0.0-rc1` if nothing is specified.
|
49
|
+
`pe_version` is a variable that you can provide using either the host or global property `:pe_ver`. This is usually done in the hosts file, and will default to `4.0.0-rc1` if nothing is specified.
|
82
50
|
|
83
|
-
`puppet_agent_version` is a variable you can provide the value of through the
|
84
|
-
same methods as `pe_version` above. It will default to `latest`.
|
51
|
+
`puppet_agent_version` is a variable you can provide the value of through the same methods as `pe_version` above. It will default to `latest`.
|
85
52
|
|
86
|
-
Beaker's DSL method to install from this location is
|
87
|
-
[`install_puppet_agent_pe_promoted_repo_on`](http://www.rubydoc.info/github/puppetlabs/beaker/Beaker/DSL/InstallUtils/FOSSUtils#install_puppet_agent_pe_promoted_repo_on-instance_method).
|
88
|
-
Follow the link to get API-level docs on this method for more info.
|
53
|
+
Beaker's DSL method to install from this location is [`install_puppet_agent_pe_promoted_repo_on`](http://www.rubydoc.info/github/puppetlabs/beaker/Beaker/DSL/InstallUtils/FOSSUtils#install_puppet_agent_pe_promoted_repo_on-instance_method). Follow the link to get API-level docs on this method for more info.
|