octocatalog-diff 0.5.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (143) hide show
  1. checksums.yaml +7 -0
  2. data/.version +1 -0
  3. data/LICENSE +20 -0
  4. data/README.md +82 -0
  5. data/bin/octocatalog-diff +75 -0
  6. data/doc/advanced-bootstrap.md +33 -0
  7. data/doc/advanced-cache-dir.md +24 -0
  8. data/doc/advanced-catalog-only.md +37 -0
  9. data/doc/advanced-ci.md +13 -0
  10. data/doc/advanced-dynamic-ignores.md +123 -0
  11. data/doc/advanced-future-parser.md +11 -0
  12. data/doc/advanced-ignores.md +224 -0
  13. data/doc/advanced-output-formats.md +96 -0
  14. data/doc/advanced-output-hacks.md +45 -0
  15. data/doc/advanced-override-facts.md +67 -0
  16. data/doc/advanced-pe-enc.md +52 -0
  17. data/doc/advanced-puppet-master.md +50 -0
  18. data/doc/advanced-puppet-versions.md +9 -0
  19. data/doc/advanced-storeconfigs.md +72 -0
  20. data/doc/advanced-using-without-git.md +15 -0
  21. data/doc/advanced.md +43 -0
  22. data/doc/basic.md +70 -0
  23. data/doc/configuration-enc.md +69 -0
  24. data/doc/configuration-hiera.md +103 -0
  25. data/doc/configuration-puppetdb.md +49 -0
  26. data/doc/configuration.md +51 -0
  27. data/doc/dev/README.md +1 -0
  28. data/doc/dev/coverage.md +34 -0
  29. data/doc/dev/how-to-add-options.md +83 -0
  30. data/doc/dev/integration-tests.md +63 -0
  31. data/doc/dev/releasing.md +19 -0
  32. data/doc/installation.md +49 -0
  33. data/doc/limitations.md +34 -0
  34. data/doc/optionsref.md +947 -0
  35. data/doc/requirements.md +16 -0
  36. data/doc/roadmap.md +26 -0
  37. data/doc/similar.md +17 -0
  38. data/doc/troubleshooting.md +54 -0
  39. data/lib/octocatalog-diff.rb +12 -0
  40. data/lib/octocatalog-diff/bootstrap.rb +53 -0
  41. data/lib/octocatalog-diff/catalog-diff/cli.rb +205 -0
  42. data/lib/octocatalog-diff/catalog-diff/cli/catalogs.rb +240 -0
  43. data/lib/octocatalog-diff/catalog-diff/cli/diffs.rb +145 -0
  44. data/lib/octocatalog-diff/catalog-diff/cli/helpers/fact_override.rb +99 -0
  45. data/lib/octocatalog-diff/catalog-diff/cli/options.rb +173 -0
  46. data/lib/octocatalog-diff/catalog-diff/cli/options/basedir.rb +14 -0
  47. data/lib/octocatalog-diff/catalog-diff/cli/options/bootstrap_environment.rb +18 -0
  48. data/lib/octocatalog-diff/catalog-diff/cli/options/bootstrap_script.rb +14 -0
  49. data/lib/octocatalog-diff/catalog-diff/cli/options/bootstrap_then_exit.rb +12 -0
  50. data/lib/octocatalog-diff/catalog-diff/cli/options/bootstrapped_dirs.rb +18 -0
  51. data/lib/octocatalog-diff/catalog-diff/cli/options/cached_master_dir.rb +21 -0
  52. data/lib/octocatalog-diff/catalog-diff/cli/options/catalog_only.rb +14 -0
  53. data/lib/octocatalog-diff/catalog-diff/cli/options/color.rb +13 -0
  54. data/lib/octocatalog-diff/catalog-diff/cli/options/compare_file_text.rb +15 -0
  55. data/lib/octocatalog-diff/catalog-diff/cli/options/debug.rb +12 -0
  56. data/lib/octocatalog-diff/catalog-diff/cli/options/display_datatype_changes.rb +16 -0
  57. data/lib/octocatalog-diff/catalog-diff/cli/options/display_detail_add.rb +12 -0
  58. data/lib/octocatalog-diff/catalog-diff/cli/options/display_source_file_line.rb +12 -0
  59. data/lib/octocatalog-diff/catalog-diff/cli/options/enc.rb +31 -0
  60. data/lib/octocatalog-diff/catalog-diff/cli/options/existing_catalogs.rb +25 -0
  61. data/lib/octocatalog-diff/catalog-diff/cli/options/fact_file.rb +23 -0
  62. data/lib/octocatalog-diff/catalog-diff/cli/options/fact_override.rb +19 -0
  63. data/lib/octocatalog-diff/catalog-diff/cli/options/facts_terminus.rb +16 -0
  64. data/lib/octocatalog-diff/catalog-diff/cli/options/from_puppetdb.rb +13 -0
  65. data/lib/octocatalog-diff/catalog-diff/cli/options/header.rb +24 -0
  66. data/lib/octocatalog-diff/catalog-diff/cli/options/hiera_config.rb +18 -0
  67. data/lib/octocatalog-diff/catalog-diff/cli/options/hiera_path_strip.rb +12 -0
  68. data/lib/octocatalog-diff/catalog-diff/cli/options/hostname.rb +13 -0
  69. data/lib/octocatalog-diff/catalog-diff/cli/options/ignore.rb +24 -0
  70. data/lib/octocatalog-diff/catalog-diff/cli/options/ignore_attr.rb +16 -0
  71. data/lib/octocatalog-diff/catalog-diff/cli/options/ignore_tags.rb +23 -0
  72. data/lib/octocatalog-diff/catalog-diff/cli/options/include_tags.rb +12 -0
  73. data/lib/octocatalog-diff/catalog-diff/cli/options/master_cache_branch.rb +12 -0
  74. data/lib/octocatalog-diff/catalog-diff/cli/options/output_file.rb +15 -0
  75. data/lib/octocatalog-diff/catalog-diff/cli/options/output_format.rb +15 -0
  76. data/lib/octocatalog-diff/catalog-diff/cli/options/parallel.rb +12 -0
  77. data/lib/octocatalog-diff/catalog-diff/cli/options/parser.rb +48 -0
  78. data/lib/octocatalog-diff/catalog-diff/cli/options/pass_env_vars.rb +19 -0
  79. data/lib/octocatalog-diff/catalog-diff/cli/options/pe_enc_ssl_ca.rb +15 -0
  80. data/lib/octocatalog-diff/catalog-diff/cli/options/pe_enc_ssl_client_cert.rb +14 -0
  81. data/lib/octocatalog-diff/catalog-diff/cli/options/pe_enc_ssl_client_key.rb +14 -0
  82. data/lib/octocatalog-diff/catalog-diff/cli/options/pe_enc_token.rb +15 -0
  83. data/lib/octocatalog-diff/catalog-diff/cli/options/pe_enc_token_file.rb +17 -0
  84. data/lib/octocatalog-diff/catalog-diff/cli/options/pe_enc_url.rb +19 -0
  85. data/lib/octocatalog-diff/catalog-diff/cli/options/puppet_binary.rb +16 -0
  86. data/lib/octocatalog-diff/catalog-diff/cli/options/puppet_master.rb +16 -0
  87. data/lib/octocatalog-diff/catalog-diff/cli/options/puppet_master_api_version.rb +20 -0
  88. data/lib/octocatalog-diff/catalog-diff/cli/options/puppet_master_ssl_ca.rb +19 -0
  89. data/lib/octocatalog-diff/catalog-diff/cli/options/puppet_master_ssl_client_cert.rb +19 -0
  90. data/lib/octocatalog-diff/catalog-diff/cli/options/puppet_master_ssl_client_key.rb +19 -0
  91. data/lib/octocatalog-diff/catalog-diff/cli/options/puppetdb_ssl_ca.rb +15 -0
  92. data/lib/octocatalog-diff/catalog-diff/cli/options/puppetdb_ssl_client_cert.rb +14 -0
  93. data/lib/octocatalog-diff/catalog-diff/cli/options/puppetdb_ssl_client_key.rb +14 -0
  94. data/lib/octocatalog-diff/catalog-diff/cli/options/puppetdb_ssl_client_password.rb +14 -0
  95. data/lib/octocatalog-diff/catalog-diff/cli/options/puppetdb_ssl_client_password_file.rb +13 -0
  96. data/lib/octocatalog-diff/catalog-diff/cli/options/puppetdb_url.rb +18 -0
  97. data/lib/octocatalog-diff/catalog-diff/cli/options/quiet.rb +12 -0
  98. data/lib/octocatalog-diff/catalog-diff/cli/options/retry_failed_catalog.rb +13 -0
  99. data/lib/octocatalog-diff/catalog-diff/cli/options/safe_to_delete_cached_master_dir.rb +15 -0
  100. data/lib/octocatalog-diff/catalog-diff/cli/options/storeconfigs.rb +12 -0
  101. data/lib/octocatalog-diff/catalog-diff/cli/options/suppress_absent_file_details.rb +14 -0
  102. data/lib/octocatalog-diff/catalog-diff/cli/options/to_from_branch.rb +16 -0
  103. data/lib/octocatalog-diff/catalog-diff/cli/printer.rb +52 -0
  104. data/lib/octocatalog-diff/catalog-diff/differ.rb +615 -0
  105. data/lib/octocatalog-diff/catalog-diff/display.rb +125 -0
  106. data/lib/octocatalog-diff/catalog-diff/display/json.rb +25 -0
  107. data/lib/octocatalog-diff/catalog-diff/display/text.rb +452 -0
  108. data/lib/octocatalog-diff/catalog-util/bootstrap.rb +145 -0
  109. data/lib/octocatalog-diff/catalog-util/builddir.rb +289 -0
  110. data/lib/octocatalog-diff/catalog-util/cached_master_directory.rb +169 -0
  111. data/lib/octocatalog-diff/catalog-util/command.rb +96 -0
  112. data/lib/octocatalog-diff/catalog-util/enc.rb +77 -0
  113. data/lib/octocatalog-diff/catalog-util/enc/noop.rb +22 -0
  114. data/lib/octocatalog-diff/catalog-util/enc/pe.rb +99 -0
  115. data/lib/octocatalog-diff/catalog-util/enc/pe/v1.rb +61 -0
  116. data/lib/octocatalog-diff/catalog-util/enc/script.rb +88 -0
  117. data/lib/octocatalog-diff/catalog-util/facts.rb +89 -0
  118. data/lib/octocatalog-diff/catalog-util/fileresources.rb +83 -0
  119. data/lib/octocatalog-diff/catalog-util/git.rb +65 -0
  120. data/lib/octocatalog-diff/catalog.rb +209 -0
  121. data/lib/octocatalog-diff/catalog/computed.rb +205 -0
  122. data/lib/octocatalog-diff/catalog/json.rb +30 -0
  123. data/lib/octocatalog-diff/catalog/noop.rb +19 -0
  124. data/lib/octocatalog-diff/catalog/puppetdb.rb +82 -0
  125. data/lib/octocatalog-diff/catalog/puppetmaster.rb +121 -0
  126. data/lib/octocatalog-diff/external/pson/LICENSE +17 -0
  127. data/lib/octocatalog-diff/external/pson/README.md +20 -0
  128. data/lib/octocatalog-diff/external/pson/common.rb +370 -0
  129. data/lib/octocatalog-diff/external/pson/pure.rb +15 -0
  130. data/lib/octocatalog-diff/external/pson/pure/generator.rb +395 -0
  131. data/lib/octocatalog-diff/external/pson/pure/parser.rb +307 -0
  132. data/lib/octocatalog-diff/external/pson/version.rb +8 -0
  133. data/lib/octocatalog-diff/facts.rb +125 -0
  134. data/lib/octocatalog-diff/facts/json.rb +20 -0
  135. data/lib/octocatalog-diff/facts/puppetdb.rb +59 -0
  136. data/lib/octocatalog-diff/facts/yaml.rb +29 -0
  137. data/lib/octocatalog-diff/puppetdb.rb +163 -0
  138. data/lib/octocatalog-diff/util/colored.rb +20 -0
  139. data/lib/octocatalog-diff/util/httparty.rb +158 -0
  140. data/lib/octocatalog-diff/util/parallel.rb +170 -0
  141. data/lib/octocatalog-diff/util/puppetversion.rb +24 -0
  142. data/lib/octocatalog-diff/version.rb +7 -0
  143. metadata +386 -0
@@ -0,0 +1,12 @@
1
+ # Options used when comparing catalogs - tags are generally ignored; you can un-ignore them.
2
+ # @param parser [OptionParser object] The OptionParser argument
3
+ # @param options [Hash] Options hash being constructed; this is modified in this method.
4
+ OctocatalogDiff::CatalogDiff::Cli::Options::Option.newoption(:include_tags) do
5
+ has_weight 140
6
+
7
+ def parse(parser, options)
8
+ parser.on('--[no-]include-tags', 'Include changes to tags in the diff output') do |x|
9
+ options[:include_tags] = x
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,12 @@
1
+ # Allow override of the branch that is cached. This defaults to 'origin/master'.
2
+ # @param parser [OptionParser object] The OptionParser argument
3
+ # @param options [Hash] Options hash being constructed; this is modified in this method.
4
+ OctocatalogDiff::CatalogDiff::Cli::Options::Option.newoption(:master_cache_branch) do
5
+ has_weight 160
6
+
7
+ def parse(parser, options)
8
+ parser.on('--master-cache-branch BRANCH', 'Branch to cache') do |x|
9
+ options[:master_cache_branch] = x
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,15 @@
1
+ # Output file option
2
+ # @param parser [OptionParser object] The OptionParser argument
3
+ # @param options [Hash] Options hash being constructed; this is modified in this method.
4
+ OctocatalogDiff::CatalogDiff::Cli::Options::Option.newoption(:output_file) do
5
+ has_weight 90
6
+
7
+ def parse(parser, options)
8
+ parser.on('--output-file FILENAME', '-o', 'Output results into FILENAME') do |filename|
9
+ path = File.absolute_path(filename)
10
+ options[:output_file] = path
11
+ options[:format] = :text
12
+ options[:colors] = false
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,15 @@
1
+ # Output format option
2
+ # @param parser [OptionParser object] The OptionParser argument
3
+ # @param options [Hash] Options hash being constructed; this is modified in this method.
4
+ OctocatalogDiff::CatalogDiff::Cli::Options::Option.newoption(:output_format) do
5
+ has_weight 100
6
+
7
+ def parse(parser, options)
8
+ valid = %w(text json)
9
+ parser.on('--output-format FORMAT', "Output format: #{valid.join(',')}") do |fmt|
10
+ raise ArgumentError, "Invalid format. Must be one of: #{valid.join(',')}" unless valid.include?(fmt)
11
+ options[:format] = fmt.to_sym
12
+ options[:format] = :color_text if options[:format] == :text && options[:colors]
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,12 @@
1
+ # Disable or enable parallel processing of catalogs.
2
+ # @param parser [OptionParser object] The OptionParser argument
3
+ # @param options [Hash] Options hash being constructed; this is modified in this method.
4
+ OctocatalogDiff::CatalogDiff::Cli::Options::Option.newoption(:parallel) do
5
+ has_weight 300
6
+
7
+ def parse(parser, options)
8
+ parser.on('--[no-]parallel', 'Enable or disable parallel processing') do |x|
9
+ options[:parallel] = x
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,48 @@
1
+ # Enable future parser for both branches or for just one
2
+ # @param parser [OptionParser object] The OptionParser argument
3
+ # @param options [Hash] Options hash being constructed; this is modified in this method.
4
+ OctocatalogDiff::CatalogDiff::Cli::Options::Option.newoption(:parser) do
5
+ has_weight 270
6
+
7
+ def parse(parser, options)
8
+ supported_parsers = %w(default future)
9
+ parser_str = supported_parsers.join(', ')
10
+
11
+ # --parser sets both parser-to and parser-from
12
+ parser.on('--parser PARSER_NAME', "Specify parser (#{parser_str})") do |x|
13
+ unless supported_parsers.include?(x)
14
+ raise ArgumentError, "--parser must be one of: #{parser_str}"
15
+ end
16
+ unless options[:parser_from].nil? || options[:parser_from] == x.to_sym
17
+ raise ArgumentError, '--parser conflicts with --parser-from'
18
+ end
19
+ unless options[:parser_to].nil? || options[:parser_to] == x.to_sym
20
+ raise ArgumentError, '--parser conflicts with --parser-to'
21
+ end
22
+ options[:parser_from] = x.to_sym
23
+ options[:parser_to] = x.to_sym
24
+ end
25
+
26
+ # --parser-from sets parser for the 'from' branch
27
+ parser.on('--parser-from PARSER_NAME', "Specify parser (#{parser_str})") do |x|
28
+ unless supported_parsers.include?(x)
29
+ raise ArgumentError, "--parser-from must be one of: #{parser_str}"
30
+ end
31
+ unless options[:parser_from].nil? || options[:parser_from] == x.to_sym
32
+ raise ArgumentError, '--parser incompatible with --parser-from'
33
+ end
34
+ options[:parser_from] = x.to_sym
35
+ end
36
+
37
+ # --parser-to sets parser for the 'to' branch
38
+ parser.on('--parser-to PARSER_NAME', "Specify parser (#{parser_str})") do |x|
39
+ unless supported_parsers.include?(x)
40
+ raise ArgumentError, "--parser-to must be one of: #{parser_str}"
41
+ end
42
+ unless options[:parser_to].nil? || options[:parser_to] == x.to_sym
43
+ raise ArgumentError, '--parser incompatible with --parser-to'
44
+ end
45
+ options[:parser_to] = x.to_sym
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,19 @@
1
+ # One or more environment variables that should be made available to the Puppet binary when parsing
2
+ # the catalog. For example, --pass-env-vars FOO,BAR will make the FOO and BAR environment variables
3
+ # available. Setting these variables is your responsibility outside of octocatalog-diff.
4
+ # @param parser [OptionParser object] The OptionParser argument
5
+ # @param options [Hash] Options hash being constructed; this is modified in this method.
6
+ OctocatalogDiff::CatalogDiff::Cli::Options::Option.newoption(:pass_env_vars) do
7
+ has_weight 600
8
+
9
+ def parse(parser, options)
10
+ descriptive_text = 'Environment variables to pass'
11
+ parser.on('--pass-env-vars VAR1[,VAR2[,...]]', Array, descriptive_text) do |res|
12
+ options[:pass_env_vars] ||= []
13
+ res.each do |item|
14
+ raise ArgumentError, "Environment variable #{item} must be in alphanumeric format!" unless item =~ /^\w+$/
15
+ options[:pass_env_vars] << item
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,15 @@
1
+ # Specify the CA certificate for the Puppet Enterprise ENC. If specified, this will enable SSL verification
2
+ # that the certificate being presented has been signed by this CA, and that the common name
3
+ # matches the name you are using to connecting.
4
+ # @param parser [OptionParser object] The OptionParser argument
5
+ # @param options [Hash] Options hash being constructed; this is modified in this method.
6
+ OctocatalogDiff::CatalogDiff::Cli::Options::Option.newoption(:pe_enc_ssl_ca) do
7
+ has_weight 352
8
+
9
+ def parse(parser, options)
10
+ parser.on('--pe-enc-ssl-ca FILENAME', 'CA certificate that signed the ENC API certificate') do |x|
11
+ raise Errno::ENOENT, "--pe-enc-ssl-ca #{x} does not point to a valid file" unless File.file?(x)
12
+ options[:pe_enc_ssl_ca] = x
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,14 @@
1
+ # Specify the client certificate for connecting to the Puppet Enterprise ENC. This must be specified along with
2
+ # --pe-enc-ssl-client-key in order to work.
3
+ # @param parser [OptionParser object] The OptionParser argument
4
+ # @param options [Hash] Options hash being constructed; this is modified in this method.
5
+ OctocatalogDiff::CatalogDiff::Cli::Options::Option.newoption(:pe_enc_ssl_client_cert) do
6
+ has_weight 353
7
+
8
+ def parse(parser, options)
9
+ parser.on('--pe-enc-ssl-client-cert FILENAME', 'SSL client certificate to connect to PE ENC') do |x|
10
+ raise Errno::ENOENT, "--pe-enc-ssl-client-cert #{x} does not point to a valid file" unless File.file?(x)
11
+ options[:pe_enc_ssl_client_cert] = File.read(x)
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ # Specify the client key for connecting to Puppet Enterprise ENC. This must be specified along with
2
+ # --pe-enc-ssl-client-cert in order to work.
3
+ # @param parser [OptionParser object] The OptionParser argument
4
+ # @param options [Hash] Options hash being constructed; this is modified in this method.
5
+ OctocatalogDiff::CatalogDiff::Cli::Options::Option.newoption(:pe_enc_ssl_client_key) do
6
+ has_weight 354
7
+
8
+ def parse(parser, options)
9
+ parser.on('--pe-enc-ssl-client-key FILENAME', 'SSL client key to connect to PE ENC') do |x|
10
+ raise Errno::ENOENT, "--pe-enc-ssl-client-key #{x} does not point to a valid file" unless File.file?(x)
11
+ options[:pe_enc_ssl_client_key] = File.read(x)
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,15 @@
1
+ # Specify the access token to access the Puppet Enterprise ENC. Refer to
2
+ # https://docs.puppet.com/pe/latest/nc_forming_requests.html#authentication for
3
+ # details on generating and obtaining a token. Use this option to specify the text
4
+ # of the token. (Use --pe-enc-token-file to read the content of the token from a file.)
5
+ # @param parser [OptionParser object] The OptionParser argument
6
+ # @param options [Hash] Options hash being constructed; this is modified in this method.
7
+ OctocatalogDiff::CatalogDiff::Cli::Options::Option.newoption(:pe_enc_token) do
8
+ has_weight 351
9
+
10
+ def parse(parser, options)
11
+ parser.on('--pe-enc-token TOKEN', 'Token to access the Puppet Enterprise ENC API') do |token|
12
+ options[:pe_enc_token] = token
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,17 @@
1
+ # Specify the access token to access the Puppet Enterprise ENC. Refer to
2
+ # https://docs.puppet.com/pe/latest/nc_forming_requests.html#authentication for
3
+ # details on generating and obtaining a token. Use this option if the token is stored
4
+ # in a file, to read the content of the token from the file.
5
+ # @param parser [OptionParser object] The OptionParser argument
6
+ # @param options [Hash] Options hash being constructed; this is modified in this method.
7
+ OctocatalogDiff::CatalogDiff::Cli::Options::Option.newoption(:pe_enc_token_file) do
8
+ has_weight 351
9
+
10
+ def parse(parser, options)
11
+ parser.on('--pe-enc-token-file PATH', 'Path containing token for PE node classifier, relative or absolute') do |x|
12
+ proposed_token_path = x.start_with?('/') ? x : File.join(options[:basedir], x)
13
+ raise Errno::ENOENT, "Provided token (#{proposed_token_path}) does not exist" unless File.file?(proposed_token_path)
14
+ options[:pe_enc_token] = File.read(proposed_token_path)
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,19 @@
1
+ require 'uri'
2
+
3
+ # Specify the URL to the Puppet Enterprise ENC API. By default, the node classifier service
4
+ # listens on port 4433 and all endpoints are relative to the /classifier-api/ path. That means
5
+ # the likely value for this option will be something like:
6
+ # https://your-pe-console-server:4433/classifier-api
7
+ # @param parser [OptionParser object] The OptionParser argument
8
+ # @param options [Hash] Options hash being constructed; this is modified in this method.
9
+ OctocatalogDiff::CatalogDiff::Cli::Options::Option.newoption(:pe_enc_url) do
10
+ has_weight 350
11
+
12
+ def parse(parser, options)
13
+ parser.on('--pe-enc-url URL', 'Base URL for Puppet Enterprise ENC endpoint') do |url|
14
+ obj = URI.parse(url)
15
+ raise ArgumentError, 'PE ENC URL must be https' unless obj.is_a?(URI::HTTPS)
16
+ options[:pe_enc_url] = url
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,16 @@
1
+ # Set --puppet-binary, --to-puppet-binary, --from-puppet-binary
2
+ # @param parser [OptionParser object] The OptionParser argument
3
+ # @param options [Hash] Options hash being constructed; this is modified in this method.
4
+ OctocatalogDiff::CatalogDiff::Cli::Options::Option.newoption(:puppet_binary) do
5
+ has_weight 300
6
+
7
+ def parse(parser, options)
8
+ OctocatalogDiff::CatalogDiff::Cli::Options.option_globally_or_per_branch(
9
+ parser: parser,
10
+ options: options,
11
+ cli_name: 'puppet-binary',
12
+ option_name: 'puppet_binary',
13
+ desc: 'Full path to puppet binary'
14
+ )
15
+ end
16
+ end
@@ -0,0 +1,16 @@
1
+ # Specify the hostname, or hostname:port, for the Puppet Master.
2
+ # @param parser [OptionParser object] The OptionParser argument
3
+ # @param options [Hash] Options hash being constructed; this is modified in this method.
4
+ OctocatalogDiff::CatalogDiff::Cli::Options::Option.newoption(:puppet_master) do
5
+ has_weight 320
6
+
7
+ def parse(parser, options)
8
+ OctocatalogDiff::CatalogDiff::Cli::Options.option_globally_or_per_branch(
9
+ parser: parser,
10
+ options: options,
11
+ cli_name: 'puppet-master',
12
+ option_name: 'puppet_master',
13
+ desc: 'Hostname or Hostname:PortNumber for Puppet Master'
14
+ )
15
+ end
16
+ end
@@ -0,0 +1,20 @@
1
+ # Specify the API version to use for the Puppet Master. This makes it possible to authenticate to a
2
+ # version 3.x PuppetMaster by specifying the API version as 2, or for a version 4.x PuppetMaster by
3
+ # specifying API version as 3.
4
+ # @param parser [OptionParser object] The OptionParser argument
5
+ # @param options [Hash] Options hash being constructed; this is modified in this method.
6
+ OctocatalogDiff::CatalogDiff::Cli::Options::Option.newoption(:puppet_master_api_version) do
7
+ has_weight 320
8
+
9
+ def parse(parser, options)
10
+ OctocatalogDiff::CatalogDiff::Cli::Options.option_globally_or_per_branch(
11
+ parser: parser,
12
+ options: options,
13
+ cli_name: 'puppet-master-api-version',
14
+ option_name: 'puppet_master_api_version',
15
+ desc: 'Puppet Master API version (2 for Puppet 3.x, 3 for Puppet 4.x)',
16
+ validator: ->(x) { x =~ /^[23]$/ || raise(ArgumentError, 'Only API versions 2 and 3 are supported') },
17
+ translator: ->(x) { x.to_i }
18
+ )
19
+ end
20
+ end
@@ -0,0 +1,19 @@
1
+ # Specify the CA certificate for Puppet Master. If specified, this will enable SSL verification
2
+ # that the certificate being presented has been signed by this CA, and that the common name
3
+ # matches the name you are using to connecting.
4
+ # @param parser [OptionParser object] The OptionParser argument
5
+ # @param options [Hash] Options hash being constructed; this is modified in this method.
6
+ OctocatalogDiff::CatalogDiff::Cli::Options::Option.newoption(:puppet_master_ssl_ca) do
7
+ has_weight 320
8
+
9
+ def parse(parser, options)
10
+ OctocatalogDiff::CatalogDiff::Cli::Options.option_globally_or_per_branch(
11
+ parser: parser,
12
+ options: options,
13
+ cli_name: 'puppet-master-ssl-ca',
14
+ option_name: 'puppet_master_ssl_ca',
15
+ desc: 'Full path to CA certificate that signed the Puppet Master certificate',
16
+ validator: ->(x) { File.file?(x) || raise(Errno::ENOENT, "SSL CA cert #{x} does not exist") }
17
+ )
18
+ end
19
+ end
@@ -0,0 +1,19 @@
1
+ # Specify the SSL client certificate for Puppet Master. This makes it possible to authenticate with a
2
+ # client certificate keypair to the Puppet Master.
3
+ # @param parser [OptionParser object] The OptionParser argument
4
+ # @param options [Hash] Options hash being constructed; this is modified in this method.
5
+ OctocatalogDiff::CatalogDiff::Cli::Options::Option.newoption(:puppet_master_ssl_client_cert) do
6
+ has_weight 320
7
+
8
+ def parse(parser, options)
9
+ OctocatalogDiff::CatalogDiff::Cli::Options.option_globally_or_per_branch(
10
+ parser: parser,
11
+ options: options,
12
+ cli_name: 'puppet-master-ssl-client-cert',
13
+ option_name: 'puppet_master_ssl_client_cert',
14
+ desc: 'Full path to certificate file for SSL client auth to Puppet Master',
15
+ validator: ->(x) { File.file?(x) || raise(Errno::ENOENT, "Suggested certificate #{x} does not exist") },
16
+ translator: ->(x) { File.read(x) }
17
+ )
18
+ end
19
+ end
@@ -0,0 +1,19 @@
1
+ # Specify the SSL client key for Puppet Master. This makes it possible to authenticate with a
2
+ # client certificate keypair to the Puppet Master.
3
+ # @param parser [OptionParser object] The OptionParser argument
4
+ # @param options [Hash] Options hash being constructed; this is modified in this method.
5
+ OctocatalogDiff::CatalogDiff::Cli::Options::Option.newoption(:puppet_master_ssl_client_key) do
6
+ has_weight 320
7
+
8
+ def parse(parser, options)
9
+ OctocatalogDiff::CatalogDiff::Cli::Options.option_globally_or_per_branch(
10
+ parser: parser,
11
+ options: options,
12
+ cli_name: 'puppet-master-ssl-client-key',
13
+ option_name: 'puppet_master_ssl_client_key',
14
+ desc: 'Full path to key file for SSL client auth to Puppet Master',
15
+ validator: ->(x) { File.file?(x) || raise(Errno::ENOENT, "Suggested key #{x} does not exist") },
16
+ translator: ->(x) { File.read(x) }
17
+ )
18
+ end
19
+ end
@@ -0,0 +1,15 @@
1
+ # Specify the CA certificate for PuppetDB. If specified, this will enable SSL verification
2
+ # that the certificate being presented has been signed by this CA, and that the common name
3
+ # matches the name you are using to connecting.
4
+ # @param parser [OptionParser object] The OptionParser argument
5
+ # @param options [Hash] Options hash being constructed; this is modified in this method.
6
+ OctocatalogDiff::CatalogDiff::Cli::Options::Option.newoption(:puppetdb_ssl_ca) do
7
+ has_weight 310
8
+
9
+ def parse(parser, options)
10
+ parser.on('--puppetdb-ssl-ca FILENAME', 'CA certificate that signed the PuppetDB certificate') do |x|
11
+ raise Errno::ENOENT, "--puppetdb-ssl-ca #{x} does not point to a valid file" unless File.file?(x)
12
+ options[:puppetdb_ssl_ca] = x
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,14 @@
1
+ # Specify the client certificate for connecting to PuppetDB. This must be specified along with
2
+ # --puppetdb-ssl-client-key in order to work.
3
+ # @param parser [OptionParser object] The OptionParser argument
4
+ # @param options [Hash] Options hash being constructed; this is modified in this method.
5
+ OctocatalogDiff::CatalogDiff::Cli::Options::Option.newoption(:puppetdb_ssl_client_cert) do
6
+ has_weight 310
7
+
8
+ def parse(parser, options)
9
+ parser.on('--puppetdb-ssl-client-cert FILENAME', 'SSL client certificate to connect to PuppetDB') do |x|
10
+ raise Errno::ENOENT, "--puppetdb-ssl-client-cert #{x} does not point to a valid file" unless File.file?(x)
11
+ options[:puppetdb_ssl_client_cert] = File.read(x)
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ # Specify the client key for connecting to PuppetDB. This must be specified along with
2
+ # --puppetdb-ssl-client-cert in order to work.
3
+ # @param parser [OptionParser object] The OptionParser argument
4
+ # @param options [Hash] Options hash being constructed; this is modified in this method.
5
+ OctocatalogDiff::CatalogDiff::Cli::Options::Option.newoption(:puppetdb_ssl_client_key) do
6
+ has_weight 310
7
+
8
+ def parse(parser, options)
9
+ parser.on('--puppetdb-ssl-client-key FILENAME', 'SSL client key to connect to PuppetDB') do |x|
10
+ raise Errno::ENOENT, "--puppetdb-ssl-client-key #{x} does not point to a valid file" unless File.file?(x)
11
+ options[:puppetdb_ssl_client_key] = File.read(x)
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ # Specify the password for a PEM or PKCS12 private key on the command line.
2
+ # Note that `--puppetdb-ssl-client-password-file` is slightly more secure because
3
+ # the text of the password won't appear in the process list.
4
+ # @param parser [OptionParser object] The OptionParser argument
5
+ # @param options [Hash] Options hash being constructed; this is modified in this method.
6
+ OctocatalogDiff::CatalogDiff::Cli::Options::Option.newoption(:puppetdb_ssl_client_cert) do
7
+ has_weight 310
8
+
9
+ def parse(parser, options)
10
+ parser.on('--puppetdb-ssl-client-password PASSWORD', 'Password for SSL client key to connect to PuppetDB') do |x|
11
+ options[:puppetdb_ssl_client_password] = x
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,13 @@
1
+ # Specify the password for a PEM or PKCS12 private key, by reading it from a file.
2
+ # @param parser [OptionParser object] The OptionParser argument
3
+ # @param options [Hash] Options hash being constructed; this is modified in this method.
4
+ OctocatalogDiff::CatalogDiff::Cli::Options::Option.newoption(:puppetdb_ssl_client_password_file) do
5
+ has_weight 310
6
+
7
+ def parse(parser, options)
8
+ parser.on('--puppetdb-ssl-client-password-file FILENAME', 'Read password for SSL client key from a file') do |x|
9
+ raise Errno::ENOENT, "--puppetdb-ssl-client-password-file #{x} does not point to a valid file" unless File.file?(x)
10
+ options[:puppetdb_ssl_client_password] = File.read(x)
11
+ end
12
+ end
13
+ end