|
2 | 2 |
|
3 | 3 | Testing of Puppet catalogs is faster than running the agent, but you need to be careful of the following limitations:
|
4 | 4 |
|
5 |
| -0. Facts are not taken from a live agent run |
| 5 | +1. Facts are not taken from a live agent run |
6 | 6 |
|
7 |
| - octocatalog-diff by default uses the facts reported from a node's more recent Puppet run. If you have made changes to custom facts, catalog testing will **NOT** be an adequate test of whether your custom facts worked. (You can still use octocatalog-diff to help predict changes to nodes based on changes to facts, by overriding facts on the command line.) |
| 7 | + octocatalog-diff by default uses the facts reported from a node's more recent Puppet run. If you have made changes to custom facts, catalog testing will **NOT** be an adequate test of whether your custom facts worked. (You can still use octocatalog-diff to help predict changes to nodes based on changes to facts, by overriding facts on the command line.) |
8 | 8 |
|
9 |
| -0. Agents handle depenency ordering and implementation details |
| 9 | +1. Agents handle depenency ordering and implementation details |
10 | 10 |
|
11 |
| - The catalog defines the state of the system, but it's up to the agent to determine how to bring the system to a point that matches the catalog. The agent is responsible for order of operations and actually making the change. |
| 11 | + The catalog defines the state of the system, but it's up to the agent to determine how to bring the system to a point that matches the catalog. The agent is responsible for order of operations and actually making the change. |
12 | 12 |
|
13 |
| - Two specific situations that catalog testing does **NOT** detect are: |
| 13 | + Two specific situations that catalog testing does **NOT** detect are: |
14 | 14 |
|
15 |
| - - Dependency loops (e.g., you have made A require B, B require C, and C require A). |
| 15 | + - Dependency loops (e.g., you have made A require B, B require C, and C require A). |
16 | 16 |
|
17 |
| - - Operations not supported by the provider. For example, assume that in your current Puppet manifests, you set the size of a file system to 100 GB. You change this in your new branch to 50 GB. octocatalog-diff will dutifully report this change to you. However, the agent will fail to make the change, because it is not possible to shrink a file system from 100 GB to 50 GB. |
| 17 | + - Operations not supported by the provider. For example, assume that in your current Puppet manifests, you set the size of a file system to 100 GB. You change this in your new branch to 50 GB. octocatalog-diff will dutifully report this change to you. However, the agent will fail to make the change, because it is not possible to shrink a file system from 100 GB to 50 GB. |
18 | 18 |
|
19 |
| -0. Changes in underlying providers may not be noticed |
| 19 | +1. Changes in underlying providers may not be noticed |
20 | 20 |
|
21 |
| - Consider that you are using a Puppet module that creates a file system. The current implementation of that module checks to see if *any* file system is present on the device, and creates a new file system there if no file system was present. You upgrade the module, and the new version checks to see if *the specified* file system is present on the device, and reformats the device with the specified file system (regardless of whether there was no file system or if there was an existing file system of a different type). There would be no catalog changes (hence octocatalog-diff would report nothing) because the catalog simply instructs the agent to create a file system of the specified type at the defined location. However, the actual implementation of those instructions has changed dramatically. |
| 21 | + Consider that you are using a Puppet module that creates a file system. The current implementation of that module checks to see if *any* file system is present on the device, and creates a new file system there if no file system was present. You upgrade the module, and the new version checks to see if *the specified* file system is present on the device, and reformats the device with the specified file system (regardless of whether there was no file system or if there was an existing file system of a different type). There would be no catalog changes (hence octocatalog-diff would report nothing) because the catalog simply instructs the agent to create a file system of the specified type at the defined location. However, the actual implementation of those instructions has changed dramatically. |
22 | 22 |
|
23 | 23 | In general catalog testing is great for:
|
24 | 24 |
|
|
0 commit comments