├── .foodcritic ├── .gitignore ├── .rubocop.yml ├── .travis.yml ├── Berksfile ├── CONTRIBUTING.md ├── Gemfile ├── LICENSE ├── NOTICE ├── README.md ├── Thorfile ├── Vagrantfile ├── attributes ├── _configure.rb ├── _install.rb └── _user_management.rb ├── chefignore ├── docs ├── README.md ├── attributes.md ├── contributing.md ├── databags.md ├── recipes.md ├── resources.md └── vagrant.md ├── libraries ├── alerts.rb ├── authentication.rb ├── conf.rb ├── conf_template.rb ├── databag.rb ├── lwrp.rb ├── matchers.rb ├── outputs.rb ├── passive_sensitive.rb ├── rc4.rb ├── recipe_utils.rb ├── roles.rb ├── splunk_app.rb ├── splunk_password.rb ├── splunk_template.rb └── unit_converter.rb ├── metadata.rb ├── providers ├── forwarder_monitors.rb └── sh_cluster.rb ├── recipes ├── _configure.rb ├── _configure_alerts.rb ├── _configure_apps.rb ├── _configure_authentication.rb ├── _configure_indexes.rb ├── _configure_inputs.rb ├── _configure_logs.rb ├── _configure_outputs.rb ├── _configure_roles.rb ├── _configure_secret.rb ├── _configure_server.rb ├── _configure_shc_alerts.rb ├── _configure_shc_authentication.rb ├── _configure_shc_outputs.rb ├── _configure_shc_roles.rb ├── _configure_ui.rb ├── _generate_password.rb ├── _install.rb ├── _install_server.rb ├── _migrate_forwarder.rb ├── _restart_marker.rb ├── _start.rb ├── _user_management.rb ├── cluster_master.rb ├── cluster_slave.rb ├── default.rb ├── forwarder.rb ├── heavy_forwarder.rb ├── image_prep.rb ├── license_server.rb ├── search_head.rb ├── server.rb ├── server_install_only.rb ├── shc_captain.rb ├── shc_deployer.rb ├── shc_remove_search_head.rb └── shc_search_head.rb ├── resources ├── forwarder_monitors.rb └── sh_cluster.rb ├── spec ├── cookbooks │ └── cerner_splunk_test │ │ ├── attributes │ │ └── default.rb │ │ ├── metadata.rb │ │ ├── providers │ │ └── lwrp.rb │ │ ├── recipes │ │ ├── configure_guids.rb │ │ ├── default.rb │ │ └── install_libarchive.rb │ │ ├── resources │ │ └── lwrp.rb │ │ └── templates │ │ └── default │ │ ├── access.log.erb │ │ └── instance.cfg.erb └── unit │ ├── libraries │ ├── recipe_utils_spec.rb │ ├── splunk_app_spec.rb │ ├── splunk_password_spec.rb │ └── unit_converter_spec.rb │ ├── recipes │ ├── _configure_apps_spec.rb │ ├── _configure_indexes_spec.rb │ ├── _configure_logs_spec.rb │ ├── _configure_outputs_spec.rb │ ├── _configure_secret_spec.rb │ ├── _configure_server_spec.rb │ ├── _configure_shc_alerts_spec.rb │ ├── _configure_shc_authentication_spec.rb │ ├── _configure_shc_outputs_spec.rb │ ├── _configure_shc_roles_spec.rb │ ├── _configure_spec.rb │ ├── _install_spec.rb │ ├── _migrate_forwarder_spec.rb │ ├── _restart_marker_spec.rb │ ├── _start_spec.rb │ ├── _user_management_spec.rb │ ├── forwarder_spec.rb │ ├── heavy_forwarder_spec.rb │ ├── server_install_only_spec.rb │ ├── shc_captain_spec.rb │ ├── shc_deployer_spec.rb │ ├── shc_remove_search_head_spec.rb │ └── shc_search_head_spec.rb │ ├── resources │ └── sh_cluster_spec.rb │ └── spec_helper.rb ├── templates └── default │ └── generic.conf.erb └── vagrant_repo ├── .chef └── knife.rb ├── alternative_encrypted_data_bag_secret ├── apps └── my_app │ ├── default │ ├── app.conf │ └── data │ │ └── ui │ │ ├── nav │ │ └── default.xml │ │ └── views │ │ └── lorem_ipsum.xml │ └── metadata │ └── default.meta ├── clients ├── c1_master.json ├── c1_search.json ├── c1_slave1.json ├── c1_slave2.json ├── c1_slave3.json ├── c2_boot1.json ├── c2_boot2.json ├── c2_captain.json ├── c2_deployer.json ├── c2_newnode.json ├── f_debian.json ├── f_default.json ├── f_heavy.json ├── f_win2012r2.json ├── knife_workstation.json ├── s1_master.json ├── s1_slave1.json ├── s1_slave2.json ├── s1_slave3.json ├── s2_search.json ├── s2_slave1.json ├── s2_slave2.json ├── s_license.json └── s_standalone.json ├── data_bags └── cerner_splunk │ ├── alerts-vagrant.json │ ├── authnz-vagrant.json │ ├── cluster-apps-vagrant.json │ ├── cluster-standalone.json │ ├── cluster-vagrant-site1.json │ ├── cluster-vagrant-site2.json │ ├── cluster-vagrant.json │ ├── indexes-vagrant.json │ ├── license-vagrant.json │ ├── license_secrets.json │ ├── license_secrets_keys.json │ ├── multisiteUS.json │ ├── passwords.json │ ├── passwords_keys.json │ └── standalone_passwords.json ├── encrypted_data_bag_secret ├── environments ├── splunk_license.json ├── splunk_server.json ├── splunk_site1.json ├── splunk_site2.json ├── splunk_standalone.json └── splunkf_standalone.json ├── fake-key.pem ├── files ├── lookups │ ├── index-owners.csv │ └── test.txt └── test_app.tgz ├── nodes ├── c1_master.json ├── c1_search.json ├── c1_slave1.json ├── c1_slave2.json ├── c1_slave3.json ├── c2_boot1.json ├── c2_boot2.json ├── c2_captain.json ├── c2_deployer.json ├── c2_newnode.json ├── f_debian.json ├── f_default.json ├── f_heavy.json ├── f_win2012r2.json ├── s1_master.json ├── s1_slave1.json ├── s1_slave2.json ├── s1_slave3.json ├── s2_search.json ├── s2_slave1.json ├── s2_slave2.json ├── s_license.json └── s_standalone.json ├── pems ├── c1_master.pem ├── c1_search.pem ├── c1_slave1.pem ├── c1_slave2.pem ├── c1_slave3.pem ├── c2_boot1.pem ├── c2_boot2.pem ├── c2_captain.pem ├── c2_deployer.pem ├── c2_newnode.pem ├── c3_slave2.pem ├── f_debian.pem ├── f_default.pem ├── f_heavy.pem ├── f_win2012r2.pem ├── s1_master.pem ├── s1_search.pem ├── s1_slave1.pem ├── s1_slave2.pem ├── s1_slave3.pem ├── s2_search.pem ├── s2_slave1.pem ├── s2_slave2.pem ├── s_license.pem └── s_standalone.pem └── roles ├── splunk_mirrors_local.json ├── splunk_monitors.json └── splunk_monitors_windows.json /.foodcritic: -------------------------------------------------------------------------------- 1 | ~FC085 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .vagrant 2 | *~ 3 | *# 4 | .#* 5 | \#*# 6 | .*.sw[a-z] 7 | *.project 8 | .idea/ 9 | *.bak 10 | *.DS_Store 11 | *.un~ 12 | .ruby-version 13 | 14 | # Generated from metadata.rb 15 | metadata.json 16 | 17 | # Generated from berks 18 | Berksfile.lock 19 | 20 | # Bundler 21 | Gemfile.lock 22 | bin/* 23 | .bundle/* 24 | 25 | # Vagrant-Repo 26 | vagrant_repo/Berksfile.lock 27 | vagrant_repo/.chef/syntaxcache 28 | -------------------------------------------------------------------------------- /.rubocop.yml: -------------------------------------------------------------------------------- 1 | AllCops: 2 | TargetRubyVersion: 2.5 3 | Exclude: 4 | - 'Vagrantfile' 5 | - 'Gemfile' 6 | - 'Berksfile' 7 | - 'vendor/**/*' 8 | - '.git/**/*' 9 | 10 | Layout/LineLength: 11 | Enabled: false 12 | 13 | Lint/EmptyWhen: 14 | Enabled: false 15 | 16 | Lint/RaiseException: 17 | Enabled: true 18 | 19 | Lint/StructNewOverride: 20 | Enabled: true 21 | 22 | Metrics/AbcSize: 23 | Enabled: false 24 | 25 | Metrics/BlockLength: 26 | Enabled: false 27 | 28 | Metrics/CyclomaticComplexity: 29 | Max: 8 30 | 31 | Metrics/MethodLength: 32 | Max: 40 33 | 34 | Metrics/PerceivedComplexity: 35 | Max: 9 36 | 37 | Naming/VariableNumber: 38 | Enabled: false 39 | 40 | Style/EachWithObject: 41 | Enabled: false 42 | 43 | Style/HashEachMethods: 44 | Enabled: true 45 | 46 | Style/HashTransformKeys: 47 | Enabled: true 48 | 49 | Style/HashTransformValues: 50 | Enabled: true 51 | 52 | Style/NumericPredicate: 53 | EnforcedStyle: comparison 54 | 55 | Style/SignalException: 56 | EnforcedStyle: semantic 57 | 58 | Style/TernaryParentheses: 59 | Enabled: false 60 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | branches: 2 | except: 3 | - main 4 | language: ruby 5 | cache: bundler 6 | sudo: false 7 | rvm: 8 | - 2.7.5 9 | - 3.0.3 10 | - 3.1.0 11 | addons: 12 | apt: 13 | packages: 14 | - libarchive-dev 15 | script: 16 | - bundle exec rubocop 17 | - bundle exec foodcritic -f any . 18 | - bundle exec rspec 19 | -------------------------------------------------------------------------------- /Berksfile: -------------------------------------------------------------------------------- 1 | source 'https://supermarket.chef.io' 2 | solver :ruby 3 | 4 | metadata 5 | 6 | cookbook 'cerner_splunk_test', path: 'spec/cookbooks/cerner_splunk_test' 7 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Feature Develoment: 2 | 1. Cookbook related Issues should be logged on Github's issue tracker, and are considered to be the source of truth. 3 | 1. Issues will be triaged and marked with an appropriate label (e.g. bug, enhancement, question). 4 | 2. A corresponding internal JIRA could be logged if there needs to be internal discussion or if an internal code review is desired. 5 | 2. The issue should be worked in a branch (Outside of the cerner/cerner_splunk repo) 6 | 3. The feature is pull requested to 'stable' 7 | 1. The feature branch should use as few logical commits as possible with descriptive commit messages (These commits should _**not**_ reference the issue, that will be done when it is merged) 8 | 2. A new pull request should be created referencing the original issue 9 | 4. The pull request is collectively reviewed, gathering comments and must get two or more +1's from reviewers and 1 approver who is a committer to the repo. Any raised comments are then addressed, and re-reviewed. 10 | 5. The issue is marked for the next milestone. 11 | 6. The pull request is merged 12 | 1. Manually, not using the github button so that the fix version of metadata.rb can be incremented in the merge ([reference](https://github.com/cerner/cerner_splunk/issues/41#issuecomment-70569000)) 13 | 2. The merge commit text should reference the Issue and the Pull Request so that both are closed when the merge is pushed. 14 | 15 | # Release Process: 16 | 1. A pull request of the release commit will be made to stable 17 | 1. The release commit should contain an update of metadata.rb's version to the milestone version. 18 | 2. The PR description will summarize what was changed since the last milestone, and propose tag text 19 | 3. The PR will be labeled "release" 20 | 2. Pull request is reviewed with 2 +1s 21 | 3. The pull request is merged 22 | 1. Manually, not using github issues so a fast forward of stable can be done 23 | 2. The annotated tag is created of the reviewed release text 24 | 3. Main is set to the annotated tag 25 | 4. Release to supermarket 26 | 5. Cleanup 27 | 1. The issue and existing milestone is closed 28 | 2. A new milestone is created for the next enhancement version 29 | -------------------------------------------------------------------------------- /Gemfile: -------------------------------------------------------------------------------- 1 | source 'https://rubygems.org' 2 | 3 | # Going forward, these should be updated to the latest versions immediately post release 4 | chefspec_version = '= 9.3.1' 5 | foodcritic_version = '= 16.3.0' 6 | rubocop_version = '= 1.25.0' 7 | 8 | chef_vault_version = '~> 4.0' 9 | 10 | chef_version = if Bundler.current_ruby.on_27? 11 | '= 16.17.18' 12 | elsif Bundler.current_ruby.on_30? 13 | '= 17.10.0' 14 | else 15 | '= 18.1.0' 16 | end 17 | 18 | gem 'berkshelf' 19 | gem 'chef', chef_version 20 | gem 'chef-sugar' 21 | gem 'chef-vault', chef_vault_version 22 | gem 'chefspec', chefspec_version 23 | gem 'foodcritic', foodcritic_version 24 | gem 'rubocop', rubocop_version 25 | gem 'ffi-libarchive' 26 | -------------------------------------------------------------------------------- /NOTICE: -------------------------------------------------------------------------------- 1 | Cerner Splunk Cookbook 2 | Copyright 2012-2017, Cerner Innovation, Inc. 3 | Copyright 2011-2012, BBY Solutions, Inc. 4 | Copyright 2011-2012, Opscode, Inc. 5 | 6 | Licensed under the Apache License, Version 2.0 (the "License"); 7 | you may not use this file except in compliance with the License. 8 | You may obtain a copy of the License at 9 | 10 | http://www.apache.org/licenses/LICENSE-2.0 11 | 12 | Unless required by applicable law or agreed to in writing, software 13 | distributed under the License is distributed on an "AS IS" BASIS, 14 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | See the License for the specific language governing permissions and 16 | limitations under the License. 17 | 18 | This project includes rc4.rb, portions which are from the Ruby-RC4 library 19 | and available under the MIT license. For details, see libraries/rc4.rb. 20 | -------------------------------------------------------------------------------- /Thorfile: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require 'bundler' 4 | require 'bundler/setup' 5 | require 'berkshelf/thor' 6 | -------------------------------------------------------------------------------- /attributes/_configure.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | default['splunk']['config']['host'] = node['ec2'] ? node['ec2']['instance_id'] : (node['fqdn'] || node['machinename'] || node['hostname']) 4 | 5 | default['splunk']['config']['licenses'] = nil 6 | default['splunk']['config']['ui_prefs']['default'] = { 7 | 'dispatch.earliest_time' => '@d', 8 | 'dispatch.latest_time' => 'now', 9 | 'display.prefs.enableMetaData' => 0, 10 | 'display.prefs.showDataSummary' => 0 11 | } 12 | 13 | # References 0 to many cluster configurations (arrays of Strings of data_bag/data_bag_item) 14 | default['splunk']['config']['clusters'] = [] 15 | default['splunk']['config']['roles'] = nil 16 | default['splunk']['config']['authentication'] = nil 17 | 18 | # Attributes used for configuring SH clustering 19 | default['splunk']['bootstrap_shc_member'] = false 20 | # This is only used for SH Clustering identifying address to the management port 21 | default['splunk']['mgmt_host'] = nil 22 | default['splunk']['mgmt_interface'] = node['network']['default_interface'] 23 | 24 | default['splunk']['free_license'] = false 25 | 26 | default['splunk']['main_project_index'] = nil 27 | default['splunk']['monitors'] = [] 28 | default['splunk']['apps'] = {} 29 | default['splunk']['logs'] = {} 30 | 31 | default['splunk']['config']['assumed_index'] = 'main' 32 | 33 | # Attribute used to point a heavy forwarder to license master 34 | default['splunk']['heavy_forwarder']['use_license_uri'] = false 35 | 36 | # Disable site awareness for multisite clustering. 37 | default['splunk']['forwarder_site'] = 'site0' 38 | 39 | # Give options to set splunk enable boot-start arguments 40 | default['splunk']['boot_start_args'] = 41 | if platform_family? 'rhel', 'fedora', 'amazon' 42 | case node['platform_version'].to_i 43 | when 6 44 | '-systemd-managed 0' 45 | when 7, 8 46 | '-systemd-managed 1' 47 | else 48 | '-systemd-managed 0' 49 | end 50 | else 51 | '-systemd-managed 0' 52 | end 53 | 54 | # Default systemd file location based on default systemd unit file name 55 | default['splunk']['systemd_file_location'] = '/etc/systemd/system/splunk.service' 56 | default['splunk']['systemd_unit_file_name'] = 'splunk' 57 | default['splunk']['config']['sslPassword'] = 'password' 58 | -------------------------------------------------------------------------------- /attributes/_install.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | # Put this here to initialize the run state so we don't have to check it everywhere 4 | node.run_state['cerner_splunk'] ||= {} # ~FC046 5 | 6 | default['splunk']['node_type'] = nil 7 | default['splunk']['cleanup'] = true 8 | 9 | default['splunk']['external_config_directory'] = 10 | if node['platform_family'] == 'windows' 11 | "#{ENV['PROGRAMDATA']}/splunk" 12 | else 13 | '/etc/splunk' 14 | end 15 | 16 | default['splunk']['package']['version'] = '9.0.5' 17 | default['splunk']['package']['build'] = 'e9494146ae5c' 18 | default['splunk']['is_cloud'] = false 19 | default['splunk']['package']['base_url'] = 'https://download.splunk.com/products' 20 | default['splunk']['package']['platform'] = node['os'] 21 | 22 | # Ignore another splunk artifact installed on a node. This is for when you want to install the universal forwarder alongisde an instance of Splunk Enterprise. 23 | default['splunk']['ignore_already_installed_instance'] = false 24 | -------------------------------------------------------------------------------- /attributes/_user_management.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | # Do not override these 4 | if node['platform_family'] == 'windows' 5 | default['splunk']['user'] = 'SYSTEM' 6 | default['splunk']['group'] = 'SYSTEM' 7 | else 8 | default['splunk']['user'] = 'splunk' 9 | default['splunk']['group'] = 'splunk' 10 | end 11 | 12 | # This attribute you can add splunk to additional groups 13 | default['splunk']['groups'] = [] 14 | # This attribute you can remove splunk from additional groups (Chef 11+ only) 15 | default['splunk']['exclude_groups'] = %w[root wheel admin] 16 | 17 | # This is Splunk's recommendation for open file limit 18 | # See: http://docs.splunk.com/Documentation/Splunk/6.0.1/Troubleshooting/ulimitErrors 19 | default['splunk']['limits']['open_files'] = '8192' 20 | -------------------------------------------------------------------------------- /chefignore: -------------------------------------------------------------------------------- 1 | # Put files/directories that should be ignored in this file when uploading 2 | # or sharing to the community site. 3 | # Lines that start with '# ' are comments. 4 | 5 | # OS generated files # 6 | ###################### 7 | .DS_Store 8 | Icon? 9 | nohup.out 10 | ehthumbs.db 11 | Thumbs.db 12 | 13 | # SASS # 14 | ######## 15 | .sass-cache 16 | 17 | # EDITORS # 18 | ########### 19 | \#* 20 | .#* 21 | *~ 22 | *.sw[a-z] 23 | *.bak 24 | REVISION 25 | TAGS* 26 | tmtags 27 | *_flymake.* 28 | *_flymake 29 | *.tmproj 30 | .project 31 | .settings 32 | mkmf.log 33 | 34 | ## COMPILED ## 35 | ############## 36 | a.out 37 | *.o 38 | *.pyc 39 | *.so 40 | *.com 41 | *.class 42 | *.dll 43 | *.exe 44 | */rdoc/ 45 | target/ 46 | 47 | # Testing # 48 | ########### 49 | .watchr 50 | .rspec 51 | spec/* 52 | spec/fixtures/* 53 | test/* 54 | features/* 55 | Guardfile 56 | Procfile 57 | 58 | # SCM # 59 | ####### 60 | .git 61 | */.git 62 | .gitignore 63 | .gitmodules 64 | .gitconfig 65 | .gitattributes 66 | .svn 67 | */.bzr/* 68 | */.hg/* 69 | */.svn/* 70 | 71 | # Berkshelf # 72 | ############# 73 | Berksfile 74 | Berksfile.lock 75 | cookbooks/* 76 | tmp 77 | 78 | # Cookbooks # 79 | ############# 80 | CONTRIBUTING 81 | CHANGELOG* 82 | docs/* 83 | 84 | # Strainer # 85 | ############ 86 | Colanderfile 87 | Strainerfile 88 | .colander 89 | .strainer 90 | 91 | # Vagrant # 92 | ########### 93 | .vagrant 94 | Vagrantfile 95 | vagrant_repo/* 96 | 97 | # Travis # 98 | ########## 99 | .travis.yml 100 | -------------------------------------------------------------------------------- /docs/README.md: -------------------------------------------------------------------------------- 1 | Documentation 2 | ============= 3 | Documentation for working with the `cerner_splunk` cookbook, and other Splunk at Cerner topics. 4 | 5 | Overview 6 | ---------- 7 | * [Repository Readme](../README.md) 8 | * [Running Locally using Vagrant](vagrant.md) 9 | * [Contributing & Other Resources](contributing.md) 10 | 11 | In Depth 12 | -------- 13 | * [Attributes](attributes.md) 14 | * [Data Bags](databags.md) 15 | * [Recipes](recipes.md) 16 | * [Resources](resources.md) 17 | -------------------------------------------------------------------------------- /docs/contributing.md: -------------------------------------------------------------------------------- 1 | Contributing & Community Resources 2 | ================================== 3 | 4 | Branch Strategy 5 | --------------- 6 | * `main` is the latest release tag 7 | * `stable` is the version under development 8 | * Feature branches should be branched from / merged into `stable` 9 | 10 | Issue Tracking 11 | -------------- 12 | * Submit issues in github issues. 13 | * If it's being tracked internally, you may see references to JIRAs 14 | 15 | Communities & Resources 16 | ----------------------- 17 | * [Splunk Enterprise Documentation](http://docs.splunk.com/Documentation/Splunk) 18 | * [Splunk Answers (Q&A)](http://answers.splunk.com/) 19 | * [Splunk IRC](http://www.splunk.com/view/SP-CAAACDF) #splunk on [EFNet](http://www.efnet.org/) 20 | * [Splunk Public uCern](https://connect.ucern.com/community/udevelop/splunk) 21 | 22 | Docs Navigation 23 | =============== 24 | * [Docs Readme](README.md) 25 | * [Repository Readme](../README.md) 26 | -------------------------------------------------------------------------------- /docs/recipes.md: -------------------------------------------------------------------------------- 1 | Recipes 2 | ======= 3 | These are all of the public facing recipes, and brief descriptions of what they do. Only one Installation recipe can be on your runlist at a time (since the Splunk UF and the full Splunk instance can both perform the same tasks of consuming data to be sent along). 4 | 5 | Forwarder Installation Recipes 6 | ------------------------------ 7 | ### `cerner_splunk` / `cerner_splunk::forwarder` 8 | 9 | Installs the Splunk Universal Forwarder on your system. Most people will only want this recipe (hence why it's the default recipe) 10 | 11 | ### `cerner_splunk::heavy_forwarder` 12 | 13 | Installs the Enterprise Splunk artifact on your system to be configured as a heavy forwarder. 14 | 15 | ### `cerner_splunk::image_prep` 16 | 17 | Makes a Universal Forwarder part of a host image. 18 | 19 | Server Installation Recipes 20 | --------------------------- 21 | These are installations of Full Splunk. Unless you are a Splunk Administrator, these are not the droids you are looking for. 22 | 23 | ### `cerner_splunk::license_server` 24 | 25 | Installs and configures Splunk Server as a license server. Indexes logs. 26 | 27 | ### `cerner_splunk::cluster_master` 28 | 29 | Installs and configures Splunk Server as a cluster master. Forwards logs. 30 | 31 | ### `cerner_splunk::cluster_slave` 32 | 33 | Installs and configures Splunk Server as a cluster slave (indexer). Recieves & Indexes logs. 34 | 35 | ### `cerner_splunk::search_head` 36 | 37 | Installs and configures Splunk Server as a cluster search head. Forwards logs. 38 | 39 | ### `cerner_splunk::shc_search_head` 40 | 41 | Installs and configures Splunk Server as a search head in a search head cluster. Forwards logs. 42 | 43 | ### `cerner_splunk::shc_captain` 44 | 45 | Installs and configures Splunk Server as a search head captain in a search head cluster. Captain assignment initializes the search head cluster. 46 | 47 | ### `cerner_splunk::shc_deployer` 48 | 49 | Installs and configures Splunk Server as a deployer in a search head cluster. Deploys apps and other configurations to the search heads in a search head cluster. 50 | 51 | ### `cerner_splunk::server` 52 | 53 | Installs and configures Splunk Server as a standalone server. Recieves & Indexes logs. 54 | 55 | ### `cerner_splunk::server_install_only` 56 | 57 | Install a Splunk Server for the purposes of baking a base server image. Skips the vast majority of configuration since it's likely environment specific. 58 | 59 | Unconfiguration / Uninstallation Recipes 60 | ---------------------------------------- 61 | These are recipes to remove and clean up aspects of Splunk 62 | 63 | ### `cerner_splunk::shc_remove_search_head` 64 | 65 | **_EXPERIMENTAL_** Removes a search head member from the Search Head Cluster and stops Splunk. It's currently troublesome re-adding a removed head back to a Search Head Cluster. 66 | -------------------------------------------------------------------------------- /libraries/alerts.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | # Cookbook Name:: cerner_splunk 4 | # File Name:: alerts.rb 5 | 6 | require_relative 'databag' 7 | 8 | module CernerSplunk 9 | # Module contains functions to configure alerts in a Splunk system 10 | module Alerts 11 | def self.configure_alerts(node, hash) 12 | hash = hash.clone 13 | default_coords = CernerSplunk::DataBag.to_a node['splunk']['config']['alerts'] 14 | bag = CernerSplunk::DataBag.load hash.delete('bag'), default: default_coords, secret: node['splunk']['data_bag_secret'] 15 | 16 | alert_stanzas = 17 | if bag 18 | bag.to_hash.merge(hash) do |_key, default_hash, override_hash| 19 | default_hash.merge(override_hash) 20 | end 21 | else 22 | hash 23 | end 24 | 25 | fail 'Unexpected property \'bag\'' if alert_stanzas.delete('bag') 26 | 27 | email_settings = alert_stanzas['email'] || {} 28 | 29 | if email_settings['auth_password'] 30 | password = CernerSplunk::DataBag.load email_settings['auth_password'], default: default_coords, secret: node['splunk']['data_bag_secret'] 31 | fail 'Password must be a String' unless password.is_a?(String) 32 | 33 | email_settings['auth_password'] = password 34 | end 35 | alert_stanzas 36 | end 37 | end 38 | end 39 | -------------------------------------------------------------------------------- /libraries/conf.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | # Cookbook Name:: cerner_splunk 4 | # File Name:: conf.rb 5 | 6 | module CernerSplunk 7 | # Utilities for working with splunk configuration files 8 | module Conf 9 | STANZA_START ||= /^\s*\[(?[^\]]+)\].*$/.freeze 10 | COMMENT_LINE ||= /^\s*#.*$/.freeze 11 | KEY_VALUE_PAIR ||= /^(?[^=]+)=(?.*)$/.freeze 12 | 13 | def self.parse_string(conf) 14 | return {} if conf.nil? 15 | 16 | parse StringIO.open(conf, 'r:UTF-8') 17 | end 18 | 19 | def self.parse(io) 20 | start = {} 21 | hash = { 'default' => start } 22 | current = start 23 | 24 | io.each_line do |line| 25 | case line 26 | when STANZA_START 27 | start = {} 28 | current = start 29 | hash[Regexp.last_match(:stanza_name).strip] = start 30 | when COMMENT_LINE 31 | # ignore comment lines 32 | when KEY_VALUE_PAIR 33 | current[Regexp.last_match(:key).strip] = Regexp.last_match(:value).strip 34 | end 35 | end 36 | 37 | hash.delete('default') if hash['default'].empty? 38 | hash 39 | end 40 | 41 | # Class for reading an existing configuration file from disk 42 | class Reader 43 | def initialize(filename) 44 | @filename = filename 45 | end 46 | 47 | def read 48 | return {} unless File.exist?(@filename) 49 | 50 | file = File.open(@filename, 'r:UTF-8') 51 | CernerSplunk::Conf.parse file 52 | ensure 53 | file&.close 54 | end 55 | end 56 | end 57 | end 58 | -------------------------------------------------------------------------------- /libraries/lwrp.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | # Cookbook Name:: cerner_splunk 4 | # File Name:: lwrp.rb 5 | # 6 | # This file contains modules that can be used to extend the LWRP DSL. 7 | # Most will follow the pattern of in order to use, include at the top of your resource / provider: 8 | # 9 | # extend CernerSplunk::LWRP::(module) unless defined? (method name) 10 | 11 | require_relative 'databag' 12 | require_relative 'recipe_utils' 13 | 14 | module CernerSplunk 15 | # Methods involved with augmenting the LWRP syntax / writing recipies 16 | module LWRP 17 | # Change a list of monitors to a hash of stanzas for writing to a config file 18 | def self.convert_monitors(monitors, default_index = nil, base = {}) 19 | monitors.inject(base) do |stanzas, element| 20 | type = element['type'] || element[:type] || 'monitor' 21 | path = element['path'] || element[:path] 22 | 23 | base_hash = default_index ? { 'index' => default_index } : {} 24 | stanzas["#{type}://#{path}"] = element.inject(base_hash) do |hash, (key, value)| 25 | case key 26 | when 'type', 'path', :type, :path 27 | # skip-these 28 | else 29 | hash[key.to_s] = value 30 | end 31 | hash 32 | end 33 | stanzas 34 | end 35 | end 36 | 37 | # RESOURCE: extend CernerSplunk::LWRP::DelayableAttribute unless defined? delayable_attribute 38 | # 39 | # Extension of the Resource DSL, defines an attribute that can be set upfront or can be calculated at convergence time. 40 | module DelayableAttribute 41 | def delayable_attribute(attr_name, validation = {}) 42 | class_eval(<<-SHIM, __FILE__, __LINE__ + 1) 43 | def #{attr_name}(arg=nil,&block) 44 | _set_or_return_#{attr_name}(arg,block) 45 | end 46 | SHIM 47 | 48 | define_method("_set_or_return_#{attr_name}".to_sym) do |arg, block| 49 | fail "Specify only the arg or block, not both for #{attr_name}!" if arg && block 50 | 51 | iv_symbol = "@#{attr_name}".to_sym 52 | 53 | if block 54 | instance_variable_set(iv_symbol, block) 55 | elsif arg || !instance_variable_defined?(iv_symbol) 56 | opts = validate({ attr_name => arg }, { attr_name => validation }) 57 | instance_variable_set(iv_symbol, opts[attr_name]) 58 | else 59 | val = instance_variable_get(iv_symbol) 60 | if val.is_a? Proc 61 | validate({ attr_name => val.call }, { attr_name => validation })[attr_name] 62 | else 63 | val 64 | end 65 | end 66 | end 67 | end 68 | end 69 | end 70 | end 71 | -------------------------------------------------------------------------------- /libraries/matchers.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | if defined?(ChefSpec) 4 | ChefSpec.define_matcher :splunk_app 5 | ChefSpec.define_matcher :splunk_template 6 | def create_splunk_template(resource) 7 | ChefSpec::Matchers::ResourceMatcher.new(:splunk_template, :create, resource) 8 | end 9 | 10 | def create_splunk_app(resource) 11 | ChefSpec::Matchers::ResourceMatcher.new(:splunk_app, :create, resource) 12 | end 13 | 14 | def remove_splunk_app(resource) 15 | ChefSpec::Matchers::ResourceMatcher.new(:splunk_app, :remove, resource) 16 | end 17 | 18 | def initialize_sh_cluster(resource) 19 | ChefSpec::Matchers::ResourceMatcher.new(:cerner_splunk_sh_cluster, :initialize, resource) 20 | end 21 | 22 | def add_sh_member(resource) 23 | ChefSpec::Matchers::ResourceMatcher.new(:cerner_splunk_sh_cluster, :add, resource) 24 | end 25 | 26 | def remove_sh_member(resource) 27 | ChefSpec::Matchers::ResourceMatcher.new(:cerner_splunk_sh_cluster, :remove, resource) 28 | end 29 | end 30 | -------------------------------------------------------------------------------- /libraries/outputs.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | # Cookbook Name:: cerner_splunk 4 | # File Name:: outputs.rb 5 | 6 | require_relative 'databag' 7 | 8 | module CernerSplunk 9 | # Module contains functions to configure outputs.conf in a Splunk system 10 | module Outputs 11 | def self.configure_outputs(node) # rubocop:disable Metrics/PerceivedComplexity, Metrics/CyclomaticComplexity, Metrics/MethodLength 12 | output_stanzas = {} 13 | 14 | if %i[search_head forwarder cluster_master shc_deployer].include? node['splunk']['node_type'] 15 | output_stanzas['tcpout'] = { 16 | 'forwardedindex.0.whitelist' => '.*', 17 | 'forwardedindex.1.blacklist' => '_thefishbucket', 18 | 'forwardedindex.2.whitelist' => '' 19 | } 20 | 21 | # If we're part of a cluster, we only want to send events to our cluster. 22 | if node['splunk']['node_type'] == :forwarder 23 | CernerSplunk.all_clusters(node) 24 | else 25 | [CernerSplunk.my_cluster(node)] 26 | end.each do |(cluster, bag)| 27 | if bag['indexer_discovery'] == true 28 | Chef::Log.warn "Configured ['receivers'] in cluster #{cluster} will be ignored since ['indexer_discovery'] is set to true." if bag['receivers'] 29 | 30 | indexer_discovery_settings = ((bag['indexer_discovery_settings'] && bag['indexer_discovery_settings']['outputs_configs']) || {}).reject do |k, _| 31 | k.start_with?('_cerner_splunk') 32 | end 33 | output_stanzas["indexer_discovery:#{cluster}"] = indexer_discovery_settings 34 | 35 | fail "master_uri is missing in the cluster databag: #{cluster}" if bag['master_uri'].nil? || bag['master_uri'].empty? 36 | 37 | output_stanzas["indexer_discovery:#{cluster}"]['master_uri'] = bag['master_uri'] 38 | encrypt_password = CernerSplunk::ConfTemplate::Transform.splunk_encrypt node: node 39 | 40 | pass = 41 | if bag['indexer_discovery_settings'] && bag['indexer_discovery_settings']['pass4SymmKey'] 42 | bag['indexer_discovery_settings']['pass4SymmKey'] 43 | else 44 | 'changeme' 45 | end 46 | output_stanzas["indexer_discovery:#{cluster}"]['pass4SymmKey'] = CernerSplunk::ConfTemplate.compose encrypt_password, CernerSplunk::ConfTemplate::Value.constant(value: pass) 47 | output_stanzas["tcpout:#{cluster}"] = bag['tcpout_settings'] || {} 48 | output_stanzas["tcpout:#{cluster}"]['indexerDiscovery'] = cluster 49 | next 50 | end 51 | 52 | port = bag['receiver_settings'] 53 | port = port['splunktcp'] if port 54 | port = port['port'] if port 55 | receivers = bag['receivers'] 56 | 57 | if !receivers || receivers.empty? || !port 58 | Chef::Log.warn "Receiver settings missing or incomplete in configured cluster data bag: #{cluster}" 59 | else 60 | output_stanzas["tcpout:#{cluster}"] = bag['tcpout_settings'] || {} 61 | output_stanzas["tcpout:#{cluster}"]['server'] = receivers.collect do |x| 62 | x.include?(':') ? x : "#{x}:#{port}" 63 | end.join(',') 64 | end 65 | end 66 | end 67 | output_stanzas 68 | end 69 | end 70 | end 71 | -------------------------------------------------------------------------------- /libraries/passive_sensitive.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | # Cookbook Name:: cerner_splunk 4 | # File Name:: passive_sensitive.rb 5 | 6 | require 'chef/resource' 7 | 8 | class Chef # rubocop:disable Style/MultilineIfModifier 9 | # Making the sensitive attribute passive for older chef versions 10 | class Resource # rubocop:disable Style/Documentation, Lint/RedundantCopDisableDirective 11 | def sensitive(args = nil) 12 | set_or_return(:sensitive, args, kind_of: [TrueClass, FalseClass]) 13 | end 14 | end 15 | end unless Chef::Resource.method_defined? :sensitive 16 | -------------------------------------------------------------------------------- /libraries/rc4.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | # Cookbook Name:: cerner_splunk 4 | # File Name:: rc4.rb 5 | 6 | # RC4 implementation in this module is taken from https://github.com/caiges/Ruby-RC4 7 | # (SHA: c4c56511bd4f98312d6cad28c6836dc6043d7453) project under the MIT license below. 8 | # 9 | # The MIT License 10 | 11 | # Copyright (C) 2010 Max Prokopiev, Alexandar Simic, Caige Nichols 12 | 13 | # Permission is hereby granted, free of charge, to any person obtaining a copy 14 | # of this software and associated documentation files (the "Software"), to deal 15 | # in the Software without restriction, including without limitation the rights 16 | # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 17 | # copies of the Software, and to permit persons to whom the Software is 18 | # furnished to do so, subject to the following conditions: 19 | 20 | # The above copyright notice and this permission notice shall be included in 21 | # all copies or substantial portions of the Software. 22 | 23 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 24 | # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 25 | # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 26 | # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 27 | # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 28 | # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 29 | # THE SOFTWARE. 30 | 31 | module CernerSplunk 32 | # Implementation of RC4 algorithm 33 | class RC4 34 | def initialize(str) 35 | initialize_state(str) 36 | @q1 = 0 37 | @q2 = 0 38 | end 39 | 40 | def encrypt!(text) 41 | text.force_encoding('binary').unpack('C*').map do |encoded_byte| 42 | @q1 = (@q1 + 1) % 256 43 | @q2 = (@q2 + @state[@q1]) % 256 44 | @state[@q1], @state[@q2] = @state[@q2], @state[@q1] 45 | encoded_byte ^ @state[(@state[@q1] + @state[@q2]) % 256] 46 | end.pack 'C*' 47 | end 48 | 49 | alias decrypt! encrypt! 50 | 51 | def encrypt(text) 52 | encrypt!(text.dup) 53 | end 54 | 55 | alias decrypt encrypt 56 | 57 | private 58 | 59 | # Performs the key-scheduling algorithm to initialize the state. 60 | def initialize_state(key) 61 | i = j = 0 62 | # The initial state which is then modified by the key-scheduling algorithm 63 | @state = (0..255).to_a 64 | key = key.force_encoding('binary').unpack('C*') 65 | key_length = key.length 66 | while i < 256 67 | j = (j + @state[i] + key[i % key_length]) % 256 68 | @state[i], @state[j] = @state[j], @state[i] 69 | i += 1 70 | end 71 | end 72 | end 73 | end 74 | -------------------------------------------------------------------------------- /libraries/roles.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | # Cookbook Name:: cerner_splunk 4 | # File Name:: roles.rb 5 | 6 | require_relative 'databag' 7 | 8 | module CernerSplunk 9 | # Module contains functions to configure roles in a Splunk system 10 | module Roles 11 | def self.configure_roles(hash) # rubocop:disable Metrics/PerceivedComplexity, Metrics/CyclomaticComplexity, Metrics/MethodLength 12 | user_prefs = {} 13 | authorize = {} 14 | 15 | hash.each do |stanza, values| 16 | pref_entries, auth_entries = values.inject([{}, {}]) do |result, (key, value)| 17 | prefs = result[0] 18 | auth = result[1] 19 | 20 | case key 21 | when 'tz', 'showWhatsNew' 22 | prefs[key] = value 23 | when 'app' 24 | prefs['default_namespace'] = value 25 | when 'capabilities' 26 | value.each do |cap| 27 | if cap.start_with? '!' 28 | cap = cap[1..-1] 29 | auth[cap] = 'disabled' 30 | else 31 | auth[cap] = 'enabled' 32 | end 33 | end 34 | else 35 | auth[key] = 36 | if value.is_a? Array 37 | value.join(';') 38 | else 39 | value 40 | end 41 | end 42 | result 43 | end 44 | 45 | unless pref_entries.empty? 46 | pref_stanza = stanza == 'default' ? 'general_default' : "role_#{stanza}" 47 | user_prefs[pref_stanza] = pref_entries 48 | end 49 | 50 | if stanza == 'default' 51 | authorize['default'] = auth_entries unless auth_entries.empty? 52 | else 53 | authorize["role_#{stanza}"] = auth_entries 54 | end 55 | end 56 | [authorize, user_prefs] 57 | end 58 | end 59 | end 60 | -------------------------------------------------------------------------------- /libraries/splunk_password.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | # Cookbook Name:: cerner_splunk 4 | # File Name:: splunk_password.rb 5 | 6 | require 'base64' 7 | 8 | # Module contains different functions to encrypt and decrypt splunk passwords 9 | module CernerSplunk 10 | # Encrypts the password before writing into config files. As of now all the passwords 11 | # needs to be XORed except for the sslPassword. The boolean 12 | # parameter xor controls the XOR logic. 13 | def self.splunk_encrypt_password(plain_text, splunk_secret, xor) 14 | # Prevent double encrypting values 15 | return plain_text if plain_text.start_with? '$1$', '$7$' 16 | 17 | rc4key = splunk_secret.strip[0..15] 18 | 19 | password = 20 | if xor 21 | pwd = plain_text.unpack('c*') 22 | xorkey = get_xor_key(pwd.size) 23 | pwd.zip(xorkey).map { |c1, c2| c1 ^ c2 }.pack('c*') 24 | end || plain_text 25 | 26 | "$1$#{Base64.encode64(CernerSplunk::RC4.new(rc4key).encrypt("#{password}\0")).strip!}" 27 | end 28 | 29 | # Decrypts the splunk passwords. As of now the encrypted passwords needs to be XORed 30 | # to retrieve the plain_text for every password except the sslPassword. 31 | # The boolean parameter xor controls the XOR logic. 32 | def self.splunk_decrypt_password(encryp_password, splunk_secret, xor) 33 | rc4key = splunk_secret.strip[0..15] 34 | pwd = CernerSplunk::RC4.new(rc4key).decrypt(Base64.decode64(encryp_password.sub('$1$', ''))).chomp("\0") 35 | 36 | return pwd unless xor 37 | 38 | password = pwd.unpack('c*') 39 | xorkey = get_xor_key(password.size) 40 | password.zip(xorkey).map { |c1, c2| c1 ^ c2 }.pack('c*') 41 | end 42 | 43 | # Return the key used to XOR with the password 44 | def self.get_xor_key(password_size) 45 | xorkey = 'DEFAULTSA'.unpack('c*') 46 | xorkey += xorkey while xorkey.size < password_size 47 | xorkey 48 | end 49 | end 50 | -------------------------------------------------------------------------------- /libraries/unit_converter.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | # Cookbook Name:: cerner_splunk 4 | # File Name:: unit_converter.rb 5 | # 6 | # Module contains different functions used to manipulate the units of file sizes. 7 | # 8 | module CernerSplunk 9 | SIZE_SCALE ||= %w[KB MB GB TB].freeze 10 | REGEX ||= /(?i)^\s*+(\d++(?>\.\d+)?+)\s*+([kmgt](?>i?+b)?+|b?+)\s*+$/.freeze 11 | POWER ||= { '' => 0, 'B' => 0, 'K' => 1, 'M' => 2, 'G' => 3, 'T' => 4 }.freeze 12 | # Methods converts file sizes in KB, MB, GB and TB into Bytes. 13 | def self.convert_to_bytes(string) 14 | matchdata = string.match REGEX 15 | fail "Unparsable size input #{string}" unless matchdata 16 | 17 | size = matchdata[1].to_f 18 | unit = matchdata[2].upcase[0, 1] 19 | 20 | (size * 1024**POWER[unit]).floor 21 | end 22 | 23 | # Function returns the size in a human readable format. 24 | def self.human_readable_size(filesize) 25 | level = 0 26 | human_size = filesize.fdiv(1024.0) 27 | while human_size.fdiv(1024.0) > 0.5 && level + 1 < SIZE_SCALE.length 28 | human_size = human_size.fdiv(1024.0) 29 | level += 1 30 | end 31 | "#{human_size.round(2)} #{SIZE_SCALE[level]}" 32 | end 33 | end 34 | -------------------------------------------------------------------------------- /metadata.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | name 'cerner_splunk' 4 | maintainer 'Healthe Intent Infrastructure - Cerner Innovation, Inc.' 5 | maintainer_email 'splunk@cerner.com' 6 | license 'Apache-2.0' 7 | description 'Installs/Configures Splunk Servers and Forwarders' 8 | 9 | version '2.60.0' 10 | 11 | source_url 'https://github.com/cerner/cerner_splunk' 12 | issues_url 'https://github.com/cerner/cerner_splunk/issues' 13 | 14 | chef_version '>= 16', '< 19' 15 | 16 | depends 'ulimit', '~> 1.0' 17 | depends 'line', '~> 2.1' 18 | 19 | supports 'redhat', '>= 6.7' 20 | supports 'ubuntu', '>= 16.04' 21 | supports 'windows', '>= 6.1' 22 | -------------------------------------------------------------------------------- /providers/forwarder_monitors.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | # Cookbook Name:: cerner_splunk 4 | # Provider:: forwarder_monitors 5 | # 6 | # Drop in replacement for the existing splunk_forwarder_monitors 7 | 8 | provides :splunk_forwarder_monitors if respond_to?(:provides) 9 | provides :cerner_splunk_forwarder_monitors if respond_to?(:provides) 10 | 11 | action :install do 12 | input_stanzas = CernerSplunk::LWRP.convert_monitors(new_resource.monitors, new_resource.index) 13 | 14 | file new_resource.app do 15 | action :nothing 16 | path CernerSplunk.restart_marker_file 17 | end 18 | 19 | splunk_app new_resource.app do 20 | apps_dir "#{node['splunk']['home']}/etc/apps" 21 | action :create 22 | local true 23 | files 'inputs.conf' => input_stanzas 24 | notifies :touch, "file[#{new_resource.app}]", :immediately 25 | end 26 | end 27 | 28 | action :delete do 29 | file new_resource.app do 30 | action :nothing 31 | path CernerSplunk.restart_marker_file 32 | end 33 | 34 | splunk_app new_resource.app do 35 | apps_dir "#{node['splunk']['home']}/etc/apps" 36 | action :remove 37 | notifies :touch, "file[#{new_resource.app}]", :immediately 38 | end 39 | end 40 | -------------------------------------------------------------------------------- /providers/sh_cluster.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | # Cookbook Name:: cerner_splunk 4 | # Provider:: sh_cluster 5 | # 6 | 7 | provides :sh_cluster if respond_to?(:provides) 8 | 9 | action :initialize do 10 | search_heads = new_resource.search_heads 11 | admin_password = new_resource.admin_password 12 | 13 | execute 'Captain assignment' do # ~FC009 14 | command "#{node['splunk']['cmd']} bootstrap shcluster-captain -servers_list '#{search_heads.join(',')}' -auth admin:#{admin_password}" 15 | environment 'HOME' => node['splunk']['home'] 16 | # execute only if there isn't a captain in the cluster 17 | not_if "#{node['splunk']['cmd']} list shcluster-members -auth admin:#{admin_password} | grep is_captain:1" 18 | sensitive true 19 | end 20 | end 21 | 22 | action :add do 23 | search_heads = new_resource.search_heads 24 | admin_password = new_resource.admin_password 25 | management_host = CernerSplunk.management_host(node) 26 | 27 | execute 'add search head' do # ~FC009 28 | command "#{node['splunk']['cmd']} add shcluster-member -current_member_uri #{search_heads.first} -auth admin:#{admin_password}" 29 | environment 'HOME' => node['splunk']['home'] 30 | # execute only if this SH is not an existing member of the SHC 31 | not_if "#{node['splunk']['cmd']} list shcluster-members -auth admin:#{admin_password} | grep #{management_host}" 32 | ignore_failure true 33 | sensitive true 34 | end 35 | end 36 | 37 | action :remove do 38 | admin_password = new_resource.admin_password 39 | management_host = CernerSplunk.management_host(node) 40 | 41 | execute 'remove search head' do # ~FC009 42 | command "#{node['splunk']['cmd']} remove shcluster-member -auth admin:#{admin_password}" 43 | environment 'HOME' => node['splunk']['home'] 44 | # execute only if this SH is an existing member of the SHC 45 | only_if "#{node['splunk']['cmd']} list shcluster-members -auth admin:#{admin_password} | grep #{management_host}" 46 | sensitive true 47 | end 48 | end 49 | -------------------------------------------------------------------------------- /recipes/_configure.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | # Cookbook Name:: cerner_splunk 4 | # Recipe:: _configure 5 | # 6 | # Configures the Splunk system post package installation 7 | 8 | unless node.run_state['cerner_splunk']['configure_apps_only'] 9 | # Verify that clusters are configured 10 | if node['splunk']['node_type'] != :license_server && node['splunk']['config']['clusters'].empty? 11 | if node['splunk']['node_type'] == :forwarder 12 | Chef::Log.warn 'No cluster data bag configured, ensure your outputs are configured elsewhere.' 13 | else 14 | throw 'You need to configure at least one cluster databag.' 15 | end 16 | end 17 | 18 | node['splunk']['config']['clusters'].each do |cluster| 19 | unless CernerSplunk::DataBag.load(cluster, secret: node['splunk']['data_bag_secret']) # rubocop:disable Style/IfUnlessModifier 20 | throw "Unknown databag configured for node['splunk']['config]['clusters'] => '#{cluster}'" 21 | end 22 | end 23 | 24 | include_recipe 'cerner_splunk::_configure_server' 25 | include_recipe 'cerner_splunk::_configure_logs' unless node['splunk']['logs'].empty? 26 | include_recipe 'cerner_splunk::_configure_roles' 27 | include_recipe 'cerner_splunk::_configure_authentication' 28 | include_recipe 'cerner_splunk::_configure_inputs' 29 | include_recipe 'cerner_splunk::_configure_outputs' 30 | include_recipe 'cerner_splunk::_configure_alerts' 31 | end 32 | 33 | include_recipe 'cerner_splunk::_configure_apps' 34 | -------------------------------------------------------------------------------- /recipes/_configure_alerts.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | # Cookbook Name:: cerner_splunk 4 | # Recipe:: _configure_alerts 5 | # 6 | # Configures the alert settings for the system 7 | 8 | hash = CernerSplunk::DataBag.load node['splunk']['config']['alerts'], 9 | pick_context: CernerSplunk.keys(node), 10 | secret: node['splunk']['data_bag_secret'] 11 | 12 | unless hash 13 | Chef::Log.info 'Splunk Alerts not configured for this node.' 14 | return 15 | end 16 | 17 | splunk_template 'system/alert_actions.conf' do 18 | stanzas CernerSplunk::Alerts.configure_alerts(node, hash) 19 | notifies :touch, 'file[splunk-marker]', :immediately 20 | end 21 | -------------------------------------------------------------------------------- /recipes/_configure_apps.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | # Cookbook Name:: cerner_splunk 4 | # Recipe:: _configure_apps 5 | # 6 | # Configures apps. 7 | 8 | attributes = node['splunk']['apps'] 9 | 10 | attributes_bag = CernerSplunk::DataBag.load(attributes['bag'], secret: node['splunk']['data_bag_secret']) || {} 11 | 12 | # Handle the case where we might not have a cluster 13 | cluster_data = CernerSplunk.my_cluster_data(node) || {} 14 | # warn if the cluster's apps bag is not available on forwarders, but fail for any servers. 15 | cluster_bag = CernerSplunk::DataBag.load(cluster_data['apps'], pick_context: CernerSplunk.keys(node), handle_load_failure: node['splunk']['node_type'] == :forwarder, secret: node['splunk']['data_bag_secret']) || {} 16 | 17 | bag_bag = CernerSplunk::DataBag.load(cluster_bag['bag'], secret: node['splunk']['data_bag_secret']) || {} 18 | 19 | apps = CernerSplunk::SplunkApp.merge_hashes(bag_bag, cluster_bag, attributes_bag, attributes) 20 | 21 | apps.each do |app_name, app_data| 22 | download_data = app_data['download'] || {} 23 | 24 | splunk_app app_name do 25 | apps_dir "#{node['splunk']['home']}/etc/apps" 26 | action app_data['remove'] ? :remove : :create 27 | url download_data['url'] 28 | version download_data['version'] 29 | authorization download_data['authorization'] 30 | local app_data['local'] 31 | files app_data['files'] 32 | lookups app_data['lookups'] 33 | permissions app_data['permissions'] 34 | notifies :touch, 'file[splunk-marker]', :immediately 35 | end 36 | end 37 | -------------------------------------------------------------------------------- /recipes/_configure_authentication.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | # Cookbook Name:: cerner_splunk 4 | # Recipe:: _configure_authentication 5 | # 6 | # Configures the roles available on the system 7 | 8 | hash = CernerSplunk::DataBag.load node['splunk']['config']['authentication'], 9 | pick_context: CernerSplunk.keys(node), 10 | secret: node['splunk']['data_bag_secret'] 11 | 12 | unless hash 13 | Chef::Log.info 'Splunk Authentication not configured for this node.' 14 | return 15 | end 16 | 17 | auth_stanzas = CernerSplunk::Authentication.configure_authentication(node, hash) 18 | 19 | splunk_template 'system/authentication.conf' do 20 | sensitive(auth_stanzas.any? { |_, v| v.key? 'bindDNpassword' }) 21 | stanzas auth_stanzas 22 | notifies :touch, 'file[splunk-marker]', :immediately 23 | end 24 | -------------------------------------------------------------------------------- /recipes/_configure_inputs.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | # Cookbook Name:: cerner_splunk 4 | # Recipe:: _configure_inputs 5 | # 6 | # Configures the system inputs.conf file 7 | 8 | # Translate monitor attributes to generic hash 9 | base_hash = { 'default' => { 'host' => node['splunk']['config']['host'] } } 10 | 11 | input_stanzas = CernerSplunk::LWRP.convert_monitors node['splunk']['monitors'], node['splunk']['main_project_index'], base_hash 12 | 13 | if %i[server cluster_slave].include? node['splunk']['node_type'] 14 | cluster, bag = CernerSplunk.my_cluster(node) 15 | port = bag['receiver_settings'] 16 | port = port['splunktcp'] if port 17 | port = port['port'] if port 18 | if port 19 | input_stanzas["splunktcp://#{port}"] = {} 20 | input_stanzas["splunktcp://#{port}"]['disabled'] = 0 21 | input_stanzas["splunktcp://#{port}"]['connection_host'] = 'none' 22 | else 23 | Chef::Log.warn "Receiver settings missing in configured cluster data bag: #{cluster}" 24 | end 25 | end 26 | 27 | splunk_template 'system/inputs.conf' do 28 | stanzas input_stanzas 29 | notifies :touch, 'file[splunk-marker]', :immediately 30 | end 31 | -------------------------------------------------------------------------------- /recipes/_configure_logs.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | # Cookbook Name:: cerner_splunk 4 | # Recipe:: _configure_logs 5 | # 6 | # Configures the system log-local.cfg file 7 | 8 | log_local_contents = node['splunk']['logs'] 9 | 10 | splunk_template 'etc/log-local.cfg' do 11 | stanzas log_local_contents 12 | notifies :touch, 'file[splunk-marker]', :immediately 13 | end 14 | -------------------------------------------------------------------------------- /recipes/_configure_outputs.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | # Cookbook Name:: cerner_splunk 4 | # Recipe:: _configure_outputs 5 | # 6 | # Configures the system outputs.conf file 7 | output_stanzas = CernerSplunk::Outputs.configure_outputs(node) 8 | 9 | splunk_template 'system/outputs.conf' do 10 | stanzas output_stanzas 11 | not_if { output_stanzas.empty? } 12 | notifies :touch, 'file[splunk-marker]', :immediately 13 | end 14 | -------------------------------------------------------------------------------- /recipes/_configure_roles.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | # Cookbook Name:: cerner_splunk 4 | # Recipe:: _configure_roles 5 | # 6 | # Configures the roles available on the system 7 | 8 | hash = CernerSplunk::DataBag.load node['splunk']['config']['roles'], 9 | pick_context: CernerSplunk.keys(node), 10 | secret: node['splunk']['data_bag_secret'] 11 | 12 | unless hash 13 | Chef::Log.info 'Roles not configured for this node.' 14 | return 15 | end 16 | 17 | authorize, user_prefs = CernerSplunk::Roles.configure_roles(hash) 18 | 19 | authorize_action = authorize.empty? ? :delete : :create 20 | 21 | splunk_template 'system/authorize.conf' do 22 | stanzas authorize 23 | action authorize_action 24 | notifies :touch, 'file[splunk-marker]', :immediately 25 | end 26 | 27 | directory "#{node['splunk']['home']}/etc/apps/user-prefs/local" do 28 | user node['splunk']['user'] 29 | group node['splunk']['group'] 30 | mode '0700' 31 | end 32 | 33 | user_prefs_action = user_prefs.empty? ? :delete : :create 34 | 35 | splunk_template 'apps/user-prefs/user-prefs.conf' do 36 | stanzas user_prefs 37 | action user_prefs_action 38 | notifies :touch, 'file[splunk-marker]', :immediately 39 | end 40 | -------------------------------------------------------------------------------- /recipes/_configure_secret.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | # Cookbook Name:: cerner_splunk 4 | # Recipe:: _configure_secret 5 | # 6 | # Configures the system splunk.secret file 7 | 8 | secrets_hash = node['splunk']['config']['secrets'] 9 | key = CernerSplunk.keys(node).find { |x| secrets_hash.key?(x.to_s) } if secrets_hash 10 | 11 | # We can't keep windows from quasi-starting on package install and we don't 12 | # yet allow changing the secret file once it exists so don't set it for windows. 13 | if !key || platform_family?('windows') 14 | Chef::Log.info 'Splunk Secrets either not configured for this node or the node is windows where secrets are not supported.' 15 | return 16 | end 17 | 18 | secret = CernerSplunk::DataBag.load secrets_hash[key], secret: node['splunk']['data_bag_secret'], handle_load_failure: true 19 | fail 'Configured splunk secret must resolve to a String' unless secret.is_a?(String) 20 | 21 | secret_path = ::File.join(node['splunk']['home'], 'etc', 'auth', 'splunk.secret') 22 | 23 | ruby_block 'Check splunk.secret file' do 24 | block do 25 | CernerSplunk.validate_secret_file(secret_path, secret) 26 | end 27 | end 28 | 29 | file 'splunk.secret' do 30 | backup false 31 | path secret_path 32 | user node['splunk']['user'] 33 | group node['splunk']['group'] 34 | mode '0400' 35 | content "#{secret}\n" 36 | sensitive true 37 | end 38 | -------------------------------------------------------------------------------- /recipes/_configure_shc_alerts.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | # Cookbook Name:: cerner_splunk 4 | # Recipe:: _configure_shc_alerts 5 | # 6 | # Configures the alert settings for the search heads in a search head cluster 7 | 8 | hash = CernerSplunk::DataBag.load node['splunk']['config']['alerts'], 9 | pick_context: ['shcluster'], 10 | secret: node['splunk']['data_bag_secret'] 11 | 12 | unless hash 13 | Chef::Log.info 'Splunk Alerts not configured for the search heads in the search head cluster.' 14 | return 15 | end 16 | 17 | splunk_template 'shcluster/_shcluster/alert_actions.conf' do 18 | stanzas CernerSplunk::Alerts.configure_alerts(node, hash) 19 | notifies :run, 'execute[apply-shcluster-bundle]' 20 | end 21 | -------------------------------------------------------------------------------- /recipes/_configure_shc_authentication.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | # Cookbook Name:: cerner_splunk 4 | # Recipe:: _configure_shc_authentication 5 | # 6 | # Configures the authentication available on the system in a search head cluster 7 | 8 | hash = CernerSplunk::DataBag.load node['splunk']['config']['authentication'], 9 | pick_context: ['shcluster'], 10 | secret: node['splunk']['data_bag_secret'] 11 | 12 | unless hash 13 | Chef::Log.info 'Splunk Authentication not configured for the search heads in the search head cluster.' 14 | return 15 | end 16 | 17 | auth_stanzas = CernerSplunk::Authentication.configure_authentication(node, hash) 18 | 19 | splunk_template 'shcluster/_shcluster/authentication.conf' do 20 | sensitive(auth_stanzas.any? { |_, v| v.key? 'bindDNpassword' }) 21 | stanzas auth_stanzas 22 | notifies :run, 'execute[apply-shcluster-bundle]' 23 | end 24 | -------------------------------------------------------------------------------- /recipes/_configure_shc_outputs.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | # Cookbook Name:: cerner_splunk 4 | # Recipe:: _configure_shc_outputs 5 | # 6 | # Configures the system outputs.conf file in a search head cluster 7 | 8 | output_stanzas = CernerSplunk::Outputs.configure_outputs(node) 9 | 10 | splunk_template 'shcluster/_shcluster/outputs.conf' do 11 | stanzas output_stanzas 12 | not_if { output_stanzas.empty? } 13 | notifies :run, 'execute[apply-shcluster-bundle]' 14 | end 15 | -------------------------------------------------------------------------------- /recipes/_configure_shc_roles.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | # Cookbook Name:: cerner_splunk 4 | # Recipe:: _configure_shc_roles 5 | # 6 | # Configures the roles available on the search heads in a search head cluster 7 | 8 | hash = CernerSplunk::DataBag.load node['splunk']['config']['roles'], 9 | pick_context: ['shcluster'], 10 | secret: node['splunk']['data_bag_secret'] 11 | 12 | unless hash 13 | Chef::Log.info 'Roles not configured for the search heads in the search head cluster.' 14 | return 15 | end 16 | 17 | authorize, user_prefs = CernerSplunk::Roles.configure_roles(hash) 18 | 19 | authorize_action = authorize.empty? ? :delete : :create 20 | 21 | splunk_template 'shcluster/_shcluster/authorize.conf' do 22 | stanzas authorize 23 | action authorize_action 24 | notifies :run, 'execute[apply-shcluster-bundle]' 25 | end 26 | 27 | user_prefs_action = user_prefs.empty? ? :delete : :create 28 | 29 | splunk_template 'shcluster/_shcluster/user-prefs.conf' do 30 | stanzas user_prefs 31 | action user_prefs_action 32 | notifies :run, 'execute[apply-shcluster-bundle]' 33 | end 34 | -------------------------------------------------------------------------------- /recipes/_configure_ui.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | # Cookbook Name:: cerner_splunk 4 | # Recipe:: _configure_ui 5 | # 6 | # Configures the ui settings for the system 7 | 8 | splunk_template 'system/ui-prefs.conf' do 9 | stanzas node['splunk']['config']['ui_prefs'] 10 | notifies :touch, 'file[splunk-marker]', :immediately 11 | end 12 | -------------------------------------------------------------------------------- /recipes/_generate_password.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | # Cookbook Name:: cerner_splunk 4 | # Recipe:: _generate_password 5 | # 6 | # Generates and sets a random password for the admin splunk account. 7 | # This recipe must be run while Splunk is running. 8 | 9 | return if node['splunk']['free_license'] && node['splunk']['node_type'] != :forwarder 10 | 11 | require 'securerandom' 12 | 13 | # For a node that has multiple splunk instances, create a separate password file. 14 | password_file = if node['splunk']['ignore_already_installed_instance'] 15 | File.join node['splunk']['external_config_directory'], 'password_forwarder' 16 | else 17 | File.join node['splunk']['external_config_directory'], 'password' 18 | end 19 | 20 | old_password = File.exist?(password_file) ? File.read(password_file) : 'changeme' 21 | 22 | admin_hash = node['splunk']['config']['admin_password'] 23 | key = CernerSplunk.keys(node).find { |x| admin_hash.key?(x.to_s) } if admin_hash 24 | new_password = CernerSplunk::DataBag.load admin_hash[key], secret: node['splunk']['data_bag_secret'], handle_load_failure: true if key 25 | new_password ||= SecureRandom.hex(36) 26 | 27 | node.run_state['cerner_splunk']['admin-password'] = old_password 28 | 29 | ruby_block 'update admin password in run_state' do 30 | block do 31 | node.run_state['cerner_splunk']['admin-password'] = new_password 32 | end 33 | action :nothing 34 | end 35 | 36 | execute 'change-admin-password' do # ~FC009 37 | command "#{node['splunk']['cmd']} edit user admin -password #{new_password} -roles admin -auth admin:#{old_password}" 38 | environment 'HOME' => node['splunk']['home'] 39 | sensitive true 40 | not_if { new_password == old_password } 41 | notifies :run, 'ruby_block[update admin password in run_state]', :immediately 42 | end 43 | 44 | if platform_family?('windows') 45 | system_user = 'SYSTEM' 46 | system_group = 'SYSTEM' 47 | else 48 | system_user = 'root' 49 | system_group = 'root' 50 | end 51 | 52 | file password_file do 53 | backup false 54 | owner system_user 55 | group system_group 56 | mode '0600' 57 | sensitive true 58 | content new_password 59 | end 60 | -------------------------------------------------------------------------------- /recipes/_install_server.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | # Cookbook Name:: cerner_splunk 4 | # Recipe:: _install_server 5 | # 6 | # Installs the full Splunk package. 7 | 8 | ## Attributes 9 | node.default['splunk']['package']['base_name'] = 'splunk' 10 | node.default['splunk']['package']['download_group'] = 'splunk' 11 | 12 | ## Recipes 13 | include_recipe 'cerner_splunk::_install' 14 | -------------------------------------------------------------------------------- /recipes/_migrate_forwarder.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | # Cookbook Name:: cerner_splunk 4 | # Recipe:: _migrate_forwarder 5 | # 6 | # Migrates from the Universal Forwarder to a heavy forwarder 7 | 8 | require 'fileutils' 9 | 10 | opposite_package_name = CernerSplunk.opposite_package_name(node['splunk']['package']['base_name']) 11 | 12 | service 'splunk' do 13 | service_name CernerSplunk.splunk_service_name(node['platform_family'], opposite_package_name, node['splunk']['systemd_unit_file_name']) 14 | action :stop 15 | end 16 | 17 | ruby_block 'backup-splunk-artifacts' do 18 | block do 19 | splunk_home = CernerSplunk.splunk_home(node['platform_family'], node['kernel']['machine'], opposite_package_name) 20 | FileUtils.cp_r(::File.join(splunk_home, '/var/lib/splunk/fishbucket'), Chef::Config[:file_cache_path]) 21 | FileUtils.cp(::File.join(splunk_home, '/etc/passwd'), Chef::Config[:file_cache_path]) 22 | node.run_state['cerner_splunk']['splunk_forwarder_migrate'] = true 23 | end 24 | end 25 | 26 | package opposite_package_name do 27 | package_name CernerSplunk.installed_package_name(node['platform_family'], opposite_package_name) 28 | action :remove 29 | end 30 | 31 | directory CernerSplunk.splunk_home(node['platform_family'], node['kernel']['machine'], opposite_package_name) do 32 | action :delete 33 | recursive true 34 | end 35 | -------------------------------------------------------------------------------- /recipes/_restart_marker.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | # Cookbook Name:: cerner_splunk 4 | # Recipe:: _restart_marker 5 | # 6 | # Creates the restart file marker. This is used to ensure that the service is only restarted once and that it 7 | # only restarts when needed 8 | 9 | file 'splunk-marker' do 10 | action :nothing 11 | backup false 12 | path CernerSplunk.restart_marker_file 13 | end 14 | -------------------------------------------------------------------------------- /recipes/_user_management.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | # Cookbook Name:: cerner_splunk 4 | # Recipe:: _user_management 5 | # 6 | # Manages the attributes of the splunk user. Called after package installation. 7 | 8 | # User management currently not supported on windows 9 | return if platform_family?('windows') 10 | 11 | home_directory = node['splunk']['user_home'] 12 | # user should be created by the package install 13 | user node['splunk']['user'] do 14 | manage_home false 15 | home home_directory if home_directory 16 | action %i[create lock] 17 | end 18 | 19 | if home_directory 20 | directory home_directory do 21 | user node['splunk']['user'] 22 | group node['splunk']['group'] 23 | mode '0700' 24 | end 25 | end 26 | 27 | conflicts = node['splunk']['groups'].find_all do |group_to_add| 28 | node['splunk']['exclude_groups'].include?(group_to_add) 29 | end 30 | 31 | fail "You're asking us to both add and remove the #{node['splunk']['user']} user from: #{conflicts.join(',')} groups. Check your node['splunk']['groups'] attribute!" unless conflicts.empty? 32 | fail "You cannot exclude the #{node['splunk']['user']} user from the #{node['splunk']['group']} group." if node['splunk']['exclude_groups'].include?(node['splunk']['group']) 33 | 34 | groups_to_add = [node['splunk']['group']] + node['splunk']['groups'] 35 | 36 | groups_to_add.uniq.each do |grp| 37 | group "#{node['splunk']['user']}_#{grp}" do 38 | append true 39 | group_name grp 40 | members [node['splunk']['user']] 41 | action :manage 42 | notifies :touch, 'file[splunk-marker]', :immediately 43 | end 44 | end 45 | 46 | # Chef versions less than 11.10 do not support removing users from groups 47 | # But if you're on a new enough version, we can take advantage of this functionality 48 | if Chef::Resource::Group.instance_methods.include?(:excluded_members) 49 | node['splunk']['exclude_groups'].uniq.each do |grp| 50 | group "#{node['splunk']['user']}_#{grp}" do 51 | append true 52 | group_name grp 53 | excluded_members [node['splunk']['user']] 54 | action :manage 55 | notifies :touch, 'file[splunk-marker]', :immediately 56 | end 57 | end 58 | else 59 | Chef::Log.info "This version of Chef client does not support removing users from groups. If you need to remove '#{node['splunk']['user']}' from groups you must do so manually." 60 | end 61 | 62 | # We need to run the recipe so that it fixes debian systems 63 | include_recipe 'ulimit' 64 | 65 | user_ulimit node['splunk']['user'] do 66 | filehandle_limit node['splunk']['limits']['open_files'] 67 | end 68 | -------------------------------------------------------------------------------- /recipes/cluster_master.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | # Cookbook Name:: cerner_splunk 4 | # Recipe:: cluster_master 5 | # 6 | # Install a Splunk Cluster Master. 7 | 8 | fail 'Cluster Master installation not currently supported on windows' if platform_family?('windows') 9 | 10 | ## Attributes 11 | instance_exec :cluster_master, &CernerSplunk::NODE_TYPE 12 | 13 | ## Recipes 14 | include_recipe 'cerner_splunk::_install_server' 15 | 16 | execute 'apply-cluster-bundle' do # ~FC009 17 | command(lazy { "#{node['splunk']['cmd']} apply cluster-bundle --answer-yes -auth admin:#{node.run_state['cerner_splunk']['admin-password']}" }) 18 | environment 'HOME' => node['splunk']['home'] 19 | sensitive true 20 | action :nothing 21 | end 22 | 23 | cluster_bag = CernerSplunk::DataBag.load(CernerSplunk.my_cluster_data(node)['apps'], pick_context: ['master-apps'], secret: node['splunk']['data_bag_secret']) || {} 24 | 25 | bag_bag = CernerSplunk::DataBag.load(cluster_bag['bag'], secret: node['splunk']['data_bag_secret']) || {} 26 | 27 | apps = CernerSplunk::SplunkApp.merge_hashes(bag_bag, cluster_bag) 28 | 29 | apps.each do |app_name, app_data| 30 | download_data = app_data['download'] || {} 31 | 32 | splunk_app app_name do 33 | apps_dir "#{node['splunk']['home']}/etc/master-apps" 34 | action app_data['remove'] ? :remove : :create 35 | url download_data['url'] 36 | version download_data['version'] 37 | local app_data['local'] 38 | files app_data['files'] 39 | permissions app_data['permissions'] 40 | notifies :run, 'execute[apply-cluster-bundle]' 41 | end 42 | end 43 | 44 | include_recipe 'cerner_splunk::_configure_indexes' 45 | include_recipe 'cerner_splunk::_start' 46 | -------------------------------------------------------------------------------- /recipes/cluster_slave.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | # Cookbook Name:: cerner_splunk 4 | # Recipe:: cluster_slave 5 | # 6 | # Install a Splunk Cluster Slave. 7 | 8 | fail 'Cluster Slave installation not currently supported on windows' if platform_family?('windows') 9 | 10 | ## Attributes 11 | instance_exec :cluster_slave, &CernerSplunk::NODE_TYPE 12 | 13 | ## Recipes 14 | include_recipe 'cerner_splunk::_install_server' 15 | include_recipe 'cerner_splunk::_start' 16 | -------------------------------------------------------------------------------- /recipes/default.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | # Cookbook Name:: cerner_splunk 4 | # Recipe:: default 5 | # 6 | # Default recipe. Alias of the (universal) forwarder since that's the 95% case. 7 | 8 | include_recipe 'cerner_splunk::forwarder' 9 | -------------------------------------------------------------------------------- /recipes/forwarder.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | # Cookbook Name:: cerner_splunk 4 | # Recipe:: forwarder 5 | # 6 | # Installs the Universal Forwarder. 7 | 8 | ## Attributes 9 | instance_exec :forwarder, &CernerSplunk::NODE_TYPE 10 | 11 | node.default['splunk']['package']['base_name'] = 'splunkforwarder' 12 | node.default['splunk']['package']['download_group'] = 'universalforwarder' 13 | 14 | fail 'Different Splunk artifact already installed on node. Failing as an unsupported install' if CernerSplunk.separate_splunk_installed?(node) && !node['splunk']['ignore_already_installed_instance'] 15 | 16 | ## Recipes 17 | include_recipe 'cerner_splunk::_install' 18 | include_recipe 'cerner_splunk::_start' 19 | -------------------------------------------------------------------------------- /recipes/heavy_forwarder.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | # Cookbook Name:: cerner_splunk 4 | # Recipe:: heavy_forwarder 5 | # 6 | # Installs the Enterprise Splunk artifact to be used as a heavy forwarder. 7 | 8 | ## Attributes 9 | instance_exec :forwarder, &CernerSplunk::NODE_TYPE 10 | 11 | node.default['splunk']['package']['base_name'] = 'splunk' 12 | node.default['splunk']['package']['download_group'] = 'splunk' 13 | 14 | splunk_installed = CernerSplunk.separate_splunk_installed?(node) 15 | 16 | ## Recipes 17 | include_recipe 'cerner_splunk::_migrate_forwarder' if splunk_installed 18 | include_recipe 'cerner_splunk::_install' 19 | 20 | ruby_block 'initialize-splunk-backup-artifacts' do 21 | block do 22 | splunk_home = CernerSplunk.splunk_home(node['platform_family'], node['kernel']['machine'], node['splunk']['package']['base_name']) 23 | FileUtils.cp_r(::File.join(Chef::Config[:file_cache_path], 'fishbucket'), ::File.join(splunk_home, '/var/lib/splunk')) 24 | FileUtils.cp(::File.join(Chef::Config[:file_cache_path], 'passwd'), ::File.join(splunk_home, '/etc/passwd')) 25 | FileUtils.rm_r(::File.join(Chef::Config[:file_cache_path], 'fishbucket')) 26 | FileUtils.rm(::File.join(Chef::Config[:file_cache_path], 'passwd')) 27 | unless platform_family?('windows') 28 | FileUtils.chown_R(node['splunk']['user'], node['splunk']['group'], ::File.join(splunk_home, '/var/lib/splunk/fishbucket')) 29 | FileUtils.chown(node['splunk']['user'], node['splunk']['group'], ::File.join(splunk_home, '/etc/passwd')) 30 | end 31 | end 32 | only_if { node.run_state['cerner_splunk']['splunk_forwarder_migrate'] } 33 | end 34 | 35 | include_recipe 'cerner_splunk::_start' 36 | -------------------------------------------------------------------------------- /recipes/image_prep.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | # Cookbook Name:: cerner_splunk 4 | # Recipe:: image_prep 5 | # 6 | # Make a universal forwarder part of a host image. 7 | # 8 | # Requires Chef 12.6.0 or above 9 | # 10 | # See http://docs.splunk.com/Documentation/Forwarder/6.5.2/Forwarder/Makeauniversalforwarderpartofahostimage 11 | 12 | execute 'clone-prep-clear-config' do 13 | command "#{node['splunk']['cmd']} clone-prep-clear-config" 14 | user node['splunk']['user'] 15 | group node['splunk']['group'] 16 | notifies :stop, 'service[splunk]', :before 17 | notifies :delete, 'file[splunk-marker]', :before 18 | end 19 | 20 | execute 'clean eventdata' do 21 | command "#{node['splunk']['cmd']} clean eventdata -f" 22 | user node['splunk']['user'] 23 | group node['splunk']['group'] 24 | only_if { node['splunk']['package']['base_name'] == 'splunk' } 25 | end 26 | -------------------------------------------------------------------------------- /recipes/search_head.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | # Cookbook Name:: cerner_splunk 4 | # Recipe:: search_head 5 | # 6 | # Configures a Search Head 7 | 8 | fail 'Search Head installation not currently supported on windows' if platform_family?('windows') 9 | 10 | ## Attributes 11 | instance_exec :search_head, &CernerSplunk::NODE_TYPE 12 | 13 | ## Recipes 14 | include_recipe 'cerner_splunk::_install_server' 15 | include_recipe 'cerner_splunk::_configure_ui' 16 | include_recipe 'cerner_splunk::_start' 17 | -------------------------------------------------------------------------------- /recipes/server.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | # Cookbook Name:: cerner_splunk 4 | # Recipe:: server 5 | # 6 | # Configures Splunk as a Standalone server (Indexer, Receiver, Search Head, Slave) 7 | 8 | fail 'Server installation not currently supported on windows' if platform_family?('windows') 9 | 10 | ## Attributes 11 | instance_exec :server, &CernerSplunk::NODE_TYPE 12 | 13 | ## Recipes 14 | include_recipe 'cerner_splunk::_install_server' 15 | include_recipe 'cerner_splunk::_configure_indexes' 16 | include_recipe 'cerner_splunk::_configure_ui' 17 | include_recipe 'cerner_splunk::_start' 18 | -------------------------------------------------------------------------------- /recipes/server_install_only.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | # Cookbook Name:: cerner_splunk 4 | # Recipe:: server_install_only 5 | # 6 | # Only run the basic install for the purposes of baking a base server image. Skips 7 | # the vast majority of configuration since it's likely environment specific. 8 | # 9 | 10 | fail 'Server installation not currently supported on windows' if platform_family?('windows') 11 | 12 | ## Attributes 13 | instance_exec :server, &CernerSplunk::NODE_TYPE 14 | node.run_state['cerner_splunk']['configure_apps_only'] = true 15 | 16 | include_recipe 'cerner_splunk::_install_server' 17 | include_recipe 'cerner_splunk::_start' 18 | include_recipe 'cerner_splunk::image_prep' 19 | -------------------------------------------------------------------------------- /recipes/shc_captain.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | # Cookbook Name:: cerner_splunk 4 | # Recipe:: shc_captain 5 | # 6 | 7 | fail 'Captain installation not currently supported on windows' if platform_family?('windows') 8 | 9 | search_heads = CernerSplunk.my_cluster_data(node)['shc_members'] 10 | 11 | fail 'Search Heads are not configured for sh clustering in the cluster databag' if search_heads.nil? || search_heads.empty? 12 | 13 | instance_exec :shc_captain, &CernerSplunk::NODE_TYPE 14 | ## Recipes 15 | include_recipe 'cerner_splunk::_install_server' 16 | include_recipe 'cerner_splunk::_start' 17 | 18 | cerner_splunk_sh_cluster 'Captain assignment' do 19 | search_heads search_heads 20 | admin_password(lazy { node.run_state['cerner_splunk']['admin-password'] }) 21 | action :initialize 22 | sensitive true 23 | end 24 | -------------------------------------------------------------------------------- /recipes/shc_deployer.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | # Cookbook Name:: cerner_splunk 4 | # Recipe:: shc_deployer 5 | # 6 | # Configures the Deployer in a Search Head Cluster 7 | 8 | fail 'Deployer installation not currently supported on windows' if platform_family?('windows') 9 | 10 | search_heads = CernerSplunk.my_cluster_data(node)['shc_members'] 11 | 12 | fail 'Search Heads are not configured for sh clustering in the cluster databag' if (search_heads.nil? || search_heads.empty?) && (node['splunk']['is_cloud'] == false) 13 | 14 | instance_exec :shc_deployer, &CernerSplunk::NODE_TYPE 15 | 16 | include_recipe 'cerner_splunk::_install_server' 17 | 18 | execute 'apply-shcluster-bundle' do # ~FC009 19 | command(lazy { "#{node['splunk']['cmd']} apply shcluster-bundle -target '#{search_heads.first}' --answer-yes -auth admin:#{node.run_state['cerner_splunk']['admin-password']}" }) 20 | environment 'HOME' => node['splunk']['home'] 21 | action :nothing 22 | sensitive true 23 | not_if { node['splunk']['is_cloud'] } 24 | end 25 | 26 | cluster_data = CernerSplunk.my_cluster_data(node) || {} 27 | 28 | cluster_bag = CernerSplunk::DataBag.load(cluster_data['apps'], pick_context: ['deployer-apps'], secret: node['splunk']['data_bag_secret']) || {} 29 | 30 | global_apps_bag = CernerSplunk::DataBag.load(cluster_bag['bag'], secret: node['splunk']['data_bag_secret']) || {} 31 | 32 | apps = CernerSplunk::SplunkApp.merge_hashes(global_apps_bag, cluster_bag) 33 | 34 | # Basic configs for the _shcluster app 35 | app_configs = { 36 | 'files' => { 37 | 'app.conf' => { 38 | 'ui' => { 39 | 'is_visible' => '0', 40 | 'label' => 'Deployer Configs App' 41 | } 42 | }, 43 | 'ui-prefs.conf' => node['splunk']['config']['ui_prefs'] 44 | }, 45 | 'permissions' => { 46 | '' => { 47 | 'access' => { 'read' => '*' }, 48 | 'export' => 'system' 49 | } 50 | } 51 | } 52 | 53 | { '_shcluster' => app_configs }.merge(apps).each do |app_name, app_data| 54 | download_data = app_data['download'] || {} 55 | 56 | splunk_app app_name do 57 | apps_dir "#{node['splunk']['home']}/etc/shcluster/apps" 58 | action app_data['remove'] ? :remove : :create 59 | url download_data['url'] 60 | version download_data['version'] 61 | local app_data['local'] 62 | files app_data['files'] 63 | lookups app_data['lookups'] 64 | permissions app_data['permissions'] 65 | notifies :run, 'execute[apply-shcluster-bundle]' 66 | end 67 | end 68 | 69 | include_recipe 'cerner_splunk::_configure_shc_roles' 70 | include_recipe 'cerner_splunk::_configure_shc_authentication' 71 | include_recipe 'cerner_splunk::_configure_shc_outputs' 72 | include_recipe 'cerner_splunk::_configure_shc_alerts' 73 | include_recipe 'cerner_splunk::_start' 74 | -------------------------------------------------------------------------------- /recipes/shc_remove_search_head.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | # Cookbook Name:: cerner_splunk 4 | # Recipe:: shc_remove_search_head 5 | # 6 | # Configures a Search Head in a SHC 7 | 8 | # Set the attribute to true so that the SH doesn't get added back to the cluster 9 | node.default['splunk']['bootstrap_shc_member'] = true 10 | 11 | include_recipe 'cerner_splunk::shc_search_head' 12 | 13 | cerner_splunk_sh_cluster 'remove SH from SHC' do 14 | admin_password(lazy { node.run_state['cerner_splunk']['admin-password'] }) 15 | action :remove 16 | sensitive true 17 | end 18 | 19 | ruby_block 'splunk-stop' do 20 | block { true } 21 | notifies :stop, 'service[splunk]', :immediately 22 | end 23 | -------------------------------------------------------------------------------- /recipes/shc_search_head.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | # Cookbook Name:: cerner_splunk 4 | # Recipe:: shc_search_head 5 | # 6 | # Configures a Search Head in a SHC 7 | 8 | fail 'Search Head installation not currently supported on windows' if platform_family?('windows') 9 | 10 | search_heads = CernerSplunk.my_cluster_data(node)['shc_members'] 11 | fail 'Search Heads are not configured for sh clustering in the cluster databag' if (search_heads.nil? || search_heads.empty?) && (node['splunk']['is_cloud'] == false) 12 | 13 | ## Attributes 14 | instance_exec :shc_search_head, &CernerSplunk::NODE_TYPE 15 | 16 | ## Recipes 17 | include_recipe 'cerner_splunk::_install_server' 18 | include_recipe 'cerner_splunk::_start' 19 | 20 | cerner_splunk_sh_cluster 'add SH to SHC' do 21 | search_heads search_heads 22 | admin_password(lazy { node.run_state['cerner_splunk']['admin-password'] }) 23 | not_if { node['splunk']['bootstrap_shc_member'] } 24 | sensitive true 25 | end 26 | -------------------------------------------------------------------------------- /resources/forwarder_monitors.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | # Cookbook Name:: cerner_splunk 4 | # Resource:: forwarder_monitors 5 | # 6 | # Drop in replacement for the existing splunk_forwarder_monitors 7 | 8 | actions :install, :delete 9 | default_action :install 10 | 11 | attribute :app, kind_of: String, name_attribute: true, regex: [/^[A-Za-z0-9_-]/] 12 | attribute :index, kind_of: String, required: false 13 | attribute :monitors, kind_of: Array, default: [] 14 | 15 | provides :splunk_forwarder_monitors if respond_to?(:provides) 16 | provides :cerner_splunk_forwarder_monitors if respond_to?(:provides) 17 | 18 | def initialize(name, run_context = nil) 19 | super 20 | @index = node['splunk']['main_project_index'] 21 | end 22 | 23 | def after_created 24 | super 25 | Chef::Application.fatal!("node['splunk']['home'] is not defined, ensure your run list is configured to run the cerner_splunk recipe before this point!") unless node['splunk']['home'] 26 | end 27 | -------------------------------------------------------------------------------- /resources/sh_cluster.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | # Cookbook Name:: odw_cron 4 | # Resource:: sh_cluster 5 | # 6 | provides :sh_cluster 7 | 8 | actions :initialize, :add, :remove 9 | default_action :add 10 | attribute :search_heads, kind_of: Array 11 | attribute :admin_password, kind_of: String 12 | -------------------------------------------------------------------------------- /spec/cookbooks/cerner_splunk_test/attributes/default.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | default[:splunk][:groups] = ['vagrant'] 4 | -------------------------------------------------------------------------------- /spec/cookbooks/cerner_splunk_test/metadata.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | name 'cerner_splunk_test' 4 | maintainer 'Operations Infrastructure Team - Cerner Innovation, Inc.' 5 | maintainer_email 'DL_Population_Health_IP_OpsInfra@cerner.com' 6 | license 'Apache 2.0' 7 | description 'Tests the cerner_splunk cookbook' 8 | version '0.0.1' 9 | 10 | depends 'cerner_splunk', '>= 1.2.0' 11 | 12 | supports 'redhat', '>= 5.5' 13 | supports 'ubuntu', '>= 12.04' 14 | -------------------------------------------------------------------------------- /spec/cookbooks/cerner_splunk_test/providers/lwrp.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | use_inline_resources 4 | 5 | action :go do 6 | cerner_splunk_forwarder_monitors new_resource.name do 7 | app new_resource.app 8 | index new_resource.index unless new_resource.index.nil? 9 | monitors new_resource.monitors 10 | end 11 | end 12 | -------------------------------------------------------------------------------- /spec/cookbooks/cerner_splunk_test/recipes/configure_guids.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | # Cookbook Name:: cerner_splunk_test 4 | # Recipe:: configure_guids 5 | # 6 | # Configures the GUIDS for cluster slaves. 7 | 8 | guid_c1_slave1 = 'aae84706-a70d-4134-951d-93a6541011fa' 9 | guid_c1_slave2 = '9d8f6bb8-49b2-463e-afdd-aedf267526e4' 10 | guid_c1_slave3 = '3da644f5-6750-4d07-b158-0cf42c8a6153' 11 | 12 | path = "#{node['splunk']['home']}/etc/instance.cfg" 13 | 14 | guid = 15 | case node['hostname'] 16 | when 'slave01' 17 | guid_c1_slave1 18 | when 'slave02' 19 | guid_c1_slave2 20 | when 'slave03' 21 | guid_c1_slave3 22 | end 23 | 24 | template path do 25 | source 'instance.cfg.erb' 26 | variables guid: guid 27 | notifies :touch, 'file[splunk-marker]', :immediately 28 | end 29 | -------------------------------------------------------------------------------- /spec/cookbooks/cerner_splunk_test/recipes/default.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | # Cookbook Name:: cerner_splunk_test 4 | # Recipe:: default 5 | # 6 | # Invokes the LWRP of the cerner_splunk Cookbook 7 | 8 | directory '/testlogs' do 9 | owner 'vagrant' 10 | group 'vagrant' 11 | mode '0750' 12 | end 13 | 14 | %w[one two three four].each do |dir| 15 | directory "/testlogs/#{dir}" do 16 | owner 'vagrant' 17 | group 'vagrant' 18 | mode '0750' 19 | end 20 | (1..3).each do |i| 21 | template "/testlogs/#{dir}/access#{i}.log" do 22 | backup false 23 | source 'access.log.erb' 24 | owner 'vagrant' 25 | group 'vagrant' 26 | mode '0640' 27 | end 28 | end 29 | end 30 | 31 | splunk_forwarder_monitors 'foo' do 32 | index 'pop_health' 33 | monitors [{ 34 | path: '/testlogs/two/access1.log', 35 | sourcetype: 'access_combined', 36 | index: 'bobs_index_emporium' 37 | }] 38 | end 39 | 40 | cerner_splunk_forwarder_monitors 'bar' do 41 | index 'pop_health' 42 | monitors [{ 43 | path: '/testlogs/one/*.log', 44 | sourcetype: 'access_combined' 45 | }] 46 | end 47 | 48 | cerner_splunk_test_lwrp 'baz' do 49 | monitors [{ 50 | path: '/testlogs/three/access2.log', 51 | sourcetype: 'access_combined' 52 | }, { 53 | path: '/testlogs/four/access3.log', 54 | sourcetype: 'access_combined', 55 | index: 'bobs_index_emporium' 56 | }] 57 | end 58 | -------------------------------------------------------------------------------- /spec/cookbooks/cerner_splunk_test/recipes/install_libarchive.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | # Cookbook Name:: cerner_splunk_test 4 | # Recipe:: install_libarchive 5 | # 6 | # Installs the libarchive package to allow tar extraction to use ffi-libarchive. 7 | 8 | # In chef 14 they attempt to embed libarchive, but it doesn't work 9 | # So remove it and install the package ourselves. 10 | execute 'remove files' do 11 | command 'rm -rf /opt/chef/embedded/lib/libarchive.so*' 12 | not_if { platform_family?('windows') } 13 | end 14 | 15 | execute 'add powertools repo' do 16 | command 'yum config-manager --set-enabled powertools' 17 | only_if { platform?('centos') && platform_version >= 8 } 18 | end 19 | 20 | if node['platform_family'] == 'debian' 21 | libarchive_package = 'libarchive-dev' 22 | 23 | execute 'apt-get update' do 24 | command 'apt-get update' 25 | end 26 | else 27 | libarchive_package = 'libarchive-devel' 28 | end 29 | 30 | package libarchive_package do 31 | action :install 32 | not_if { platform_family?('windows') } 33 | end 34 | 35 | chef_gem 'ffi-libarchive' do 36 | compile_time true 37 | end 38 | -------------------------------------------------------------------------------- /spec/cookbooks/cerner_splunk_test/resources/lwrp.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | default_action :go 4 | 5 | attribute :app, kind_of: String, name_attribute: true, regex: [/^[A-Za-z0-9_-]/] 6 | attribute :index, kind_of: String, required: false 7 | attribute :monitors, kind_of: Array, default: [] 8 | -------------------------------------------------------------------------------- /spec/cookbooks/cerner_splunk_test/templates/default/access.log.erb: -------------------------------------------------------------------------------- 1 | <% time = Time.now - 3600 2 | 3 | (1..10).each do |x| 4 | time = time + x 5 | -%> 6 | <%=[*1..254].sample(4).join('.')%> - webdev [<%=time.strftime("%d/%b/%Y:%T %z")%>] "GET / HTTP/1.0" 200 0442 "-" "check_http/1.10 (nagios-plugins 1.4)" 7 | <% end %> 8 | -------------------------------------------------------------------------------- /spec/cookbooks/cerner_splunk_test/templates/default/instance.cfg.erb: -------------------------------------------------------------------------------- 1 | [general] 2 | guid = <%= @guid %> 3 | -------------------------------------------------------------------------------- /spec/unit/libraries/splunk_app_spec.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require_relative '../spec_helper' 4 | require 'splunk_app' 5 | 6 | describe 'CernerSplunk::SplunkApp.merge_hashes' do 7 | let(:one) { {} } 8 | let(:two) { {} } 9 | let(:three) { {} } 10 | subject { CernerSplunk::SplunkApp.merge_hashes(one, two, three) } 11 | 12 | context 'when given empty hashes' do 13 | it { is_expected.to eq({}) } 14 | end 15 | 16 | context 'when given different keys' do 17 | let(:one) { { foo: { a: 'foo' } } } 18 | let(:two) { { bar: { a: 'foo' } } } 19 | let(:three) { { baz: {} } } 20 | 21 | it { is_expected.to eq(foo: { a: 'foo' }, bar: { a: 'foo' }) } 22 | end 23 | 24 | context 'when given same keys' do 25 | let(:one) { { foo: { a: 'foo' } } } 26 | let(:two) { { foo: { a: 'bar' } } } 27 | let(:three) { { foo: { a: 'baz' } } } 28 | 29 | it { is_expected.to eq(foo: { a: 'baz' }) } 30 | end 31 | 32 | context 'when given different subkeys' do 33 | let(:one) { { foo: { a: 'foo' } } } 34 | let(:two) { { foo: { b: { a: 'foo' } } } } 35 | let(:three) { { foo: { b: { b: 'bar' }, c: 'baz' } } } 36 | 37 | it { is_expected.to eq(foo: { a: 'foo', b: { a: 'foo', b: 'bar' }, c: 'baz' }) } 38 | end 39 | 40 | context 'when given a key with a non-hash value' do 41 | let(:one) { { foo: 'bar' } } 42 | 43 | it { is_expected.to eq({}) } 44 | end 45 | end 46 | -------------------------------------------------------------------------------- /spec/unit/libraries/splunk_password_spec.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require_relative '../spec_helper' 4 | require 'splunk_password' 5 | require 'rc4' 6 | 7 | describe 'CernerSplunk::splunk_password' do 8 | let(:splunk_secret) { 'qYFEHts8G0E/ABbp' } 9 | let(:password) { 'password' } 10 | 11 | describe '.splunk_encrypt_password' do 12 | context 'when the password has already been encrypted by pre splunk 7.2' do 13 | let(:password) { '$1$RhLQiUyG3Qc7' } 14 | 15 | it 'does not re-encrypt it again' do 16 | encrypted = CernerSplunk.splunk_encrypt_password(password, splunk_secret, true) 17 | expect(encrypted).to eq(password) 18 | end 19 | end 20 | context 'when the password has already been encrypted by splunk 7.2+' do 21 | let(:password) { '$7$password' } 22 | 23 | it 'does not re-encrypt it again' do 24 | encrypted = CernerSplunk.splunk_encrypt_password(password, splunk_secret, true) 25 | expect(encrypted).to eq(password) 26 | end 27 | end 28 | end 29 | 30 | describe '.splunk_decrypt_password' do 31 | context 'when decrypting an encrypted password' do 32 | subject { CernerSplunk.splunk_encrypt_password(password, splunk_secret, true) } 33 | let(:decrypted_password) { CernerSplunk.splunk_decrypt_password(subject, splunk_secret, true) } 34 | 35 | it 'results in the original value' do 36 | expect(decrypted_password).to eq(password) 37 | end 38 | end 39 | 40 | context 'when decrypting an encrypted sslconfig password' do 41 | subject { CernerSplunk.splunk_encrypt_password(password, splunk_secret, false) } 42 | let(:decrypted_password) { CernerSplunk.splunk_decrypt_password(subject, splunk_secret, false) } 43 | 44 | it 'results in the original value' do 45 | expect(decrypted_password).to eq(password) 46 | end 47 | end 48 | end 49 | end 50 | -------------------------------------------------------------------------------- /spec/unit/libraries/unit_converter_spec.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require_relative '../spec_helper' 4 | require 'unit_converter' 5 | 6 | describe 'unit_converter' do 7 | subject { CernerSplunk.convert_to_bytes(size) } 8 | 9 | context 'when size specified in TB' do 10 | let(:size) { '2TB' } 11 | it { is_expected.to eq(2_199_023_255_552) } 12 | end 13 | 14 | context 'when size specified in MB' do 15 | let(:size) { '2MB' } 16 | it { is_expected.to eq(2_097_152) } 17 | end 18 | 19 | context 'when size specified in KB' do 20 | let(:size) { '2KB' } 21 | it { is_expected.to eq(2048) } 22 | end 23 | 24 | context 'when size specified in B' do 25 | let(:size) { '2048B' } 26 | it { is_expected.to eq(2048) } 27 | end 28 | 29 | context 'when size has no unit specified' do 30 | let(:size) { '2048' } 31 | it { is_expected.to eq(2048) } 32 | end 33 | 34 | context 'when unit has one letter' do 35 | let(:size) { '2K' } 36 | it { is_expected.to eq(2048) } 37 | end 38 | 39 | context 'when unit has three letters' do 40 | let(:size) { '2KiB' } 41 | it { is_expected.to eq(2048) } 42 | end 43 | 44 | context 'when input has space between size and unit' do 45 | let(:size) { '2 KB' } 46 | it { is_expected.to eq(2048) } 47 | end 48 | 49 | context 'when input has more than one space' do 50 | let(:size) { ' 2 KB ' } 51 | it { is_expected.to eq(2048) } 52 | end 53 | 54 | context 'when size is in lower case' do 55 | let(:size) { '2kb' } 56 | it { is_expected.to eq(2048) } 57 | end 58 | 59 | context 'when size is in upper case' do 60 | let(:size) { '2KIB' } 61 | it { is_expected.to eq(2048) } 62 | end 63 | 64 | context 'when size is a decimal' do 65 | let(:size) { '2.5KB' } 66 | it { is_expected.to eq(2560) } 67 | end 68 | 69 | context 'when size is a decimal, less than 1 and greater then zero' do 70 | let(:size) { '0.5KB' } 71 | it { is_expected.to eq(512) } 72 | end 73 | 74 | context 'when size is a decimal and ones place is nil' do 75 | let(:size) { '.5KB' } 76 | it { expect { subject }.to raise_error('Unparsable size input .5KB') } 77 | end 78 | 79 | context 'when size has an invalid unit' do 80 | let(:size) { '5mk' } 81 | it { expect { subject }.to raise_error('Unparsable size input 5mk') } 82 | end 83 | 84 | context 'when size only has invalid unit and no numeric value' do 85 | let(:size) { 'invalidunit' } 86 | it { expect { subject }.to raise_error('Unparsable size input invalidunit') } 87 | end 88 | 89 | context 'when input size is empty' do 90 | let(:size) { '' } 91 | it { expect { subject }.to raise_error('Unparsable size input ') } 92 | end 93 | end 94 | -------------------------------------------------------------------------------- /spec/unit/recipes/_configure_apps_spec.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require_relative '../spec_helper' 4 | 5 | describe 'cerner_splunk::_configure_apps' do 6 | subject do 7 | runner = ChefSpec::SoloRunner.new(platform: 'centos', version: '8') do |node| 8 | node.override['splunk']['apps'] = apps 9 | end 10 | runner.converge('cerner_splunk::_restart_marker', described_recipe) 11 | end 12 | 13 | context 'when there is no download url' do 14 | let(:apps) do 15 | { 16 | 'test_app' => { 17 | 'files' => { 18 | 'app.conf' => { 19 | 'ui' => { 20 | 'is_visible' => '1', 21 | 'label' => 'Test App' 22 | } 23 | } 24 | }, 25 | 'lookups' => { 26 | 'index-owners.csv' => 'http://33.33.33.33:5000/lookups/index-owners.csv', 27 | 'test.csv' => { 28 | 'url' => 'http://33.33.33.33:5000/lookups/test.csv', 29 | 'authorization' => 'test_bag/test_item:test_attribute' 30 | } 31 | } 32 | } 33 | } 34 | end 35 | 36 | it { is_expected.to_not be_nil } 37 | 38 | it 'installs the app with the expected attributes' do 39 | expected_attributes = { 40 | lookups: { 41 | 'index-owners.csv' => 'http://33.33.33.33:5000/lookups/index-owners.csv', 42 | 'test.csv' => { 43 | 'url' => 'http://33.33.33.33:5000/lookups/test.csv', 44 | 'authorization' => 'test_bag/test_item:test_attribute' 45 | } 46 | }, 47 | files: { 48 | 'app.conf' => { 49 | 'ui' => { 50 | 'is_visible' => '1', 51 | 'label' => 'Test App' 52 | } 53 | } 54 | } 55 | } 56 | expect(subject).to create_splunk_app('test_app').with(expected_attributes) 57 | end 58 | end 59 | 60 | context 'when there is a download url' do 61 | let(:apps) do 62 | { 63 | 'test_app' => { 64 | 'download' => { 65 | 'url' => 'http://33.33.33.33:5000/test_app.tgz', 66 | 'version' => '1.0', 67 | 'authorization' => 'test_bag/test_item:test_attribute' 68 | } 69 | } 70 | } 71 | end 72 | 73 | it { is_expected.to_not be_nil } 74 | 75 | it 'installs the app with the expected attributes' do 76 | expected_attributes = { 77 | url: 'http://33.33.33.33:5000/test_app.tgz', 78 | version: '1.0', 79 | authorization: 'test_bag/test_item:test_attribute' 80 | } 81 | expect(subject).to create_splunk_app('test_app').with(expected_attributes) 82 | end 83 | end 84 | 85 | context 'when remove is set to true' do 86 | let(:apps) do 87 | { 88 | 'test_app' => { 89 | 'remove' => true 90 | } 91 | } 92 | end 93 | 94 | it 'removes the app' do 95 | expect(subject).to remove_splunk_app('test_app') 96 | end 97 | end 98 | end 99 | -------------------------------------------------------------------------------- /spec/unit/recipes/_configure_logs_spec.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require_relative '../spec_helper' 4 | 5 | describe 'cerner_splunk::_configure_logs' do 6 | subject do 7 | runner = ChefSpec::SoloRunner.new(platform: 'centos', version: '6.10') do |node| 8 | node.override['splunk']['logs'] = logs 9 | end 10 | runner.converge('cerner_splunk::_restart_marker', described_recipe) 11 | end 12 | 13 | let(:logs) do 14 | { 15 | 'splunkd' => { 16 | 'appender.metrics.maxFileSize' => '10000', 17 | 'appender.metrics.maxBackupIndex' => '3' 18 | } 19 | } 20 | end 21 | 22 | it { is_expected.to_not be_nil } 23 | 24 | it 'installs the app with the expected attributes' do 25 | expected_attributes = { 26 | stanzas: { 27 | 'splunkd' => { 28 | 'appender.metrics.maxFileSize' => '10000', 29 | 'appender.metrics.maxBackupIndex' => '3' 30 | } 31 | } 32 | } 33 | expect(subject).to create_splunk_template('/etc/log-local.cfg').with(expected_attributes) 34 | end 35 | end 36 | -------------------------------------------------------------------------------- /spec/unit/recipes/_configure_secret_spec.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require_relative '../spec_helper' 4 | 5 | describe 'cerner_splunk::_configure_secret' do 6 | subject do 7 | runner = ChefSpec::SoloRunner.new(platform: platform, version: platform_version) do |node| 8 | node.override['splunk']['node_type'] = node_type 9 | node.override['splunk']['home'] = '/opt/splunk' 10 | node.override['splunk']['config']['secrets'] = node_config_secrets 11 | end 12 | runner.converge(described_recipe) 13 | end 14 | 15 | let(:platform) { 'centos' } 16 | let(:platform_version) { '8' } 17 | let(:node_type) { :server } 18 | 19 | context 'when the secret is configured for the current node' do 20 | let(:node_config_secrets) do 21 | { 22 | 'server' => 'cerner_splunk/secrets:splunk.secret' 23 | } 24 | end 25 | let(:secret_data_bag) do 26 | { 27 | 'splunk.secret' => configured_secret 28 | } 29 | end 30 | let(:configured_secret) { 'ThisIsMySplunkSecret' } 31 | 32 | before do 33 | allow(ChefVault::Item).to receive(:data_bag_item_type).and_return(:vault) 34 | allow(ChefVault::Item).to receive(:load).with('cerner_splunk', 'secrets').and_return(secret_data_bag) 35 | end 36 | 37 | it 'validates the secret file and writes the template' do 38 | expect(subject).to run_ruby_block('Check splunk.secret file') 39 | expect(subject).to create_file('splunk.secret').with(content: "#{configured_secret}\n") 40 | end 41 | 42 | context 'and the platform is windows' do 43 | let(:platform) { 'windows' } 44 | let(:platform_version) { '2012R2' } 45 | 46 | it 'does nothing' do 47 | expect(subject).not_to create_file('splunk.secret') 48 | end 49 | end 50 | 51 | context 'and the configured value does not indicate a valid data bag item' do 52 | let(:node_config_secrets) do 53 | { 54 | 'server' => 'asfasdf' 55 | } 56 | end 57 | 58 | it 'raises an error' do 59 | message = 'Configured splunk secret must resolve to a String' 60 | expect { subject }.to raise_error(RuntimeError, message) 61 | end 62 | end 63 | 64 | context 'and the configured data bag item key is not a string' do 65 | let(:secret_data_bag) do 66 | { 67 | 'splunk.secret' => { this: 'is', not_a: 'string' } 68 | } 69 | end 70 | 71 | it 'raises an error' do 72 | message = 'Configured splunk secret must resolve to a String' 73 | expect { subject }.to raise_error(RuntimeError, message) 74 | end 75 | end 76 | end 77 | 78 | context 'when the secret is configured for a different node' do 79 | let(:node_config_secrets) do 80 | { 81 | 'forwarder' => 'cerner_splunk/secrets:splunk.secret' 82 | } 83 | end 84 | 85 | it 'does nothing' do 86 | expect(subject).not_to create_file('splunk.secret') 87 | end 88 | end 89 | 90 | context 'when the secret is not configured' do 91 | let(:node_config_secrets) { nil } 92 | 93 | it 'does nothing' do 94 | expect(subject).not_to create_file('splunk.secret') 95 | end 96 | end 97 | end 98 | -------------------------------------------------------------------------------- /spec/unit/recipes/_configure_shc_alerts_spec.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require_relative '../spec_helper' 4 | 5 | describe 'cerner_splunk::_configure_shc_alerts' do 6 | subject do 7 | runner = ChefSpec::SoloRunner.new(platform: 'centos', version: '6.10') do |node| 8 | node.override['splunk']['config']['clusters'] = ['cerner_splunk/cluster'] 9 | node.override['splunk']['config']['alerts'] = 'cerner_splunk/alerts' 10 | end 11 | runner.converge('cerner_splunk::shc_deployer', described_recipe) 12 | end 13 | 14 | let(:cluster_config) do 15 | { 16 | 'receivers' => ['33.33.33.20'], 17 | 'license_uri' => nil, 18 | 'receiver_settings' => { 19 | 'splunktcp' => { 20 | 'port' => '9997' 21 | } 22 | }, 23 | 'indexes' => 'cerner_splunk/indexes', 24 | 'apps' => 'cerner_splunk/apps', 25 | 'shc_members' => [ 26 | 'https://33.33.33.15:8089', 27 | 'https://33.33.33.17:8089' 28 | ] 29 | } 30 | end 31 | 32 | let(:alerts) do 33 | { 34 | 'shcluster' => { 35 | 'bag' => ':base', 36 | 'email' => { 37 | 'from' => 'splunk@test.com' 38 | } 39 | }, 40 | 'base' => { 41 | 'email' => { 42 | 'mailserver' => 'smtprr.example.com', 43 | 'from' => 'splunk@example.com' 44 | } 45 | } 46 | } 47 | end 48 | 49 | before do 50 | allow(ChefVault::Item).to receive(:data_bag_item_type).and_return(:normal) 51 | stub_data_bag_item('cerner_splunk', 'cluster').and_return(cluster_config) 52 | stub_data_bag_item('cerner_splunk', 'indexes').and_return({}) 53 | stub_data_bag_item('cerner_splunk', 'apps').and_return({}) 54 | stub_data_bag_item('cerner_splunk', 'alerts').and_return(alerts) 55 | end 56 | 57 | after do 58 | CernerSplunk.reset 59 | end 60 | 61 | it 'writes the alert_actions.conf file with the appropriate alert configs' do 62 | expected_attributes = { 63 | stanzas: { 64 | 'email' => { 65 | 'mailserver' => 'smtprr.example.com', 66 | 'from' => 'splunk@test.com' 67 | } 68 | } 69 | } 70 | 71 | expect(subject).to create_splunk_template('shcluster/_shcluster/alert_actions.conf').with(expected_attributes) 72 | expect(subject.splunk_template('shcluster/_shcluster/alert_actions.conf')).to notify('execute[apply-shcluster-bundle]').to(:run) 73 | end 74 | end 75 | -------------------------------------------------------------------------------- /spec/unit/recipes/_configure_shc_outputs_spec.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require_relative '../spec_helper' 4 | 5 | describe 'cerner_splunk::_configure_shc_outputs' do 6 | subject do 7 | runner = ChefSpec::SoloRunner.new(platform: 'centos', version: '6.10') do |node| 8 | node.override['splunk']['config']['clusters'] = ['cerner_splunk/cluster'] 9 | end 10 | runner.converge('cerner_splunk::shc_deployer', described_recipe) 11 | end 12 | 13 | let(:cluster_config) do 14 | { 15 | 'receivers' => ['33.33.33.11', '33.33.33.12'], 16 | 'license_uri' => nil, 17 | 'receiver_settings' => { 18 | 'splunktcp' => { 19 | 'port' => '9997' 20 | } 21 | }, 22 | 'indexes' => 'cerner_splunk/indexes', 23 | 'apps' => 'cerner_splunk/apps', 24 | 'shc_members' => [ 25 | 'https://33.33.33.15:8089', 26 | 'https://33.33.33.17:8089' 27 | ] 28 | } 29 | end 30 | 31 | before do 32 | allow(ChefVault::Item).to receive(:data_bag_item_type).and_return(:normal) 33 | stub_data_bag_item('cerner_splunk', 'cluster').and_return(cluster_config) 34 | stub_data_bag_item('cerner_splunk', 'indexes').and_return({}) 35 | stub_data_bag_item('cerner_splunk', 'apps').and_return({}) 36 | end 37 | 38 | after do 39 | CernerSplunk.reset 40 | end 41 | 42 | it 'writes the outputs.conf file with the appropriate configs' do 43 | expected_attributes = { 44 | stanzas: { 45 | 'tcpout' => { 46 | 'forwardedindex.0.whitelist' => '.*', 'forwardedindex.1.blacklist' => '_thefishbucket', 'forwardedindex.2.whitelist' => '' 47 | }, 48 | 'tcpout:cerner_splunk/cluster' => { 49 | 'server' => '33.33.33.11:9997,33.33.33.12:9997' 50 | } 51 | } 52 | } 53 | 54 | expect(subject).to create_splunk_template('shcluster/_shcluster/outputs.conf').with(expected_attributes) 55 | expect(subject.splunk_template('shcluster/_shcluster/outputs.conf')).to notify('execute[apply-shcluster-bundle]').to(:run) 56 | end 57 | end 58 | -------------------------------------------------------------------------------- /spec/unit/recipes/_configure_shc_roles_spec.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require_relative '../spec_helper' 4 | 5 | describe 'cerner_splunk::_configure_shc_roles' do 6 | subject do 7 | runner = ChefSpec::SoloRunner.new(platform: 'centos', version: '6.10') do |node| 8 | node.override['splunk']['config']['clusters'] = ['cerner_splunk/cluster'] 9 | node.override['splunk']['config']['roles'] = 'cerner_splunk/roles' 10 | end 11 | runner.converge('cerner_splunk::shc_deployer', described_recipe) 12 | end 13 | 14 | let(:cluster_config) do 15 | { 16 | 'receivers' => ['33.33.33.20'], 17 | 'license_uri' => nil, 18 | 'receiver_settings' => { 19 | 'splunktcp' => { 20 | 'port' => '9997' 21 | } 22 | }, 23 | 'indexes' => 'cerner_splunk/indexes', 24 | 'apps' => 'cerner_splunk/apps', 25 | 'shc_members' => [ 26 | 'https://33.33.33.15:8089', 27 | 'https://33.33.33.17:8089' 28 | ] 29 | } 30 | end 31 | 32 | let(:roles) do 33 | { 34 | 'shcluster' => { 35 | 'default' => { 36 | 'app' => 'launcher', 37 | 'tz' => 'America/Chicago', 38 | 'showWhatsNew' => 0, 39 | 'capabilities' => ['!schedule_rtsearch'] 40 | } 41 | } 42 | } 43 | end 44 | 45 | before do 46 | allow(ChefVault::Item).to receive(:data_bag_item_type).and_return(:normal) 47 | stub_data_bag_item('cerner_splunk', 'cluster').and_return(cluster_config) 48 | stub_data_bag_item('cerner_splunk', 'indexes').and_return({}) 49 | stub_data_bag_item('cerner_splunk', 'apps').and_return({}) 50 | stub_data_bag_item('cerner_splunk', 'roles').and_return(roles) 51 | end 52 | 53 | after do 54 | CernerSplunk.reset 55 | end 56 | 57 | it 'writes the authorize.conf file with the appropriate access and capabilities' do 58 | expected_attributes = { 59 | stanzas: { 60 | 'default' => { 61 | 'schedule_rtsearch' => 'disabled' 62 | } 63 | } 64 | } 65 | 66 | expect(subject).to create_splunk_template('shcluster/_shcluster/authorize.conf').with(expected_attributes) 67 | expect(subject.splunk_template('shcluster/_shcluster/authorize.conf')).to notify('execute[apply-shcluster-bundle]').to(:run) 68 | end 69 | 70 | it 'writes the user-prefs.conf file with the appropriate user preferences' do 71 | expected_attributes = { 72 | stanzas: { 73 | 'general_default' => { 74 | 'default_namespace' => 'launcher', 75 | 'tz' => 'America/Chicago', 76 | 'showWhatsNew' => 0 77 | } 78 | } 79 | } 80 | 81 | expect(subject).to create_splunk_template('shcluster/_shcluster/user-prefs.conf').with(expected_attributes) 82 | expect(subject.splunk_template('shcluster/_shcluster/user-prefs.conf')).to notify('execute[apply-shcluster-bundle]').to(:run) 83 | end 84 | end 85 | -------------------------------------------------------------------------------- /spec/unit/recipes/_configure_spec.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require_relative '../spec_helper' 4 | 5 | describe 'cerner_splunk::_configure' do 6 | subject do 7 | runner = ChefSpec::SoloRunner.new(platform: 'centos', version: '6.10') do |node| 8 | node.override['splunk']['config']['clusters'] = clusters 9 | node.override['splunk']['node_type'] = node_type 10 | end 11 | runner.converge('cerner_splunk::_restart_marker', described_recipe) 12 | end 13 | 14 | let(:node_type) { :server } 15 | 16 | let(:cluster_config) do 17 | { 18 | 'receivers' => ['33.33.33.20'], 19 | 'receiver_settings' => { 20 | 'splunktcp' => { 21 | 'port' => '9997' 22 | } 23 | }, 24 | 'indexes' => 'cerner_splunk/indexes' 25 | } 26 | end 27 | 28 | let(:clusters) { ['cerner_splunk/cluster'] } 29 | 30 | before do 31 | allow(ChefVault::Item).to receive(:data_bag_item_type).and_return(:normal) 32 | stub_data_bag_item('cerner_splunk', 'cluster').and_return(cluster_config) 33 | stub_data_bag_item('cerner_splunk', 'indexes').and_return({}) 34 | end 35 | 36 | after do 37 | CernerSplunk.reset 38 | end 39 | 40 | context 'when cluster databag is specified' do 41 | it 'includes cerner_splunk::_configure_server recipe' do 42 | expect(subject).to include_recipe('cerner_splunk::_configure_server') 43 | end 44 | 45 | it 'includes cerner_splunk::_configure_roles recipe' do 46 | expect(subject).to include_recipe('cerner_splunk::_configure_roles') 47 | end 48 | 49 | it 'includes cerner_splunk::_configure_authentication recipe' do 50 | expect(subject).to include_recipe('cerner_splunk::_configure_authentication') 51 | end 52 | 53 | it 'includes cerner_splunk::_configure_inputs recipe' do 54 | expect(subject).to include_recipe('cerner_splunk::_configure_inputs') 55 | end 56 | 57 | it 'includes cerner_splunk::_configure_outputs recipe' do 58 | expect(subject).to include_recipe('cerner_splunk::_configure_outputs') 59 | end 60 | 61 | it 'includes cerner_splunk::_configure_alerts recipe' do 62 | expect(subject).to include_recipe('cerner_splunk::_configure_alerts') 63 | end 64 | 65 | it 'includes cerner_splunk::_configure_apps recipe' do 66 | expect(subject).to include_recipe('cerner_splunk::_configure_apps') 67 | end 68 | end 69 | 70 | context 'when cluster is not specified' do 71 | let(:clusters) { [] } 72 | 73 | context 'when node is a forwarder' do 74 | let(:node_type) { :forwarder } 75 | 76 | it 'should raise a warning message' do 77 | expect(Chef::Log).to receive(:warn).with('No cluster data bag configured, ensure your outputs are configured elsewhere.') 78 | subject 79 | end 80 | end 81 | 82 | context 'when node is not a forwarder' do 83 | it 'should raise an exception' do 84 | expect { subject }.to raise_error(StandardError, /You need to configure at least one cluster databag./) 85 | end 86 | end 87 | end 88 | end 89 | -------------------------------------------------------------------------------- /spec/unit/recipes/_migrate_forwarder_spec.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require_relative '../spec_helper' 4 | 5 | describe 'cerner_splunk::_migrate_forwarder' do 6 | subject do 7 | runner = ChefSpec::SoloRunner.new(platform: platform, version: platform_version) do |node| 8 | node.override['splunk']['package']['base_name'] = 'splunk' 9 | end 10 | runner.converge(described_recipe) 11 | end 12 | 13 | let(:platform) { 'centos' } 14 | let(:platform_version) { '6.10' } 15 | 16 | it 'stops splunk service' do 17 | expect(subject).to stop_service('splunk').with(service_name: 'splunk') 18 | end 19 | 20 | it 'runs backup-splunk-artifacts ruby block' do 21 | expect(subject).to run_ruby_block('backup-splunk-artifacts') 22 | end 23 | 24 | context 'when platform family is windows' do 25 | let(:platform) { 'windows' } 26 | let(:platform_version) { '2012R2' } 27 | 28 | let(:programw6432) { 'C:/home' } 29 | 30 | before do 31 | ENV['PROGRAMW6432'] = programw6432 32 | 33 | # Stub alt separator for windows in Ruby 1.9.3 34 | stub_const('::File::ALT_SEPARATOR', '/') 35 | end 36 | 37 | it 'deletes the splunk home directory' do 38 | expect(subject).to delete_directory(::File.join(programw6432, 'splunkforwarder')) 39 | end 40 | end 41 | 42 | context 'when platform family is linux' do 43 | let(:platform) { 'centos' } 44 | let(:platform_version) { '8' } 45 | 46 | it 'deletes the splunk home directory' do 47 | expect(subject).to delete_directory('/opt/splunkforwarder') 48 | end 49 | end 50 | 51 | it 'removes splunk package with opposite package name' do 52 | expect(subject).to remove_package('splunkforwarder') 53 | end 54 | end 55 | -------------------------------------------------------------------------------- /spec/unit/recipes/_restart_marker_spec.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require_relative '../spec_helper' 4 | 5 | describe 'cerner_splunk::_restart_marker' do 6 | subject do 7 | runner = ChefSpec::SoloRunner.new(platform: 'centos', version: '6.10') 8 | runner.converge(described_recipe) 9 | end 10 | 11 | before do 12 | allow(CernerSplunk).to receive(:restart_marker_file).and_return('/foo/bar') 13 | end 14 | 15 | it 'does nothing with the splunk marker file' do 16 | expect(subject.file('splunk-marker')).to do_nothing 17 | end 18 | end 19 | -------------------------------------------------------------------------------- /spec/unit/recipes/_user_management_spec.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require_relative '../spec_helper' 4 | 5 | describe 'cerner_splunk::_user_management' do 6 | subject do 7 | runner = ChefSpec::SoloRunner.new(platform: platform, version: platform_version) do |node| 8 | node.override['splunk']['user'] = 'splunk' 9 | node.override['splunk']['user_home'] = user_home 10 | end 11 | runner.converge('cerner_splunk::_restart_marker', described_recipe) 12 | end 13 | 14 | let(:platform) { 'centos' } 15 | let(:platform_version) { '6.10' } 16 | let(:user_home) { nil } 17 | 18 | let(:windows) { nil } 19 | 20 | before do 21 | allow(Chef::Recipe).to receive(:platform_family?).with('windows').and_return(windows) 22 | end 23 | 24 | after do 25 | CernerSplunk.reset 26 | end 27 | 28 | context 'when platform is windows' do 29 | let(:platform) { 'windows' } 30 | let(:platform_version) { '2012R2' } 31 | let(:windows) { true } 32 | 33 | it 'does nothing' do 34 | expect(subject).not_to create_user('splunk') 35 | end 36 | end 37 | 38 | context 'when platform is rhel' do 39 | let(:platform) { 'centos' } 40 | let(:platform_version) { '8' } 41 | 42 | context 'when the user_home is not set' do 43 | it 'ensures the splunk user exists' do 44 | expected_attrs = { 45 | manage_home: false 46 | } 47 | expect(subject).to create_user('splunk').with(expected_attrs) 48 | end 49 | 50 | it 'does not ensure the home directory exists' do 51 | expect(subject).not_to create_directory('/home/splunk') 52 | end 53 | end 54 | 55 | context 'when the user_home is set' do 56 | let(:user_home) { '/home/splunk' } 57 | it 'ensures the splunk user exists with the configured home directory' do 58 | expected_attrs = { 59 | manage_home: false, 60 | home: user_home 61 | } 62 | expect(subject).to create_user('splunk').with(expected_attrs) 63 | end 64 | 65 | it 'ensures the home directory exists' do 66 | expected_attrs = { 67 | user: 'splunk', 68 | group: 'splunk', 69 | mode: '0700' 70 | } 71 | expect(subject).to create_directory('/home/splunk').with(expected_attrs) 72 | end 73 | end 74 | end 75 | end 76 | -------------------------------------------------------------------------------- /spec/unit/recipes/forwarder_spec.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require_relative '../spec_helper' 4 | 5 | describe 'cerner_splunk::forwarder' do 6 | subject do 7 | runner = ChefSpec::SoloRunner.new(platform: 'centos', version: '6.10') do |node| 8 | node.override['splunk']['config']['clusters'] = ['cerner_splunk/cluster'] 9 | end 10 | runner.converge(described_recipe) 11 | end 12 | 13 | let(:cluster_config) do 14 | { 15 | 'receivers' => ['33.33.33.20'], 16 | 'license_uri' => nil, 17 | 'receiver_settings' => { 18 | 'splunktcp' => { 19 | 'port' => '9997' 20 | } 21 | }, 22 | 'indexes' => 'cerner_splunk/indexes' 23 | } 24 | end 25 | 26 | let(:splunk_installed) { nil } 27 | 28 | before do 29 | allow(ChefVault::Item).to receive(:data_bag_item_type).and_return(:normal) 30 | stub_data_bag_item('cerner_splunk', 'cluster').and_return(cluster_config) 31 | stub_data_bag_item('cerner_splunk', 'indexes').and_return({}) 32 | 33 | allow(Dir).to receive(:exist?).and_call_original 34 | allow(Dir).to receive(:exist?).with('/opt/splunk').and_return(splunk_installed) 35 | end 36 | 37 | after do 38 | CernerSplunk.reset 39 | end 40 | 41 | context 'when splunk is installed' do 42 | let(:splunk_installed) { true } 43 | 44 | it 'raises error' do 45 | message = 'Different Splunk artifact already installed on node. Failing as an unsupported install' 46 | expect { subject }.to raise_error(RuntimeError, message) 47 | end 48 | end 49 | 50 | context 'when splunk is not installed' do 51 | let(:splunk_installed) { false } 52 | 53 | it 'includes default cerner_splunk::_install recipe' do 54 | expect(subject).to include_recipe('cerner_splunk::_install') 55 | end 56 | 57 | it 'includes default cerner_splunk::_start recipe' do 58 | expect(subject).to include_recipe('cerner_splunk::_start') 59 | end 60 | end 61 | end 62 | -------------------------------------------------------------------------------- /spec/unit/recipes/heavy_forwarder_spec.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require_relative '../spec_helper' 4 | 5 | describe 'cerner_splunk::heavy_forwarder' do 6 | subject do 7 | runner = ChefSpec::SoloRunner.new(platform: 'centos', version: '6.10') do |node| 8 | node.override['splunk']['config']['clusters'] = ['cerner_splunk/cluster'] 9 | node.run_state['cerner_splunk'] = {} 10 | node.run_state['cerner_splunk']['splunk_forwarder_migrate'] = splunk_installed 11 | end 12 | runner.converge(described_recipe) 13 | end 14 | 15 | let(:cluster_config) do 16 | { 17 | 'receivers' => ['33.33.33.20'], 18 | 'license_uri' => nil, 19 | 'receiver_settings' => { 20 | 'splunktcp' => { 21 | 'port' => '9997' 22 | } 23 | }, 24 | 'indexes' => 'cerner_splunk/indexes' 25 | } 26 | end 27 | 28 | let(:splunk_installed) { nil } 29 | 30 | before do 31 | allow(ChefVault::Item).to receive(:data_bag_item_type).and_return(:normal) 32 | stub_data_bag_item('cerner_splunk', 'cluster').and_return(cluster_config) 33 | stub_data_bag_item('cerner_splunk', 'indexes').and_return({}) 34 | 35 | allow(Dir).to receive(:exist?).and_call_original 36 | allow(Dir).to receive(:exist?).with('/opt/splunkforwarder').and_return(splunk_installed) 37 | end 38 | 39 | after do 40 | CernerSplunk.reset 41 | end 42 | 43 | context 'when splunkforwarder is installed' do 44 | let(:splunk_installed) { true } 45 | 46 | it 'includes cerner_splunk::_migrate_forwarder recipe' do 47 | expect(subject).to include_recipe('cerner_splunk::_migrate_forwarder') 48 | end 49 | 50 | it 'runs initialize-splunk-backup-artifacts ruby block' do 51 | expect(subject).to run_ruby_block('initialize-splunk-backup-artifacts') 52 | end 53 | end 54 | 55 | context 'when splunkforwarder is not installed' do 56 | let(:splunk_installed) { false } 57 | 58 | it 'does not include cerner_splunk::_migrate_forwarder recipe' do 59 | expect(subject).not_to include_recipe('cerner_splunk::_migrate_forwarder') 60 | end 61 | 62 | it 'does not run initialize-splunk-backup-artifacts ruby block' do 63 | expect(subject).not_to run_ruby_block('initialize-splunk-backup-artifacts') 64 | end 65 | end 66 | 67 | it 'includes default cerner_splunk::_install recipe' do 68 | expect(subject).to include_recipe('cerner_splunk::_install') 69 | end 70 | 71 | it 'includes default cerner_splunk::_start recipe' do 72 | expect(subject).to include_recipe('cerner_splunk::_start') 73 | end 74 | end 75 | -------------------------------------------------------------------------------- /spec/unit/recipes/server_install_only_spec.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require_relative '../spec_helper' 4 | 5 | describe 'cerner_splunk::server_install_only' do 6 | subject do 7 | runner = ChefSpec::SoloRunner.new(platform: 'centos', version: '6.10') 8 | runner.converge(described_recipe) 9 | end 10 | 11 | after do 12 | CernerSplunk.reset 13 | end 14 | 15 | it 'includes cerner_splunk::_install_server recipe' do 16 | expect(subject).to include_recipe('cerner_splunk::_install_server') 17 | end 18 | 19 | it 'includes cerner_splunk::_start recipe' do 20 | expect(subject).to include_recipe('cerner_splunk::_start') 21 | end 22 | 23 | it 'includes cerner_splunk::image_prep recipe' do 24 | expect(subject).to include_recipe('cerner_splunk::image_prep') 25 | end 26 | end 27 | -------------------------------------------------------------------------------- /spec/unit/recipes/shc_captain_spec.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require_relative '../spec_helper' 4 | 5 | describe 'cerner_splunk::shc_captain' do 6 | subject do 7 | runner = ChefSpec::SoloRunner.new(platform: 'centos', version: '6.10') do |node| 8 | node.override['splunk']['config']['clusters'] = ['cerner_splunk/cluster'] 9 | end 10 | runner.converge(described_recipe) 11 | end 12 | 13 | let(:cluster_config) do 14 | { 15 | 'indexes' => 'cerner_splunk/indexes', 16 | 'shc_members' => [ 17 | 'https://33.33.33.16:8089', 18 | 'https://33.33.33.17:8089' 19 | ], 20 | 'deployer_uri' => 'https://33.33.33.28:8089', 21 | 'replication_ports' => { 22 | '8080' => {} 23 | } 24 | } 25 | end 26 | 27 | before do 28 | allow(ChefVault::Item).to receive(:data_bag_item_type).and_return(:normal) 29 | stub_data_bag_item('cerner_splunk', 'cluster').and_return(cluster_config) 30 | stub_data_bag_item('cerner_splunk', 'indexes').and_return({}) 31 | end 32 | 33 | after do 34 | CernerSplunk.reset 35 | end 36 | 37 | context 'when the search heads are not specified for sh clustering in the cluster databag' do 38 | let(:cluster_config) do 39 | { 40 | 'sh_cluster' => [] 41 | } 42 | end 43 | 44 | it 'raises an error' do 45 | message = 'Search Heads are not configured for sh clustering in the cluster databag' 46 | expect { subject }.to raise_error(RuntimeError, message) 47 | end 48 | end 49 | 50 | it 'includes cerner_splunk::_install_server recipe' do 51 | expect(subject).to include_recipe('cerner_splunk::_install_server') 52 | end 53 | 54 | it 'does not include cerner_splunk::_configure_ui recipe' do 55 | expect(subject).not_to include_recipe('cerner_splunk::_configure_ui') 56 | end 57 | 58 | it 'includes cerner_splunk::_start recipe' do 59 | expect(subject).to include_recipe('cerner_splunk::_start') 60 | end 61 | 62 | it 'assigns the captain' do 63 | expect(subject).to initialize_cerner_splunk_sh_cluster('Captain assignment') 64 | end 65 | end 66 | -------------------------------------------------------------------------------- /spec/unit/recipes/shc_remove_search_head_spec.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require_relative '../spec_helper' 4 | 5 | describe 'cerner_splunk::shc_remove_search_head' do 6 | subject do 7 | runner = ChefSpec::SoloRunner.new(platform: 'centos', version: '6.10') do |node| 8 | node.override['splunk']['config']['clusters'] = ['cerner_splunk/cluster'] 9 | end 10 | runner.converge(described_recipe) 11 | end 12 | 13 | let(:cluster_config) do 14 | { 15 | 'receivers' => ['33.33.33.20'], 16 | 'license_uri' => nil, 17 | 'receiver_settings' => { 18 | 'splunktcp' => { 19 | 'port' => '9997' 20 | } 21 | }, 22 | 'indexes' => 'cerner_splunk/indexes', 23 | 'shc_members' => [ 24 | 'https://33.33.33.16:8089', 25 | 'https://33.33.33.17:8089' 26 | ], 27 | 'deployer_uri' => 'https://33.33.33.28:8089', 28 | 'replication_ports' => { 29 | '8080' => {} 30 | } 31 | } 32 | end 33 | 34 | let(:bootstrap_shc_member) { false } 35 | 36 | before do 37 | allow(ChefVault::Item).to receive(:data_bag_item_type).and_return(:normal) 38 | stub_data_bag_item('cerner_splunk', 'cluster').and_return(cluster_config) 39 | stub_data_bag_item('cerner_splunk', 'indexes').and_return({}) 40 | end 41 | 42 | after do 43 | CernerSplunk.reset 44 | end 45 | 46 | it 'includes cerner_splunk::shc_search_head recipe' do 47 | expect(subject).to include_recipe('cerner_splunk::shc_search_head') 48 | end 49 | 50 | it 'removes the search head from the cluster' do 51 | expect(subject).to remove_sh_member('remove SH from SHC') 52 | end 53 | 54 | it 'runs the ruby block splunk-stop' do 55 | expect(subject).to run_ruby_block('splunk-stop') 56 | end 57 | end 58 | -------------------------------------------------------------------------------- /spec/unit/recipes/shc_search_head_spec.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require_relative '../spec_helper' 4 | 5 | describe 'cerner_splunk::shc_search_head' do 6 | subject do 7 | runner = ChefSpec::SoloRunner.new(platform: 'centos', version: '6.10') do |node| 8 | node.override['splunk']['config']['clusters'] = ['cerner_splunk/cluster'] 9 | node.override['splunk']['bootstrap_shc_member'] = bootstrap_shc_member 10 | end 11 | runner.converge(described_recipe) 12 | end 13 | 14 | let(:cluster_config) do 15 | { 16 | 'indexes' => 'cerner_splunk/indexes', 17 | 'shc_members' => [ 18 | 'https://33.33.33.16:8089', 19 | 'https://33.33.33.17:8089' 20 | ], 21 | 'deployer_uri' => 'https://33.33.33.28:8089', 22 | 'replication_ports' => { 23 | '8080' => {} 24 | } 25 | } 26 | end 27 | 28 | let(:bootstrap_shc_member) { false } 29 | 30 | before do 31 | allow(ChefVault::Item).to receive(:data_bag_item_type).and_return(:normal) 32 | stub_data_bag_item('cerner_splunk', 'cluster').and_return(cluster_config) 33 | stub_data_bag_item('cerner_splunk', 'indexes').and_return({}) 34 | end 35 | 36 | after do 37 | CernerSplunk.reset 38 | end 39 | 40 | context 'when the search heads are not specified for sh clustering in the cluster databag and is_cloud is false' do 41 | let(:cluster_config) do 42 | { 43 | 'sh_cluster' => [] 44 | } 45 | end 46 | 47 | it 'raises an error' do 48 | message = 'Search Heads are not configured for sh clustering in the cluster databag' 49 | expect { subject }.to raise_error(RuntimeError, message) 50 | end 51 | end 52 | 53 | it 'includes cerner_splunk::_install_server recipe' do 54 | expect(subject).to include_recipe('cerner_splunk::_install_server') 55 | end 56 | 57 | it 'does not include cerner_splunk::_configure_ui recipe' do 58 | expect(subject).not_to include_recipe('cerner_splunk::_configure_ui') 59 | end 60 | 61 | it 'includes cerner_splunk::_start recipe' do 62 | expect(subject).to include_recipe('cerner_splunk::_start') 63 | end 64 | context 'when adding a new shc member to an existing cluster' do 65 | it 'executes add SH to SHC' do 66 | expect(subject).to add_sh_member('add SH to SHC') 67 | end 68 | end 69 | 70 | context 'when bootstrapping a shc member' do 71 | let(:bootstrap_shc_member) { true } 72 | it 'does not execute add SH to SHC' do 73 | expect(subject).not_to add_sh_member('add SH to SHC') 74 | end 75 | end 76 | end 77 | -------------------------------------------------------------------------------- /spec/unit/spec_helper.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', '..', 'libraries')) 4 | require 'rspec' 5 | require 'chefspec' 6 | require 'chefspec/berkshelf' 7 | require 'chef-vault' 8 | require 'conf_template' 9 | 10 | RSpec.configure do |config| 11 | config.order = 'random' 12 | config.file_cache_path = '/var/chef/cache' 13 | config.expect_with(:rspec) { |c| c.syntax = :expect } 14 | end 15 | 16 | module CernerSplunk 17 | # Need a way to reset the cached module level variables between specs 18 | def self.reset 19 | @my_cluster_data = nil 20 | @all_cluster_data = nil 21 | @multisite_bag_data = nil 22 | end 23 | end 24 | -------------------------------------------------------------------------------- /templates/default/generic.conf.erb: -------------------------------------------------------------------------------- 1 | <% stanzas = CernerSplunk::ConfTemplate.convert_stanzas @stanzas -%># This file is auto-generated and managed by the cerner_splunk Chef cookbook. 2 | # Manual changes to this file may be lost or modified during future Chef executions. 3 | 4 | <% stanzas['default'].each do |key,value| -%> 5 | <%=key%> = <%=value%> 6 | <% end if stanzas['default'] -%> 7 | 8 | <% stanzas.each do |stanza,hash| 9 | next if 'default' == stanza -%> 10 | [<%=stanza%>] 11 | <% hash.each do |key,value| -%> 12 | <%=key%> = <%=value%> 13 | <% end -%> 14 | 15 | <% end -%> 16 | -------------------------------------------------------------------------------- /vagrant_repo/.chef/knife.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | alternate_node = ENV['node'] 4 | 5 | current_dir = File.dirname(__FILE__) 6 | log_level :info 7 | log_location STDOUT 8 | node_name alternate_node.nil? ? 'knife_workstation' : alternate_node 9 | client_key alternate_node.nil? ? "#{File.expand_path('..',current_dir)}/fake-key.pem" : "#{File.expand_path('..',current_dir)}/pems/#{alternate_node}.pem" 10 | chef_server_url 'http://127.0.0.1:4000' 11 | chef_repo_path "#{File.expand_path('..',current_dir)}" 12 | -------------------------------------------------------------------------------- /vagrant_repo/alternative_encrypted_data_bag_secret: -------------------------------------------------------------------------------- 1 | i8sOtB2kcDBYCUskCV8Kc57+S12AdGmeBKO8mK0PCZPazOzrt3GNMF+HQqeUj3KVT7RRnqIYPoZKR6wI9yuQc1YpSpRETn1rs2k8PxpLX4jfEp239iQV0/jSV49OGRvQGaLRhOadV9ZPifqOCwKW9UjTEKal21fycKqxxNQgsZk9H7fMIjDSkg9PZwyLtPA+8lJ73WSGSlk78fnpjZ47DDf22NgVPkOZhaOwK1vNiV9Ub6bcEvg8N+b1lBRvvwGKEOZ3BymrtAN/TdHy70jePU+fLmr84yuPgpK1AoLkJKlKcs3IyDHL+h3o61i4i0ES7TtZpXaO3gWhtQHfIqQYBz0WtiPNYWZwJi1B9dAYplhvH2vy3bqNJYc+W109HUA3fW1BO/x1VydxZUqkzewiFu4rpY/NWZ1gZ9LPxkbAMREFKNTl+VFb+ojN3Eq6gDN4l4l6L0eSBAHyBsFmNKA+P3qe8rp5oXDOy6tPNlZVLdVIpW62Pk0EY42wR5TWSjlEGJEBgpJMmUJIVEdBNedqWOjQTW5OpvM5e5n9IZz7+C55Dc0SII+8CaEN1yofvLJGBBMj4EojXwgvJfH07M/d6KTeipiymEHY/NKWga4rdqvJjZWxBqMRmDXIuKyZ7iCFHteWEWUfYY+nwVF1vP43u5czM7jUiy8QRgZd5B3ZlYI= -------------------------------------------------------------------------------- /vagrant_repo/apps/my_app/default/app.conf: -------------------------------------------------------------------------------- 1 | [launcher] 2 | version = 1.0 SNAPSHOT 3 | 4 | [package] 5 | check_for_updates = 0 6 | 7 | [install] 8 | is_configured = 0 9 | 10 | [ui] 11 | is_visible = 1 12 | label = My Little App 13 | 14 | -------------------------------------------------------------------------------- /vagrant_repo/apps/my_app/default/data/ui/nav/default.xml: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /vagrant_repo/apps/my_app/default/data/ui/views/lorem_ipsum.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Hurray! 4 | 5 | 6 | 7 |

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam blandit fringilla ex, nec vehicula nunc ornare efficitur. Maecenas auctor lacus justo, imperdiet dapibus eros pharetra sed. Proin eget erat varius, elementum lorem non, aliquet ante. Fusce dapibus ligula sit amet velit blandit, facilisis fringilla erat ornare. Sed id neque in augue maximus mattis a quis orci. Quisque consequat nibh nulla, a sagittis eros imperdiet sed. Sed at risus a nisi placerat egestas. Vivamus aliquet venenatis lacus, molestie tempor odio gravida posuere. Donec eros lectus, gravida id placerat eu, rhoncus eu metus. Donec eget nisl lobortis, fringilla massa non, accumsan purus. Integer eget orci consequat, efficitur sapien eget, ornare odio. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Aenean pretium fringilla mauris vitae vulputate. Duis aliquam tellus vel ex imperdiet gravida. Donec tempus consequat volutpat.

8 | 9 |
10 |
11 | -------------------------------------------------------------------------------- /vagrant_repo/apps/my_app/metadata/default.meta: -------------------------------------------------------------------------------- 1 | [] 2 | access = read : [ * ] 3 | -------------------------------------------------------------------------------- /vagrant_repo/clients/c1_master.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "c1_master", 3 | "public_key": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAu4ZRYnNv6wM1WeviIZOC\nzZZp9EQtOytfNWJZdfNQmw4RV0hWglqiSXJ4oWCSle+Cwpb+qNDSYbtFrK3MJ5bD\nmPdStw8QUzlLnojNDSUUpWh0Spm/JboJayehBCkfpxdHTV2GgkFLr/uSJr8IHRZU\nRxMFV3RMy0cUieYwSL/cr3lP1GKxf5obFAInwAMyuiHIl85leRt/sUGjjofJfO13\nTsz3sclXXx4qA4rOZ81ZwR3sKoOMkoYnDSQZOjN1vzjCXtMLtQVBOiIS0g2Jcd6/\n+r+nhwenK5BXMpvGojfaoVxAv+U/1qeWxLvdix6vozqzDjCr0UZy/wmy+nUEQe+S\naQIDAQAB\n-----END PUBLIC KEY-----\n" 4 | } -------------------------------------------------------------------------------- /vagrant_repo/clients/c1_search.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "c1_search", 3 | "public_key": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA8dRxeY0+XJdUjelr633X\nrmMIuEs6r+daAnYJsMwmLGPoz1mWUX29rAGM07fLoL8ob5HBTFu+1GWqLUupWduL\nJ5k3kt52RhvwS/aSaPVx/FwPi+iRW3Ca6mkTmSvV1/OT40w5PVLnnzDk8hpmUJca\nKT5nNUpmDLtWG7JsRz9NeebFJxffhh4A7tJ8AlY4wqCox8rjfODkuUBQQoXyyrWX\n79zRRhijJVLCs8UpowBdyvRzB6G2/hAMafecly1SdjngT2oumqqZmmtejRIlUygm\nG7HwDi56mkHgcQ96VW3YFP8w+JDKpyq0/FeVJ18UsPEn0SQuPzaGB9iCk2g4NoGo\nZQIDAQAB\n-----END PUBLIC KEY-----\n" 4 | } -------------------------------------------------------------------------------- /vagrant_repo/clients/c1_slave1.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "c1_slave1", 3 | "public_key": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuFI+xwlfMqffLP5YjrTF\nONnPvY0dnmASOWXbJwHbQPSjPHLXtgQs6XoOA0ZfUknJOU0DpNTL/7dEPDJV40FU\nzVjjLKD7G3DoOciHcmXWxfmhmvFV32WNi1wFMUhvfBmwRPFUlaAhbL1/wlEIsW/Z\nWW3opXKnr/AGE4cmzRN47PtI+veryk3qga+ddJFwtY0sxub6yDkqjDFwN3Jhq1wZ\nIJa0bW6cb1IwQVngpKwq17nRO+/+5ReKkdE22iaRiXT0iWiTHPHZBKs/1+zjI++d\n9qJwqQb30iq7n/NPSb3BtQrCTGQHXKkEEOYNpnYH2MHjcnqK6XusneTvQn+k1XrU\ntwIDAQAB\n-----END PUBLIC KEY-----\n" 4 | } -------------------------------------------------------------------------------- /vagrant_repo/clients/c1_slave2.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "c1_slave2", 3 | "public_key": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAv6YUUlGdkI9h4cQib+m6\n3OolmNHQskfc2tI+0W2rn38GA28dyG1bM6egEcLzy6TO/c3ZvPuAcS3Sh+hiGl0e\ny3OkeO+fWXeGphYBaiXtgCYqLqZ717DWGtZzf06nRm+z/Vdc6b9msOjNB0iX7wdm\n1HJQjM+auOJbuS30ESbfhrMtMT2ECesaa3yHVPcTNrTvNVBVz0nh/U4sYUJNEg24\nFrU/WeDCmNFvMk+GKvDc9qwYkc4RlxsjYFPOlXhBtSzKjQLR5YJzUa+FyI89ubp/\nftZKWDQe6Id3zA6061IqW/HO+9OISX6Jcrk7WWBMihauT+0RLBEBTPFeM5F2hxDY\nLwIDAQAB\n-----END PUBLIC KEY-----\n" 4 | } -------------------------------------------------------------------------------- /vagrant_repo/clients/c1_slave3.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "c1_slave3", 3 | "public_key": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA59hUWw79f9r2Xz330VDB\nbeB/z9l0I5OK6JBLpagrfGu6ZVg0kOB/s23j+gMWNUZDYQ6RKYiS0GxmxgkbKVYJ\nwRx7dFJG788pdHU6LWpTzjnWI6fiQxp47GCAj3XjbaS70qDh7F4VWxy8h8RtJs3d\niL+YH/rqiWhIgJLg4fsSLKI+taB2otRFc229mqCYbWdlo2KPuWhR92WlSao46oGZ\nqs9LnGDwbjyX/CvBoaX1S87T26f780FVl4BHrgaQCgN+z7Wn9FcK4OOmjGJiERbc\nBh6+TMshgP5xbHaNVlYOg6oS68fwhh2RRbrozXdAs6NeR+o9UA+HrakPIXYxDDJB\nNQIDAQAB\n-----END PUBLIC KEY-----\n" 4 | } -------------------------------------------------------------------------------- /vagrant_repo/clients/c2_boot1.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "c2_boot1", 3 | "public_key": "-----BEGIN RSA PUBLIC KEY-----\nMIIBCgKCAQEAum9IdrESvGVANlXd3IUWgx4icn93t7apMOr5Mbn+gkOCJfzWCGo0\nuLmv/tBJ9DvTaL1zXstIrqC+YQ7VGajztyAe/MiPNZS7JsORjwX9BUtFI6tfTjf0\ny5H/2e4BanonWdHDGNPi/wgtTnXMqrh38gxq6F9wPnG5uDnO1LWXdQn2bDI8m2Q6\nigKirXwvQA5tVzLSEBguqjVDzGd2fOhhPFYyuwYOEfV3ySov0Re5sGGiQJA2XwjV\nguUHLFYzf+kssLb77bMKkaAjW1CpTQ4JzLUDwZ6kQG5v+Js1bJiKJfkai6X0dzLt\nThsIuzTv5tQExIdaJ+hqIFPn0nkXQMrp1QIDAQAB\n-----END RSA PUBLIC KEY-----\n" 4 | } -------------------------------------------------------------------------------- /vagrant_repo/clients/c2_boot2.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "c2_boot2", 3 | "public_key": "-----BEGIN RSA PUBLIC KEY-----\nMIIBCgKCAQEA4KbY9s2Q3JzgJjUMmSoCUiDiAAiAEg+GM7RbaYakfdDOXjs8Nl8k\nj+tqQxGSo9nSWgeWFuubamIGjlklC9LjyFvVRPMrjgWAp+Qe3RGmpZltYSAnp74P\nkVtnvm3L76FpDlM9lNoBovr701fLj5sFwlwkYRPoOVGJ7W59rp57+wYwUFajxVPY\n+OP4OaHoeah2BcbdqQOoAASgBOvaTYqkivBKHUgql+Y0G8N4RcBQjdg1eW9Dapme\nd5axgJrrjiBe1tY1fKY+dixybuE0yL+QnXwKPZVxwqsw3irjT8y5REnbDVJfFAqL\n/OW4n3XKYLKYvtlR4pkI3zKTt3c39iuUuwIDAQAB\n-----END RSA PUBLIC KEY-----\n" 4 | } -------------------------------------------------------------------------------- /vagrant_repo/clients/c2_captain.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "c2_captain", 3 | "public_key": "-----BEGIN RSA PUBLIC KEY-----\nMIIBCgKCAQEAvG7XcqcWSlrIk+R/8bXDsxASd0gs4tQqw3fbvbij8v1N90CHU+e2\nhUAAjroYMj5k1nki25rMglkmiH8L4OnVa5xcKIetluEz9E2JvlFUFk7MOigi71Lv\neZYxRZ54uhnEnsjVULP+hZ1NV3n8CpL+tyN9HLuUi/tguE+Oxw5fIWOVyYD5FKiU\nr0KrBsWtAkEzsbcKbg6BdvPC4vhUVfU8dRbvXCfsuAzqngwa0taxxwMwXPNk+6ys\nKxbRrbDeMC8CgdKE1fuh+2e2kClNmRBX56yOLWPZVD/gd2kISky8dC5i5pDylAvb\n5TmJAL76uI8wrb0WvEC7BK5LnajKf5MQcwIDAQAB\n-----END RSA PUBLIC KEY-----\n" 4 | } -------------------------------------------------------------------------------- /vagrant_repo/clients/c2_deployer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "c2_deployer", 3 | "public_key": "-----BEGIN RSA PUBLIC KEY-----\nMIIBCgKCAQEAtRQ8hMI3TS53fwie7VCSOnH93ZBXvfBhF0Vy5opx+8y+A0s9ru7A\n3kgq0B/yx3UpE8OwZiMNYW8Te/FIRCnzxvInRncYUpXukhIhaAQyp7Qq7rn1dpsV\n+NMhYcZsSXGDDzUmdHZwlnGCRyLRboz1qeFOrrXISp9XzLcDBN5Jt6zdXwPrHebq\nUN9NVhpdV1P2qlY+wUsbVfo2PqiAh+qPnyjEDy6b+g+vSdMQ3TaAE9FsIj/SiVpq\nfTyy+smpo4VBD9zktc5G4xkX/FIoRDayj33X4AOTOs1yzjUBm0CRZGd09nmhVNiL\n4JKxJh7iItV5c/OBAitZNtMNFaQ1CnH97QIDAQAB\n-----END RSA PUBLIC KEY-----\n" 4 | } -------------------------------------------------------------------------------- /vagrant_repo/clients/c2_newnode.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "c2_newnode", 3 | "public_key": "-----BEGIN RSA PUBLIC KEY-----\nMIIBCgKCAQEAoXiUJnEn7M2wAklDcBBzzUjRdj1HBKh3Ui3u2cFXUPPK/KH0ha55\nUAvYojB5YQBdw+ijf8Ud6/u8KTT8jtKf/KAO+ZWgHktcq/s5xAQST4iEyZmog80G\necqZgkgQAnJVQAFdUHvt29eXdE5ElWh+XBH2kNp6XmkAxwWQSE5q6EGYBSR5Dt6c\nulg2D6xhB1M6SyTPbMQ+KHIO2oPtmN6EWDENcHb2GoiwfM8nUlmXwRtgQbFkM9H/\nu8vTKId+38sKYdZoq9K8apzFqZRZebdivHKH1TQcHAKbxjtp1I/yxKNiDH6NJCFd\nBTGnfoypL88gukS/P0qIg78GhkTZlyA6rwIDAQAB\n-----END RSA PUBLIC KEY-----\n" 4 | } -------------------------------------------------------------------------------- /vagrant_repo/clients/f_debian.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "f_debian", 3 | "public_key": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA7VZwHZx01VqXkYKjcM8k\nUaFc1NOU3BdBCOFWTy6P9GI4Zx+qIRymovLHBL0YEXgH5+FQpM0rPpjsT78u6F9W\nN/RuvvgtOe5EWrRLZL3cL63Yc1iFEbX/3gsdcUU9KYOlvQZrNRrdxePciBe4ArQY\n2VB5lo/cJJztfZpBeaHcH5DIvq/6m45PE4jOjwnfEhzMIysU7P9X8VFHoq34xYnC\nR5EXo/aHilwsDtHzFBw7Dj7dtzzEpAiRYoqsx/zGLWGLVj8TPf7YiWPLxv+kaSoQ\nDlcGR0STaFRdFeGwUe7hadLqKq9LhJhdA8oUWmZY1JSA+XLpJ3N3a3uzzYu50vyO\nyQIDAQAB\n-----END PUBLIC KEY-----\n" 4 | } -------------------------------------------------------------------------------- /vagrant_repo/clients/f_default.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "f_default", 3 | "public_key": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyc5y/+YzNe3/UtNgPHq7\nfFb/VApMuo6lEOsMDNkE3TSjYPUcx8uGvio6rWESdc/uJRrceU3yqAMuVpC18qya\nn6GC4e5WSHbq4G/xIkGn0JEuVbyDWDb4QN4PKYq150SsrwWiAzmpBASXzT1PIlcR\nSnx+i1j0H3qNCOictOyQp6w4qGL+H3olsutzHpDqpFUg4nzU7io8azaJTHBRyrSA\nKYpVac9o0M/dMbkkBpSgDS48CjtTgf+wyRgkljuzxMjuTQ4IGXZOOhWqliPkGNqr\n8mWaBV3I3+WNrxArGvEGi2FHWrCJrGQqq3PsNvtr3DPa+1am4GQIMgnoc9xFBTBs\nqwIDAQAB\n-----END PUBLIC KEY-----\n" 4 | } -------------------------------------------------------------------------------- /vagrant_repo/clients/f_heavy.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "f_heavy", 3 | "public_key": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwUxb7FUvYM9pd7qRPclp\nlM66dAuhXnnPXvczaK/LgBkQ5fG9V70/Ei0cymz1VyhpWgPZGhzk9CLMTnAeP63U\nuEGLfTOH+nPlhV5T/E6okPYfFhzOg1YVtQ9XXFbi8W/gIjXWA1w8ING7OVynv0w2\nFk0A/5f+kh3zE0/qNrhgSIOhHwNf2kE/7AFJ5dNS6OpzhlglyDtwibIS9QqG2i0T\nfhi67rfG9qefLJ5sWN10hMOy7HiEg//p1wpbjPCl0/oqwV+BD9Si5Kros5ObUuhp\nHchJZgM/EUWPAlsxBiezCTwKQlp57FtxniMlgrMK64xoCVE+ypib1vVQNIx2vi2B\nZQIDAQAB\n-----END PUBLIC KEY-----\n" 4 | } -------------------------------------------------------------------------------- /vagrant_repo/clients/f_win2012r2.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "f_win2012r2", 3 | "public_key": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA7VZwHZx01VqXkYKjcM8k\nUaFc1NOU3BdBCOFWTy6P9GI4Zx+qIRymovLHBL0YEXgH5+FQpM0rPpjsT78u6F9W\nN/RuvvgtOe5EWrRLZL3cL63Yc1iFEbX/3gsdcUU9KYOlvQZrNRrdxePciBe4ArQY\n2VB5lo/cJJztfZpBeaHcH5DIvq/6m45PE4jOjwnfEhzMIysU7P9X8VFHoq34xYnC\nR5EXo/aHilwsDtHzFBw7Dj7dtzzEpAiRYoqsx/zGLWGLVj8TPf7YiWPLxv+kaSoQ\nDlcGR0STaFRdFeGwUe7hadLqKq9LhJhdA8oUWmZY1JSA+XLpJ3N3a3uzzYu50vyO\nyQIDAQAB\n-----END PUBLIC KEY-----\n" 4 | } 5 | -------------------------------------------------------------------------------- /vagrant_repo/clients/knife_workstation.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "knife_workstation", 3 | "admin": true, 4 | "public_key": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAt70+2jHgjsxqdAfmdVqk\nuOfQI1xCUZIiWOBF2ilqFspuhHrX4+tLTwDFEIVMUJo4/XHOs7LF1LhhUEX2TD9u\n/qNVIyhVt+dNmITqNnjN7wLNl5KvJ7bJgRIGmeWvV3IW+HRzeLy3zOH+iPfSTuWB\nM/XVtjb0/NMCoAspRioHSVKjwXyhXEezqsp8yBiNlvmT7X614+TafCbZ9KworHkM\n36c27+23wPLTFl+L3C9lOeoE0AXMgyJWVky2e6huRaPMcP7860UCpjS6dm+XR5B1\nDXGv6Fg8JjipKsaQyFLusMljuDqH59LsRuqHWbIDxRvydIHaQW5iIL5knn0Q0Wbq\nRwIDAQAB\n-----END PUBLIC KEY-----\n" 5 | } -------------------------------------------------------------------------------- /vagrant_repo/clients/s1_master.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "s1_master", 3 | "public_key": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2GnZ78/HLZknj4R01qV6\n0cfZi3/+2JhlHt7KO78RaM3pROSAxKoopqiBTo5vtxFA5ffUGMIPVS6wYv2bRApG\nZFbFpBUci1q0M97Kcs9BRNQGPacqSjNtrT8rVowRUDOJvvg8M6FFBRPofazbdJ5T\nzKD3cg3sCj3JPbh0lEjiypwy95pyfJE7ZA6cPa2LJf3OHXmRFsWScOAkhJALBMFX\nKs143bdT1OvFQu5KFDbQ6in3sINOEjxm4RCTx26hyTeO/i9pzhoNSwVneqQMHVGM\ngiEwyj4PYuTWddNgFipHf8NKSQ0GrgTtgo/pU4yR0BMRzpzGOKjZHQCK+4nBmC9H\n+wIDAQAB\n-----END PUBLIC KEY-----\n" 4 | } 5 | -------------------------------------------------------------------------------- /vagrant_repo/clients/s1_slave1.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "s1_slave1", 3 | "public_key": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA35ezNC4VFy83RiA0s3UB\nIOLiM+9157JLN9LgeTb+XFehGVymzgNuwkOn/UBtglhJLKgFMIP8asZGnOkm2uB4\nuwQ5haaz691cLVIPpuUOnVsa37HCe2oVjLc4kTu95ONrjdkhpqTs+M5dOtD3rl5M\naersOwKe86YMzOY6DGwn5uLNm+8kKt/0NsXucm/qZFuZpk81Y024cNX1HrrG2BEW\nbmXX/fvFaTy3cKJhghJue3vRaRTsGWwk8nYN7TRk8s0Ill+1xxVo6yyZUOo+XWP/\nUn9R8GIk4liSG+5dQDAPBepxmA139WCI1/8ByjPuXadGExBuJiFbvFN81nrzyjty\nKwIDAQAB\n-----END PUBLIC KEY-----\n" 4 | } 5 | -------------------------------------------------------------------------------- /vagrant_repo/clients/s1_slave2.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "s1_slave2", 3 | "public_key": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA18VJSnVHalV/tTLitVp5\nYlGKU2xUvQOhhEJXI/Ufr67Tl4IVbypbocGACnEoZq/VXokh9ubIZnNbPcBlMI7f\nCb5j/yNIoYT5IUFAlcmguP+R0Id6BW9dNroD4BcpP20BxmJKRrxQ/clCJI5YV9n2\nM0Oaw8nL9o2d39aPGtEeV9yvoWXQuJwRkyovhy1BZ84NVgxJthYy2J+nYdoiZ65D\nLUMNueGi+QhmsRSBfpA0Hin39/nQuocL5zgUtNEioHgZohOx7ksgiJPETfAq8dV1\neTyS8wgrPf01s9NIBxm3bCvwyutLWGECNYaZLOcfLpg79tpReTaisz16nHo3Mx3F\n6QIDAQAB\n-----END PUBLIC KEY-----\n" 4 | } 5 | -------------------------------------------------------------------------------- /vagrant_repo/clients/s1_slave3.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "s1_slave3", 3 | "public_key": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuxBY0d1+PQYkfYDYaQvF\nKvQ2uyT4Tjf2Dr7rZXzwaTUcASCSLmu7EiTeLFWZdmd5dCJaiUsvXescJKbiHJdB\nEMMoTBJ38yzO/M0ETTnh2YZjDjmtbBKT1/CGEtbD/f3mbsfdjto9df6B007O0+ef\nhyKs8mn0FsJHexm82jxR+tq8QtmweupLstoR8mXKP3PaHFFccSNCWXIeHM46x3xp\neYACutkUsUs4mwec19XyekFYNL4urnyDbN5oVxPw6fTJms0edwS9nD0fvT8ijBKy\nDwanVTT9kDByF6fGeELIf6oeAdoHkF/0xdQ57EUXNkzgjC89nHIrvSr2FyAcRTvg\ndQIDAQAB\n-----END PUBLIC KEY-----\n" 4 | } -------------------------------------------------------------------------------- /vagrant_repo/clients/s2_search.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "s2_search", 3 | "public_key": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwdnrQdCsvZEvdVuUgEEF\n2X4uTmhhMQ/cPqALsPzbyYz2K4PqN+RF4BKKmyeztc23F+pP7IYPJud5OVUvlSx8\nJu7sTMSGTHShthBwL0B3PhTFAZAoUA0zLbI7fCg1zQKn79E0Gwi9MdUM5RsUdiPx\nOsVHO4aOTmizi1n3Ivg/RRd8rvBbpMuN3u7nt02QMC6WopGAy06StS5Dwz1aDf14\nsec4vR4Ggvu2Br4ieVRNeB0Vm1fYAgEhnoW7FKbiEwrzo6oNIq86XfBijIL5t4Ae\naWPAicbulgJgCohAzaoPpzsmNvykybcJp9+Q7VPzhrMmeVCsfLr95tfSinGHQTot\nkwIDAQAB\n-----END PUBLIC KEY-----\n" 4 | } 5 | -------------------------------------------------------------------------------- /vagrant_repo/clients/s2_slave1.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "s2_slave1", 3 | "public_key": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArVD25HTqdHwYB2qfP4Bk\nIvEq0bGpQ1pnmQKNgjx1Mpl/JLk9zgxs+RciVGN9rzN3nLRxMKBxhaWYc83UtoD2\nm6ChULFV/5ZEvx4jugvcI6qxR9KLk16rem15rmZgVVN0gCPZpaWgTz0U5+jJ2bbr\nLFGq4MSzi9A3DsiD3D3Yqo48xV5+Mkg7daTkQajNigm9X7KbDZccdwcCousjqNA+\nqLvjLvyX7ZLc6zR6UybAkJXAIDTDPizv2zsydK0wSCcJlWVYF5Tbz9nmShR1hdF6\nr5Ex4jwmUt/SNLQFVheHCsgcaam9t+PSCs0bsFF5GBr1xzxMAzRP5/ZpA3TgFCjw\naQIDAQAB\n-----END PUBLIC KEY-----\n" 4 | } -------------------------------------------------------------------------------- /vagrant_repo/clients/s2_slave2.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "s2_slave2", 3 | "public_key": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA50j4pCQ7lLYSZvtSWJvI\nAJkQM4bdQgj4QEKKFmlUoJFWZl/MMutckZSiS9IJeYngEblBGXXl6R+P375HPY7s\nxCcjvkjv2qAzals+r4Kz5GuFENPIsC0j9iqeZegxtNAlDW4wONU2Wwyosh3JclQl\nVk2Q6v9CUW+65KAZCwQiC0C0hlIM6YPf3Wj+H1Ip6VRSLqp1l21K6wULnM4T/fEL\n8ym2Z+DTNzBzSC/5M3phXso0hXPK8d2XYg39mZa2qFmDBqDEubh+J0V6PEoOnuI6\n7dBFdvnQXteA74tuajwNBLgvvBNTHey3IWCib1LhQh/E6mDMBgUd60gCmHFYE/11\nQwIDAQAB\n-----END PUBLIC KEY-----\n" 4 | } -------------------------------------------------------------------------------- /vagrant_repo/clients/s_license.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "s_license", 3 | "public_key": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsYeludIEnIBuZV7kaxNs\nQAMfh3iANlQE3Sw1TvKGmTCeCLu58toaBxtrcDaP7u0+0Rbmw3hw1HPm4xX8syi3\n14kDSN7w64XQBwTOuGjyY+bDimQAks67puKdgIOkG7RAK9Dxq7foRa7tgrMDqvFI\nOH44/eokoVXj+DMEK0712Hz4KHkxhrFp18U8YrAWyJ0K7NKNSrVDFbSH43fcAmg2\nypbFsx2Ptppy8SkBgSs45xmjkYO0ElBK1mHRWFk0p7O+3Grf14Hq+E5bo2+Rk2XR\nsDZpsbzlnfB+ioQF/wrB2OrNMCtpy6/epBz0pMLjhYxgWlZwohOC3odBP/CnTWwy\nqQIDAQAB\n-----END PUBLIC KEY-----\n" 4 | } -------------------------------------------------------------------------------- /vagrant_repo/clients/s_standalone.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "s_standalone", 3 | "public_key": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA6DpJ002YBQykE33QyJns\ncZGn6re00JtcSzf72NtkQCG6y9ptYytiAA/m7BluIYrvkncfqyZuHeRZ1hbeg0MV\nVjfeXxoAdo1/62go6jbSzn/e7/JZbO9fdvtuRR8j0HpEJjKMUBDJi8NWWpd4HHrH\nvXz4l2Z6GLwYLTe2GvF058tAvbsgojdEibFvxobjlXAxs0ht3YGkxgk2raQfociL\njNcVo3tI60LRTd2duyWNqKAITJ75ZrwczIVtqiFZ48KeWc3H3wxxhj/H3x/RzxDC\nTmZMYr0lYeEpTb0jCmdhszgWzJ3XDMtzYd4e3/UfuBtVJmHCadBnKVZIHrFcnHHk\nswIDAQAB\n-----END PUBLIC KEY-----\n" 4 | } -------------------------------------------------------------------------------- /vagrant_repo/data_bags/cerner_splunk/alerts-vagrant.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "alerts-vagrant", 3 | "alerts": { 4 | "search.splunk.cerner.local": { 5 | "bag": ":base", 6 | "email": { 7 | "hostname":"http://192.168.56.10:8000" 8 | } 9 | }, 10 | "s_standalone": { 11 | "bag": ":base", 12 | "email": { 13 | "hostname":"http://192.168.56.20:8000" 14 | } 15 | }, 16 | "search_head": { 17 | "bag": ":base", 18 | "email": { 19 | } 20 | }, 21 | "shcluster": "search_head" 22 | }, 23 | "base": { 24 | "email": { 25 | "mailserver": "smtprr.cerner.com", 26 | "from": "splunk-dev@cerner.com", 27 | "subject": "Vagrant Splunk Alert: $name$", 28 | "inline":1 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /vagrant_repo/data_bags/cerner_splunk/authnz-vagrant.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "authnz-vagrant", 3 | "authn": { 4 | "search_head": { 5 | "LDAP_strategies": { 6 | "bag": ":ldap", 7 | "roleMap" : { 8 | "opsinfra": "splunk_dev_opsinfra", 9 | "admin": "DevOps_SuperAdmins" 10 | } 11 | } 12 | }, 13 | "license_server": "search_head", 14 | "server": "search_head", 15 | "shcluster":"search_head", 16 | "forwarder":null 17 | }, 18 | "ldap":{ 19 | "strategy_name":"ADDomain", 20 | "host":"ad.example.com", 21 | "SSLEnabled":1, 22 | "port":636, 23 | "bindDN":"bindacct@example.com", 24 | "bindDNpassword":"passwords:bindacct", 25 | "userBaseDN":["OU=Users,DC=example,DC=com"], 26 | "userBaseFilter":"(objectClass=user)", 27 | "userNameAttribute":"sAMAccountName", 28 | "realNameAttribute":"displayName", 29 | "groupBaseDN":["OU=Splunk Groups,DC=example,DC=com"], 30 | "groupBaseFilter":"(objectClass=group)", 31 | "groupNameAttribute":"cn", 32 | "groupMemberAttribute":"member", 33 | "nestedGroups":1, 34 | "anonymous_referrals":0 35 | }, 36 | "roles":{ 37 | "server":"search_head", 38 | "shcluster":"search_head", 39 | "search_head": { 40 | "default":{ 41 | "app":"launcher", 42 | "tz":"America/Chicago", 43 | "showWhatsNew":0, 44 | "capabilities":["!schedule_rtsearch"] 45 | }, 46 | "nobody": {}, 47 | "user": { 48 | "app":"search", 49 | "capabilities":["!change_own_password","schedule_search"], 50 | "srchIndexesAllowed":[], 51 | "srchIndexesDefault":[] 52 | }, 53 | "cloud-infra": { 54 | "importRoles":["user"] 55 | }, 56 | "opsinfra":{ 57 | "importRoles":["user"] 58 | }, 59 | "admin": { 60 | "capabilities":["change_own_password"] 61 | } 62 | } 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /vagrant_repo/data_bags/cerner_splunk/cluster-apps-vagrant.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "cluster-apps-vagrant", 3 | "master-apps": { 4 | "awesome_splunk_master_app": { 5 | "files": { 6 | "app.conf": { 7 | "install": { 8 | "is_configured": "0" 9 | }, 10 | "ui": { 11 | "is_visible": "false", 12 | "label": "Awesome Splunk Master App" 13 | } 14 | }, 15 | "props.conf": { 16 | "sendmail": { 17 | "FIELDALIAS-msgid": "mid AS msgid", 18 | "EXTRACT-qid": "sendmail[^\\]]*\\]:\\s+(?[^:]*):" 19 | } 20 | } 21 | }, 22 | "permissions": { 23 | "": { 24 | "access": { 25 | "read": "*", 26 | "write": [ 27 | "admin", 28 | "power" 29 | ] 30 | } 31 | }, 32 | "tags": { 33 | "export": "system" 34 | } 35 | } 36 | } 37 | }, 38 | "deployer-apps": "search_head", 39 | "search_head": { 40 | "my_app": { 41 | "download": { 42 | "url" : "http://192.168.56.33:5000/my_app.tgz", 43 | "version" : "1.0" 44 | } 45 | }, 46 | "test_app": { 47 | "download": { 48 | "url" : "http://192.168.56.33:5000/test_app.tgz", 49 | "version" : "1.0" 50 | } 51 | }, 52 | "awesome_splunk_app": { 53 | "files": { 54 | "app.conf": { 55 | "install": { 56 | "is_configured": "0" 57 | }, 58 | "ui": { 59 | "is_visible": "1", 60 | "label": {"value":{"proc":"vault","coordinate":"cerner_splunk/passwords:description"}} 61 | }, 62 | "launcher": { 63 | "description":{"value":{"proc":"vault","coordinate":"cerner_splunk/passwords:description"},"transform":{"proc":"splunk_encrypt"}} 64 | } 65 | }, 66 | "props.conf": { 67 | "sendmail": { 68 | "FIELDALIAS-msgid": "mid AS msgid", 69 | "EXTRACT-qid": "sendmail[^\\]]*\\]:\\s+(?[^:]*):" 70 | } 71 | }, 72 | "data/ui/views/all_index.xml": "Bacon for allindex=* | timechart count@dnow", 73 | "data/ui/nav/default.xml": "" 74 | }, 75 | "lookups": { 76 | "index-owners.csv": "http://192.168.56.33:5000/lookups/index-owners.csv", 77 | "test.csv": "http://192.168.56.33:5000/lookups/test.txt" 78 | }, 79 | "permissions": { 80 | "": { 81 | "access": { 82 | "read": "*", 83 | "write": [ 84 | "admin", 85 | "power" 86 | ] 87 | } 88 | }, 89 | "tags": { 90 | "export": "system" 91 | } 92 | } 93 | } 94 | } 95 | } 96 | -------------------------------------------------------------------------------- /vagrant_repo/data_bags/cerner_splunk/cluster-standalone.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "cluster-standalone", 3 | "receivers": [ 4 | "192.168.56.20" 5 | ], 6 | "license_uri": null, 7 | "receiver_settings": { 8 | "splunktcp": { 9 | "port": 9997 10 | } 11 | }, 12 | "indexes" : "cerner_splunk/indexes-vagrant" 13 | } 14 | -------------------------------------------------------------------------------- /vagrant_repo/data_bags/cerner_splunk/cluster-vagrant-site1.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "cluster-vagrant-site1", 3 | "site": "site1", 4 | "multisite": "cerner_splunk/multisiteUS", 5 | "disable_search_affinity": true 6 | } 7 | -------------------------------------------------------------------------------- /vagrant_repo/data_bags/cerner_splunk/cluster-vagrant-site2.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "cluster-vagrant-site2", 3 | "site": "site2", 4 | "multisite": "cerner_splunk/multisiteUS" 5 | } 6 | -------------------------------------------------------------------------------- /vagrant_repo/data_bags/cerner_splunk/cluster-vagrant.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "cluster-vagrant", 3 | "master_uri": "https://192.168.56.11:8089", 4 | "deployer_uri" : "https://192.168.56.28:8089", 5 | "settings": { 6 | "replication_factor" : 2, 7 | "search_factor" : 2, 8 | "_cerner_splunk_indexer_count": 3 9 | }, 10 | "replication_ports": { 11 | "8080" : { } 12 | }, 13 | "license_uri": null, 14 | "receivers": [ 15 | "192.168.56.12", 16 | "192.168.56.13", 17 | "192.168.56.14" 18 | ], 19 | "tcpout_settings":{ 20 | "useACK": false 21 | }, 22 | "receiver_settings": { 23 | "splunktcp": { 24 | "port": 9997 25 | } 26 | }, 27 | "shc_members": [ 28 | "https://192.168.56.15:8089", 29 | "https://192.168.56.16:8089", 30 | "https://192.168.56.17:8089" 31 | ], 32 | "shc_settings":{ 33 | "replication_factor" : 2, 34 | "shcluster_label": "main-cluster", 35 | "pass4SymmKey": "$1$4SvBVSpNjhiY51BIRp6C3urG7YJU" 36 | }, 37 | "indexes" : "cerner_splunk/indexes-vagrant", 38 | "apps": "cerner_splunk/cluster-apps-vagrant" 39 | } 40 | -------------------------------------------------------------------------------- /vagrant_repo/data_bags/cerner_splunk/indexes-vagrant.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "indexes-vagrant", 3 | "config": { 4 | "default": { 5 | "maxTotalDataSizeMB": 81920, 6 | "frozenTimePeriodInSecs": 15778800 7 | }, 8 | "volume:foo": { 9 | "path": "/opt/splunk/data/foo_indexes" 10 | }, 11 | "volume:bar": { 12 | "path": "/opt/splunk/data/bar_indexes" 13 | }, 14 | "_audit": { "maxTotalDataSizeMB": 500000 }, 15 | "_internal": { 16 | "maxTotalDataSizeMB": 500000, 17 | "frozenTimePeriodInSecs": 7776000 18 | }, 19 | "history": { "disabled": true }, 20 | "main": { 21 | "isReadOnly": true, 22 | "maxDataSize": "auto", 23 | "maxMemMB": 1 24 | }, 25 | "opsinfra" : { "_volume": "foo" }, 26 | "pop_health" : { "_volume": "bar" , "_maxDailyDataSizeMB": 50 }, 27 | "bobs_index_emporium": {}, 28 | "calculated_max_total": { "_maxDailyDataSizeMB": 50 }, 29 | "summary": { "maxTotalDataSizeMB": 500000 } 30 | }, 31 | "flags": { 32 | "_audit": { "noGeneratePaths": true }, 33 | "_internal": { "noGeneratePaths": true }, 34 | "main": { "noGeneratePaths": true, "noRepFactor": true }, 35 | "history": { "noGeneratePaths": true, "noRepFactor": true }, 36 | "summary": { "noGeneratePaths": true } 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /vagrant_repo/data_bags/cerner_splunk/license-vagrant.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "license-vagrant", 3 | "auto_generated_pool_size": "100KiB", 4 | "pools":{ 5 | "pool1": { 6 | "size": "200KiB", 7 | "GUIDs": ["aae84706-a70d-4134-951d-93a6541011fa", "9d8f6bb8-49b2-463e-afdd-aedf267526e4"] 8 | }, 9 | "pool2": { 10 | "size": "400KiB", 11 | "GUIDs": ["3da644f5-6750-4d07-b158-0cf42c8a6153"] 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /vagrant_repo/data_bags/cerner_splunk/license_secrets.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "license_secrets", 3 | "licenses": { 4 | "encrypted_data": "CReVGbj2Xh6mTThufs3/UTKgi1n6SWFnXMOdTSNu6dkhJ09fbY0Ql9tIcaJR\nP41rlpq/xzfSBOjmz0RR/AwKaOi4ElAD4F7uC2a8mcpRjm/Bo3Ms1dQ1u57m\nHJ8QkeSSeauTnDNhZkiLRHxFqRf8+lzXpYqQkB/ShTrsHthxUdz904E8K1wi\n17bJnZsJfRypbjPCGq9btMNfoKOiuUOFkVY2rMlLM2meUEeFaOADqLDsCGth\neA3zJlphlqRu9rH8zqhN10H0M4uvNiLYphLB/9xslax8MaLZo+FGIOBexnOd\nnrzQnWEdPx2Xyxkm04LomBuLLGXSKyCNw4fDSZMiN4aAAn+yoYRah/oUbmx+\nFSBNM/MI3qGc55wUixf+KBRwj7UuWXVQl8J85hfoh9uqER1lSIiqj/haDcRM\na+zvG1BXYcNTr52XbE1ztvW2x5Fp0MpYKD0mTg6mP64pFqTdO1RTG0p/ZAzr\nOtdsKoSIR3n/rlMA2jy+0YIjf0VSoOiiY+C1rGc+NAxb1ABExBvfT4lCb5Sv\nmdG3VqnRklKnSpSyKfx6VQmhfjbGRm4SP2L+0ozImGQ1Qrd4vo/yfDLQspDj\nbiFI7mkzVjNLGzgF0EAtyc0+wRS2sVyGHVbgKJfOJfDuGCPhwbs0uWLogo/Y\nWVdfrdPQJHM9o/MpTFNHwFrhpSYMhRT4Xtmv8LZrqku1gOO+i9iWuTLsSsWj\noTWGLOUWjBPxaZ8tYGtjPUnjyAPaiAr/vxeKbpT11zqpps8SMDmfFCrffmpC\n00OIMoTDeWC5oZPXUIfAky3p5NVC3Z+V3Ok3rMIPzUtu/akzap6jhoUTvJ4w\nfayXTI72nfDi3F4/lLczgPAdfEfSYlFOoXlFQZ4eRGUi4wvLFY47Ue9FviSB\n1kctDwuD4s169kSD9RZodjZ2REI6mmVy3X/mJpR7B/9Jc/DWAo9GU3Lnt7ZE\n2Lco/6PGuIqCTsEVhalAOBdY+vlLgHORj+j7ljUOaFDa/NwJAILYpDH1c33j\nnKg88qVCm+UK6NwMSCRu/ggaruusIZoPIVRKKRoOtUQ+JhSU1LKgeexzbJTG\nFGQqIQtbKO2yrpJv8xYHyMUn8oh3/U9Cx5ZxoeHNf54ZD9vHS0Q9BcNKw8y+\nbEEKrt7uJXd/t0mbOLJbC4fHe6K7ZexZbrPtwmvFm4Wdx7rqeskCIOuh0IUc\nIrIKee4U+5xPu65llWcCnkZbIoU2HDM6XOrfnledNMvTKWmbl7EmF1bU9y9h\nVsOzPzUylaqnyTkeBqCu1N93EJBlul/lvhqtTz4E6meS2SY8k5L8NL7y9kyl\nbtSTheeUj5ruZcVYrO19s9LLZLhVWiwn+ct35alXZTx9Rw7dDyMTNMYswz3B\nAt9rrMHtojLTG7rna6haI8tb5uDDZVbRcLThl9lv2oNWQ8ov/Lu79YBhUw8r\nVm3gKq0EnXXm/P0Rsb389Gz8NtxTkoqm7pdipGtI6nyj3wdq1U1fRRVMWyeL\n/GnvVrOIhE2XyVEETPK59+/n1QNjQCzmeI6RFUEdjS/5E/m5tSvSK+5jjBky\nhLYYJ/LqdT4nTLw8E2jusMo5l9bCqVm0jsmqjO7J/VvCGorqQ1RBcPOX8RFT\n93+bSXUD+qyAOSFV/tHfFGg27JWs8aC5KV7r/FDjASK9t+XWGhYo5Auiyde+\nAk1qnSG04R6siiYTmvkEHWXW+vMgXsiI/1Tmt6Bxrvqf9KM4QUj/y1d0l70d\ndLACvzwJ46TYmg2cT8hnzwcJaicLlUpBDL0m/Qld9yk/++hbIWbZOZ2EisVp\nTA/5qOa0zosLGGQMQr/Y27+w3A2/XtkqIw1s8Bb+IiWd6NqUcTKKUuAY3zI2\nkEAhDVRO//mRb+CaMpDhRCLiswUfANipT0O3ZSfi8mTyWb1n3TFwc4Tu0P/P\nKgNBhuj3uUQQ6KAdeyV1DNYlaiKr3cm7PJt9gdnnwd3HlqztqG+EMBqLUgqa\n62g32lblACP2KoZTk85q0YoiVZpCeaPjIH67ssppGhLNdRnlYOwltvWqTCQn\njScIBP9F\n", 5 | "iv": "YmpCH7OA70tRwp0bCupXyw==\n", 6 | "version": 1, 7 | "cipher": "aes-256-cbc" 8 | } 9 | } -------------------------------------------------------------------------------- /vagrant_repo/data_bags/cerner_splunk/license_secrets_keys.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "license_secrets_keys", 3 | "admins": [ 4 | "knife_workstation" 5 | ], 6 | "clients": [ 7 | "s_license" 8 | ], 9 | "search_query": "name:s_license", 10 | "knife_workstation": "lMQMklFiBupuNz09mi7fsqKIHGbE2am2V8PkE74qvdB/eTo1ASeDfCw1WyPS\nWgUUPE6hhSNvgAaU+7vfd2ZLThbJnU06rzbD+2MNXLly2FEjyhqBjkTLaTuH\nmts8OwRHAt6FmMv3X+6ypAbHFOaWlZjVNsC0SQ5JyEJ0FSjEvc7rTpzldsiS\nlyyyCxmAY8ab/e9ZyTB1YsF3lpyDe+xL07m2uJ5yseYqypycRtYLYcs+LY8s\nDdufyf1/WmX63g8sYuEQeNYfg+NQdSiDK6gTlU5/5mC7FkkTolWhhjgX50H8\n0jsdeM1EQzFZsgbIYJ3axXlODdAAA83oNaoWXqaZIA==\n", 11 | "s_license": "rxCdZD27FkMcmjS4IPZz2okq4w1WJP7i8wFL4GTwxVOmZGX+mzWYyRHhvfyX\nRGPY0mcK8lLajfFxVz2kYiMRghdJPShz2cAr5+XI9Vve3rGd7l8sR+rCUtkk\nG7lf4EOTvpcQnMeHxcMVnKS1Xc3SRJFGgKydBptetGGrsVG8wgcdxNWgwINH\nKFGMvMj2aZma4B5mvZPaqylzaJDC2Y7GGh1KnTonYMc6LLk+Q4ggbVPvrQ71\nUxVogvTp91E5QACJvboXkLN4Hjbxip2GwEZKMMVzvTiYkvAZvmTfSB6VFEg+\ncy/1tc+9qSf1WRL6hMO4pnT4GwSV1cTDEOndyIQoNQ==\n" 12 | } -------------------------------------------------------------------------------- /vagrant_repo/data_bags/cerner_splunk/multisiteUS.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "multisiteUS", 3 | "sites" : ["cerner_splunk/cluster-vagrant-site1", "cerner_splunk/cluster-vagrant-site2"], 4 | "master_uri": "https://192.168.56.35:8089", 5 | "license_uri": null, 6 | "cluster_label": "Multisite-1", 7 | "multisite_settings": { 8 | "forwarder_site_failover": "site1:site2", 9 | "site_replication_factor": "origin:2,total:3", 10 | "site_search_factor": "origin:1,total:2" 11 | }, 12 | "indexer_discovery": true, 13 | "indexer_discovery_settings" :{ 14 | "outputs_configs": { 15 | "send_timeout": 30, 16 | "rcv_timeout": 30 17 | }, 18 | "master_configs": { 19 | "indexerWeightByDiskCapacity": true 20 | } 21 | }, 22 | "replication_ports": { 23 | "8080" : { } 24 | }, 25 | "receiver_settings": { 26 | "splunktcp": { 27 | "port": 9997 28 | } 29 | }, 30 | "indexes" : "cerner_splunk/indexes-vagrant", 31 | "apps": "cerner_splunk/cluster-apps-vagrant" 32 | } 33 | -------------------------------------------------------------------------------- /vagrant_repo/data_bags/cerner_splunk/passwords.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "passwords", 3 | "description": { 4 | "encrypted_data": "yX6QNNQzgDjHLHpFiI1HVBVw/wQPExlDMEbIYX7aM+d+snFJng==\n", 5 | "iv": "ZOm4St0QNaHyegLN\n", 6 | "auth_tag": "6opWkoENxHcfXmZ78WqLAw==\n", 7 | "version": 3, 8 | "cipher": "aes-256-gcm" 9 | }, 10 | "bindacct": { 11 | "encrypted_data": "SZQP7FhGa8lIFRhyxna1xTb2Mp0CrmQ9J6te\n", 12 | "iv": "v0XISh9FNoAsE6sE\n", 13 | "auth_tag": "pCdauHKwrf6jj8vqDkRgmw==\n", 14 | "version": 3, 15 | "cipher": "aes-256-gcm" 16 | }, 17 | "splunk.secret": { 18 | "encrypted_data": "NrUZsAkgICHDB6Lr0YBKpE9DHLgnop5cHQgYBOwdARIUDyy2TlSkkR1S+54x\nC1vNocOmMrI+BpvyYz7BPqlHBuQBAoiOpGn9F5Mw113Fs3TaxexTzBPYFnN9\nCJe9ORmWLBsKSPQR0Zr3Z5ZfCtdC6lE/Mwnn7b8GxthpcJsIED+s7YBYIvLw\neE4krUPuyVJglOrxPDOGyBWzKKTHHJA26lh9HylPVD4vg6ypY4Ldyfogxpm3\nYNeIuWm77iNaL9cWNzM2pW1THSGWAzlReOR/ZVnNo5uqNDh1331ZlDwXOyUG\nZ+YMKmRtIjQuuk8LjDwbhOL2iDt1hjUenex0YxpoiqGiZ4UFZX/m0OqYPNSt\nCnVb\n", 19 | "iv": "xiGLk1fMWIFaXdd3\n", 20 | "auth_tag": "kKo5GCoPOUk/OBQNol9FRw==\n", 21 | "version": 3, 22 | "cipher": "aes-256-gcm" 23 | }, 24 | "winpass": { 25 | "encrypted_data": "A/lhPdSn/r1s90DKtlqAM23pIfBKRh4w9YZEbpih\n", 26 | "iv": "pNwj3oKGWb2DKax5\n", 27 | "auth_tag": "v96YYVTqBX96BPELaEDqUg==\n", 28 | "version": 3, 29 | "cipher": "aes-256-gcm" 30 | } 31 | } -------------------------------------------------------------------------------- /vagrant_repo/data_bags/cerner_splunk/standalone_passwords.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "standalone_passwords", 3 | "splunk.secret": { 4 | "encrypted_data": "1iy6/MSqHP8pNme6z4SNqVJ6iP0HNT+/BiZOw5eitsbIyqBeNyMtPtTnKhae\n7i68zQWYvVqpB5AoEDeMGZq9qjS4wccAAmQdgWDbczUc/qADoYDwxNtUwLff\nBPkkrPpgE74iYgDdS3gM7BwE3Ri5z/ocq6MOiBXcyZJOCWp3q9SNw26S/e8W\nyNKTiKDl0Nt2cj+eJNUB3E/u4iGuvxblJCtdAZBg+k2WhRT20vKWpQT2hvCB\ncFsK10iHSKDvfUdD/CocVOvDeVWdkPOztuPZUDDqWKo26wdPGjiATO5sJ0LS\nFVLXtr/aryirSrOPW2FkdQWJtHS63FGkfUtUPR7UwqVmRN43xttB/nqL1+KZ\nCs3of5NUDWgf9sS8JSDn2P+2\n", 5 | "iv": "oy6HsvGzWaC6sGOjlTnQDg==\n", 6 | "version": 1, 7 | "cipher": "aes-256-cbc" 8 | }, 9 | "admin_password": { 10 | "encrypted_data": "POaRTh7bYNTIvZmEuTmd7tg0bhvYsx11whPzu4eyjTs=\n", 11 | "iv": "77gJalPcjVNsQTUbt0GtRg==\n", 12 | "version": 1, 13 | "cipher": "aes-256-cbc" 14 | } 15 | } -------------------------------------------------------------------------------- /vagrant_repo/encrypted_data_bag_secret: -------------------------------------------------------------------------------- 1 | U5rWXP9NigdI1UNa/hH8gAfNvbMCjV5hQC55lCpdVhJKB7GOwK3fC73lhMzBpEHMphOuXufrqwjaiyiFWnx19+/pN56Kr7qWo6e0WqCXOgQqDOrQQvM5dVIgUxi9CYSBnXKDD6YOwZVFTzyIIdUBeJKvuUVk0vtWA0kiSxhb9aTv5w2deFpPMrcq8Hsdm5AZTbZo6I129rcwxJv422kexyflKNAhO6E34ToIheGYmMiAx5/lskAwJIcmH3HetKyuw83XkHMgWzzOzUDJt8Tli/A6Qapz2JKkqZmA5ygthAzbIaI+sGkIxLq/N4Y5E6ANx4Z3NjOpVugbz5t7qJThsKdG0MTAYy78EUoy95/NyNmuOH/dsrM0XRdKQKQhZd3F51BRgwb9k01RNjbfZicHlkeVasjKujLquTzMQu4R/D94OLwdbluFFTxEnZrCvJMoVp8tuNra8mMsXX/nSYYCEWsvbNDZjzW6hT85QtuVWvEFh61iCUEWCJfZ4SiXQ2/pwzHA2I+SMEfiEzcU1toU1eJzHSIMDJAmmDvk/9Q/4zHspc7nnWKcKysCWvPgTJ4lErCJDnTn0ap1TpzrqYDtfepL1rddc8svg/hfIiXFWMhccUWEQCTHFyRS6aob8lA/tESy1V80qCFJEIOKrQTz3DDRKDd2nSV2Y7qYF4ZQQyM= -------------------------------------------------------------------------------- /vagrant_repo/environments/splunk_license.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "splunk_license", 3 | "description": "Environment for the Splunk license master", 4 | "default_attributes": { 5 | "splunk": { 6 | "config": { 7 | "licenses": "cerner_splunk/license_secrets:licenses", 8 | "license-pool": "cerner_splunk/license-vagrant", 9 | "authentication": "cerner_splunk/authnz-vagrant:authn" 10 | }, 11 | "mgmt_interface": "eth1" 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /vagrant_repo/environments/splunk_server.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "splunk_server", 3 | "description": "Environment for the Splunk 6 Cluster", 4 | "default_attributes": { 5 | "splunk": { 6 | "config": { 7 | "clusters": [ 8 | "cerner_splunk/cluster-vagrant" 9 | ], 10 | "roles": "cerner_splunk/authnz-vagrant:roles", 11 | "authentication": "cerner_splunk/authnz-vagrant:authn", 12 | "alerts": "cerner_splunk/alerts-vagrant:alerts", 13 | "secrets": { 14 | "c2_boot1": "cerner_splunk/passwords:splunk.secret", 15 | "c2_boot2": "cerner_splunk/passwords:splunk.secret", 16 | "c2_captain": "cerner_splunk/passwords:splunk.secret", 17 | "c2_deployer": "cerner_splunk/passwords:splunk.secret", 18 | "c2_newnode": "cerner_splunk/passwords:splunk.secret" 19 | }, 20 | "admin_password": { 21 | "c2_boot1": "cerner_splunk/standalone_passwords:admin_password", 22 | "c2_boot2": "cerner_splunk/standalone_passwords:admin_password", 23 | "c2_captain": "cerner_splunk/standalone_passwords:admin_password", 24 | "c2_newnode": "cerner_splunk/standalone_passwords:admin_password" 25 | } 26 | }, 27 | "data_bag_secret": "/vagrant/vagrant_repo/alternative_encrypted_data_bag_secret", 28 | "mgmt_interface": "eth1" 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /vagrant_repo/environments/splunk_site1.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "splunk_site1", 3 | "description": "Environment for site1 in the multisite cluster", 4 | "default_attributes": { 5 | "splunk": { 6 | "config": { 7 | "clusters": [ 8 | "cerner_splunk/cluster-vagrant-site1" 9 | ], 10 | "roles": "cerner_splunk/authnz-vagrant:roles", 11 | "authentication": "cerner_splunk/authnz-vagrant:authn", 12 | "alerts": "cerner_splunk/alerts-vagrant:alerts" 13 | }, 14 | "mgmt_interface": "eth1" 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /vagrant_repo/environments/splunk_site2.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "splunk_site2", 3 | "description": "Environment for site2 in the multisite cluster", 4 | "default_attributes": { 5 | "splunk": { 6 | "config": { 7 | "clusters": [ 8 | "cerner_splunk/cluster-vagrant-site2" 9 | ], 10 | "roles": "cerner_splunk/authnz-vagrant:roles", 11 | "authentication": "cerner_splunk/authnz-vagrant:authn", 12 | "alerts": "cerner_splunk/alerts-vagrant:alerts" 13 | }, 14 | "mgmt_interface": "eth1" 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /vagrant_repo/environments/splunk_standalone.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "splunk_standalone", 3 | "description": "Environment for the Splunk 6 Standalone server", 4 | "default_attributes": { 5 | "splunk": { 6 | "apps": { 7 | "bag": "cerner_splunk/cluster-apps-vagrant:search_head", 8 | "another_awesome_app": { 9 | "files": { 10 | "app.conf": { 11 | "ui": { 12 | "is_visible": "1", 13 | "label": "Another Awesome Splunk App" 14 | } 15 | } 16 | }, 17 | "permissions": { 18 | "": { "access": { "read": "*", "write": "*" } }, 19 | "viewstates": { "access": { "read": "*", "write": "*" } } 20 | } 21 | } 22 | }, 23 | "logs": { 24 | "splunkd": { 25 | "appender.metrics.maxFileSize": "10000000", 26 | "appender.metrics.maxBackupIndex": "3" 27 | } 28 | }, 29 | "config": { 30 | "clusters": [ 31 | "cerner_splunk/cluster-vagrant-site1", 32 | "cerner_splunk/cluster-standalone", 33 | "cerner_splunk/cluster-vagrant", 34 | "cerner_splunk/cluster-vagrant-site2" 35 | ], 36 | "roles": "cerner_splunk/authnz-vagrant:roles", 37 | "authentication": "cerner_splunk/authnz-vagrant:authn", 38 | "alerts": "cerner_splunk/alerts-vagrant:alerts", 39 | "secrets": { 40 | "s_standalone": "cerner_splunk/standalone_passwords:splunk.secret" 41 | }, 42 | "admin_password": { 43 | "s_standalone": "cerner_splunk/standalone_passwords:admin_password" 44 | } 45 | }, 46 | "data_bag_secret": "/vagrant/vagrant_repo/alternative_encrypted_data_bag_secret", 47 | "mgmt_interface": "eth1" 48 | } 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /vagrant_repo/environments/splunkf_standalone.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "splunkf_standalone", 3 | "description": "Environment for the Splunk Standalone server and a separate universal forwarder.", 4 | "default_attributes": { 5 | "splunk": { 6 | "systemd_file_location": "/etc/systemd/system/splunkforwarder.service", 7 | "systemd_unit_file_name": "splunkforwarder", 8 | "ignore_already_installed_instance" : true, 9 | "apps": { 10 | "CONFIG-CSSP_splunk": { 11 | "files": { 12 | "web.conf": { 13 | "settings": { 14 | "mgmtHostPort": 8088 15 | } 16 | }, 17 | "deploymentclient.conf": { 18 | "target-broker:deploymentServer": { 19 | "targetUri": "test.net:8089" 20 | } 21 | } 22 | } 23 | } 24 | } 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /vagrant_repo/fake-key.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN RSA PRIVATE KEY----- 2 | MIIEpAIBAAKCAQEAt70+2jHgjsxqdAfmdVqkuOfQI1xCUZIiWOBF2ilqFspuhHrX 3 | 4+tLTwDFEIVMUJo4/XHOs7LF1LhhUEX2TD9u/qNVIyhVt+dNmITqNnjN7wLNl5Kv 4 | J7bJgRIGmeWvV3IW+HRzeLy3zOH+iPfSTuWBM/XVtjb0/NMCoAspRioHSVKjwXyh 5 | XEezqsp8yBiNlvmT7X614+TafCbZ9KworHkM36c27+23wPLTFl+L3C9lOeoE0AXM 6 | gyJWVky2e6huRaPMcP7860UCpjS6dm+XR5B1DXGv6Fg8JjipKsaQyFLusMljuDqH 7 | 59LsRuqHWbIDxRvydIHaQW5iIL5knn0Q0WbqRwIDAQABAoIBAQCuseEbhgay3sps 8 | LcLBW4B4SfeMV0C6282KYRopFe1HZAr2LPItQt7ka5/yWDq5/BgpaNaV5mjQGspz 9 | j0FhN4Kp2tOszMHLS8FsPRuO1Qc/s5OUBKRChzlJXcEm+8ndw5zxd47+gbfjtg/T 10 | XIT5/J3+sEMUr2X5KAs77cC9dGJfI/Rdl2bVFfKfC9tjiyw/XZfPv/LfzP+ogDEx 11 | yeXE9rZ3/c2q9untw+b4bLdEFAmDHjnkEXS3HVqCz533cCGySVQzvgBmXb7/ho14 12 | WEHNc9cCvZZZ3xCYPhxpjoTpFwvmI2rQXyJWMVqS1S/RdLUen6mNCvZfmmPEeY4i 13 | W4wnVWj5AoGBAO3pCG+81D+BPj2BOuNQYRaH8ymfxrCvmF57VS8nkQspDVsT79ga 14 | xyWdY1ZeCKK6OGgk779T8phndtyfxmmjvagnLWx2Spc3iJQIu2GCdmbIveY9EnmY 15 | mUo5CHXyN0NGHyZuub6wI8v0oQjLtt88/CfuHkbi65vn73P+HZqNieEVAoGBAMW1 16 | w2gYLYzVWhkUQ6QkzwMSL6kTTEY7PPXKQTju6fkMwfVcfQziWO7ZPiRoHNGtxVYk 17 | UwV6ivzJfDKpir4HBgzEcBMtYU4v+963ZufDtNWn8FZcMRz8kELyXxh5wlT7nfrl 18 | VwRQ25BdmC4pld4g4FPbw5Z7JcQrEpQa6G9KGxzrAoGAJR9Bc73xGF+gSJSLjcCT 19 | BaL87DfEFvmvOr7f0dXIqgcj0FxSBlRXUqU2RNmzW0DXYFizGBWPOvyZ7V745K7p 20 | /vzt94iVpvbBVuft5Q8oTm1wRCavZU3MTWqMyWqb+OFOJv8L+JcfXsmy/t5akIbB 21 | ibF8A++Qd+k+0ciK8fy30OkCgYBPnlsK2HG/fUvDPb3fpFMZUYGP/Q2CWui5srGB 22 | U/U1LkYNoSlavuxBg4ra7nJsniYSAp7MXgUKt7kkTdJppDpzecgIcQX2jqxHjGQM 23 | gWuZfv/yRz4gBjWyQBi7qozv3ERKfYEFY+qHwKlALc8EnQi5vI6PUxhqX04kBpID 24 | /zvb8QKBgQDp+wdH8nhFzvZODafQEVgXODUqGN3qxgmJEpKv94lcTgDnDds+l6Pz 25 | 1FTHX0vYi9uAu2SuVqGfrd26oerYbjiHdTeCHdFf1V037zt3Bk338wF028nEnfna 26 | s/NX+nt3jTt0Tej25kLm8iJLOdnOeChuUBz9PC8/1kXngknFuoGflQ== 27 | -----END RSA PRIVATE KEY----- 28 | -------------------------------------------------------------------------------- /vagrant_repo/files/lookups/index-owners.csv: -------------------------------------------------------------------------------- 1 | index,owners 2 | index1,owner1 3 | index2,owner2 4 | index3,owner3 5 | -------------------------------------------------------------------------------- /vagrant_repo/files/lookups/test.txt: -------------------------------------------------------------------------------- 1 | column00,column01,column02 2 | column10,,column12 3 | column20,column21, -------------------------------------------------------------------------------- /vagrant_repo/files/test_app.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cerner/cerner_splunk/34da9fefba4e6abda5870c1014c8539fa9adb597/vagrant_repo/files/test_app.tgz -------------------------------------------------------------------------------- /vagrant_repo/nodes/c1_master.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "c1_master" 3 | } -------------------------------------------------------------------------------- /vagrant_repo/nodes/c1_search.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "c1_search" 3 | } -------------------------------------------------------------------------------- /vagrant_repo/nodes/c1_slave1.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "c1_slave1" 3 | } -------------------------------------------------------------------------------- /vagrant_repo/nodes/c1_slave2.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "c1_slave2" 3 | } -------------------------------------------------------------------------------- /vagrant_repo/nodes/c1_slave3.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "c1_slave3" 3 | } -------------------------------------------------------------------------------- /vagrant_repo/nodes/c2_boot1.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "c2_boot1" 3 | } -------------------------------------------------------------------------------- /vagrant_repo/nodes/c2_boot2.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "c2_boot2" 3 | } -------------------------------------------------------------------------------- /vagrant_repo/nodes/c2_captain.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "c2_captain" 3 | } -------------------------------------------------------------------------------- /vagrant_repo/nodes/c2_deployer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "c2_deployer" 3 | } -------------------------------------------------------------------------------- /vagrant_repo/nodes/c2_newnode.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "c2_newnode" 3 | } -------------------------------------------------------------------------------- /vagrant_repo/nodes/f_debian.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "f_debian" 3 | } -------------------------------------------------------------------------------- /vagrant_repo/nodes/f_default.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "f_default" 3 | } -------------------------------------------------------------------------------- /vagrant_repo/nodes/f_heavy.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "f_heavy" 3 | } 4 | -------------------------------------------------------------------------------- /vagrant_repo/nodes/f_win2012r2.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "f_win2012r2" 3 | } 4 | -------------------------------------------------------------------------------- /vagrant_repo/nodes/s1_master.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "s1_master" 3 | } 4 | -------------------------------------------------------------------------------- /vagrant_repo/nodes/s1_slave1.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "s1_slave1" 3 | } 4 | -------------------------------------------------------------------------------- /vagrant_repo/nodes/s1_slave2.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "s1_slave2" 3 | } 4 | -------------------------------------------------------------------------------- /vagrant_repo/nodes/s1_slave3.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "s1_slave3" 3 | } 4 | -------------------------------------------------------------------------------- /vagrant_repo/nodes/s2_search.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "s2_search" 3 | } 4 | -------------------------------------------------------------------------------- /vagrant_repo/nodes/s2_slave1.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "s2_slave1" 3 | } 4 | -------------------------------------------------------------------------------- /vagrant_repo/nodes/s2_slave2.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "s2_slave2" 3 | } 4 | -------------------------------------------------------------------------------- /vagrant_repo/nodes/s_license.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "s_license" 3 | } -------------------------------------------------------------------------------- /vagrant_repo/nodes/s_standalone.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "s_standalone" 3 | } -------------------------------------------------------------------------------- /vagrant_repo/pems/c1_master.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN RSA PRIVATE KEY----- 2 | MIIEowIBAAKCAQEAu4ZRYnNv6wM1WeviIZOCzZZp9EQtOytfNWJZdfNQmw4RV0hW 3 | glqiSXJ4oWCSle+Cwpb+qNDSYbtFrK3MJ5bDmPdStw8QUzlLnojNDSUUpWh0Spm/ 4 | JboJayehBCkfpxdHTV2GgkFLr/uSJr8IHRZURxMFV3RMy0cUieYwSL/cr3lP1GKx 5 | f5obFAInwAMyuiHIl85leRt/sUGjjofJfO13Tsz3sclXXx4qA4rOZ81ZwR3sKoOM 6 | koYnDSQZOjN1vzjCXtMLtQVBOiIS0g2Jcd6/+r+nhwenK5BXMpvGojfaoVxAv+U/ 7 | 1qeWxLvdix6vozqzDjCr0UZy/wmy+nUEQe+SaQIDAQABAoIBADdF1vUy21kk//O6 8 | QFPvO83HOQHDmqVnGlAM5huLFUYutlPIwZ74gf8uG3pNkcdZ6mvav8MYkfo2jcnh 9 | DFza5lpPA/VrHj+5kp1u6ymltVkv2Z8nhBzloeMQsjgcuvSwOtcF6yC3iEyd1S1Q 10 | f167dynf5GIrqHr+P4KJ889tpemeUX5cqkTbT+DFnE9rwWEqbJor3kM/5ZsgNQPa 11 | pAUHIOQtg+rbC40bpONTYrfHJ7lSU2SArBvAxLxLw5hzDhMK13LLR8/70hxHYA7Q 12 | uLUSBcHzE0n+7F8Re9W1fsw0nV+mdeEsdHi4x4Yp0RGfOtAnXThoDblekiX3n3dC 13 | oB08qlUCgYEA8GPx/Ag7Lnj29J1nsR7UT/mKY7XQ/lHszw15hL9BCdkmwtIuiAVA 14 | yayMnTXyPycBk3dNF3R5+iY5JhzIJKU82jiEpDPNl06oTG49BY662ETDviWG3K5s 15 | WhP/LGE1/Bj+Ell51RVIfcXVqYVCV9v8lihg+DBXnL0vr3Pk/VytJMsCgYEAx7OT 16 | YepGs7l3Fn72ufUoXfWbbansafs17Fg+C7TK1+MOn1Avk/bWw2qdytfLBZqFWbWj 17 | GBC+XPEW0S98sn5On3bOVi4diqs/TNWyYpl8a92tfjTTanlaLghDdYItkY7nUzvc 18 | c/NHAE6Rtwgz1KOT3Ybki9a8CHAG0KMlru1A8xsCgYAo7muqpWAmVpR+LDsWrpAq 19 | GexVdATk+OAglUPGtaYGXkI6U/12TaatcEL1FdVsqWCcUmj/AGcwj8eVVLtDehs1 20 | cQAs0WFFTTBc6zxasOXhozvNKaif9NcgM110mgzOIxdH2pJjFN+mAsSRu84DFcMZ 21 | ckCoodqZJqFy94HbHiehJwKBgAtyuvc5A/aXokES5DgC2t6QDun5fMkSkqPK5zuq 22 | kJpRtOvjH+celm87dHJFbqkSk6Rx6jid9RvE4mb5ju94mC9CE1ATcrQZXxabhY9r 23 | dxuD6Mc8ZgZLkKTk6mEZJl2a0J4P53JqNt7IokfY24fMHNTtP7rYg40ERw+82pMt 24 | nLSTAoGBAJb7tWbA3A18KF9LCJgFO0U82BcuH2SK6rXGU0vc56TBUfcSd+SoMyNU 25 | KBBZ5brLuETPd0bJcdPoghTMoCYd4tHrMWVW9XLKwjXo1VUc1mf75U9l53UKwbmD 26 | hHJOby1VL12CyhZLlCZ8D18dxVfzTUYJhI7LUjLRjmb2p7r1Ehkc 27 | -----END RSA PRIVATE KEY----- 28 | -------------------------------------------------------------------------------- /vagrant_repo/pems/c1_search.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN RSA PRIVATE KEY----- 2 | MIIEowIBAAKCAQEA8dRxeY0+XJdUjelr633XrmMIuEs6r+daAnYJsMwmLGPoz1mW 3 | UX29rAGM07fLoL8ob5HBTFu+1GWqLUupWduLJ5k3kt52RhvwS/aSaPVx/FwPi+iR 4 | W3Ca6mkTmSvV1/OT40w5PVLnnzDk8hpmUJcaKT5nNUpmDLtWG7JsRz9NeebFJxff 5 | hh4A7tJ8AlY4wqCox8rjfODkuUBQQoXyyrWX79zRRhijJVLCs8UpowBdyvRzB6G2 6 | /hAMafecly1SdjngT2oumqqZmmtejRIlUygmG7HwDi56mkHgcQ96VW3YFP8w+JDK 7 | pyq0/FeVJ18UsPEn0SQuPzaGB9iCk2g4NoGoZQIDAQABAoIBAAfN5leY4lFUpOrr 8 | hIsWBZbgJVDlRKCWo8X+jzOAcx7tnn7KklpQ54Uci7HtdYnbgW+QUZ+oOlFacpKB 9 | pZZ7ylLd0/hOa5y5nBinfXQbr7EIO4w1VjOQP7+e4n4H9x/AAZ7NP++ltEnj5w+V 10 | IIYrSjHYjLYgj4iLpyy/plTqSxLK+rNQ15fiEi8eT+Q0MmGEGk/2gFP0z51vlDg4 11 | qFHAKiuq8sOZXL9sjt9y3tq7z9TnVt+4MWFGVHEzxeQwnltgkfmgdEcnLVlAmCfX 12 | EuK/u44LnWvAWZ0N5crRF/2tBoXLkeHNeywjnci20w9UIuvjfrOXnZuuF9FDAXpB 13 | Cn2jVwECgYEA/w3jtztsQ2aAlN41B4xFY3RwNosDkX794EhsCkreEAtZlVNvUKnN 14 | /KXZRzmPrfV6n04sTxiDN2V8CHuBoq1gEc5GH/bNCgTXMqB8uAUTK3lNq3rqFHVH 15 | wveKXmfSxsmPLMQQ/WfS7vlmugzkJ2VS4vmie1p0fDXjKynE/SIvTUECgYEA8roA 16 | HwFDdvFxnT6BeC04T5snUb8Cx0Z2Cs/Ag92W56fba5JMUkQqkBHTZcnUHQvsW6U8 17 | oD6ru0rm7guhsfa73flII4GtU38SfPfvB6cXueebKebvBYFjzUJ14Z1apnAZ/vSL 18 | yamFSzyadeUy4LREgbbojwenWWvxYPGAw+TF/iUCgYB+2BiE2u+nwYV3A9+ZpmAn 19 | 6xOXfKFErcRy03Gv2LYBgrOFuR3mHtzLpmudqXnUSP431ffhSk6PsU/zJAE/tzvM 20 | /yoO4X3tWqTvj7MXDacP+t7uxk096WnMA7Hz62x+4mTrHYNZk1Xq9WvqYVjiYtjK 21 | +t2cvUqrL12P7NEEFwkxQQKBgQDHNHPI/mZ6Bamy3YuwL5yZaMKaSmNjXKagNOTQ 22 | 1Fl3AcIIxOayVZOA7cBLN5tHw3NVu4TIFucmLVDdaNppjg+dG2tjCJhRgGaR/YFF 23 | DJNiVXx4pTjhkdFwsezBHz04f6Q2JEldVi05FCHIRDS/SfM3af/u8t8beoV9hHaj 24 | TuxXqQKBgBsTjroxR9QvswGAsivr/lJViWEWCmHLSe5wbEVywQEIQGdZnAMKYq17 25 | qoGc/49ThGWBZ6U66n2e4grNB6hC2WaOR9+LFMt3phX/QFAYJvqb3t8kfQ1/vQZD 26 | q8dxrPkd66RxccIyib0quUFTPCT+EL8NX6wJL7WVRqht2a8VQO5Y 27 | -----END RSA PRIVATE KEY----- 28 | -------------------------------------------------------------------------------- /vagrant_repo/pems/c1_slave1.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN RSA PRIVATE KEY----- 2 | MIIEpAIBAAKCAQEAuFI+xwlfMqffLP5YjrTFONnPvY0dnmASOWXbJwHbQPSjPHLX 3 | tgQs6XoOA0ZfUknJOU0DpNTL/7dEPDJV40FUzVjjLKD7G3DoOciHcmXWxfmhmvFV 4 | 32WNi1wFMUhvfBmwRPFUlaAhbL1/wlEIsW/ZWW3opXKnr/AGE4cmzRN47PtI+ver 5 | yk3qga+ddJFwtY0sxub6yDkqjDFwN3Jhq1wZIJa0bW6cb1IwQVngpKwq17nRO+/+ 6 | 5ReKkdE22iaRiXT0iWiTHPHZBKs/1+zjI++d9qJwqQb30iq7n/NPSb3BtQrCTGQH 7 | XKkEEOYNpnYH2MHjcnqK6XusneTvQn+k1XrUtwIDAQABAoIBADiihMmRdp/Q9wET 8 | MdC/eK4MNwmuF4C3UkIyqtDkgCMISDPlsaQqykX/C9kzwUw+gcbKhCkcfYYYIK5C 9 | ZSOLymvCOSNYX2/CFIjUtdGPuxtfpak/KDyZLpG4d5v5/s9p8UBtyqii6EJKQ7xI 10 | O9yRWn5hCA/2F9I2dReA+ooexpRB58FtP3cJQ7Eh3EuunByReuxyCzqUHU17VRO9 11 | qugIe7riK73LRejogVqhKAdc+GZTSGYGvkFoE/5uKn42YVodZQxLL09AZtCqGFGd 12 | ZY0ZRUDe6G3SAzOquju1Rb0mLqE4cChgXyTBL0bdKNOHPwGZ6pQ58SnR8gV7zvIn 13 | UQD/O0kCgYEA7y6yrOMbxN2YmAbXzYMy0+GGyvRhjZ+48kyo3dfFMquvqJdj4mUl 14 | zieB7NsnOtuGg2lrqDBOd0sOC3ZnXnF74eKBO6Yyq3oQ6XrYRG8ke1+oX/KvyThS 15 | 7+o23qwtzo5zkB1PNGC5fmnXKWbFgeLwzEjaFAccu19nChfUFTvu0xUCgYEAxUgK 16 | 3GWKUIeBF6Oq0R0NH2v+Q2xEB74mQfMKhURSmMNrM6dFWYifnBh2zfWr14wTlrob 17 | OYc0lVX3Cgawn5eTYVLOBccfG9TcNARZFvBOD5uJ6Hq2G+4EHT65W5H7WfE4jmfg 18 | PKb71yrL7IQijSUcG2tsGE2dmzkaicynoXHaq5sCgYEA3va0PzBTAZjlF8tBPuYv 19 | 6o5RHj7j9abQPKczv+HVhV/AlzPRPAm4TU5M8qR1FIvx/+y1HAs0CkagKBVPVR4L 20 | Ms34VMegcnOO8me+1USaSJwqlI7iSXzE67t1POxaozPuDIkV/aixImO93G1ebq9E 21 | c9rx2DutEApmPmVqIgVFo+UCgYEAwbMBjvJXwse49VfqUNWAW/ixtstnZF7Lu3cB 22 | PmYd3wYIjLfQvJ8Lb70JcSGkrsdHOHfUYUCiXXoBS6PT6W5u82DVDhE7Nx1hc+VM 23 | /9vEGUjzOAK8KWIiQgCjCAimTOIuUIwnPAYMQXAwtzHppsHn/fgUMyyJ8a04pFH/ 24 | yOE7/b8CgYBfAWhPBdZdU/s5SqE59yinasSNXCELIvtc3rBfCd7wZUg7Lr1LgLPp 25 | F7HO5UlShNQJ/4kg+RnYV1wWG7zQV4ixdawRc8rUy7JU8+5DD3b1mn7CzQkNkOWL 26 | ag75GAGi75DcCBcELppNtmJz2r0dDQ55f+lgkVZ+YLCVPURa5rwExQ== 27 | -----END RSA PRIVATE KEY----- 28 | -------------------------------------------------------------------------------- /vagrant_repo/pems/c1_slave2.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN RSA PRIVATE KEY----- 2 | MIIEowIBAAKCAQEAv6YUUlGdkI9h4cQib+m63OolmNHQskfc2tI+0W2rn38GA28d 3 | yG1bM6egEcLzy6TO/c3ZvPuAcS3Sh+hiGl0ey3OkeO+fWXeGphYBaiXtgCYqLqZ7 4 | 17DWGtZzf06nRm+z/Vdc6b9msOjNB0iX7wdm1HJQjM+auOJbuS30ESbfhrMtMT2E 5 | Cesaa3yHVPcTNrTvNVBVz0nh/U4sYUJNEg24FrU/WeDCmNFvMk+GKvDc9qwYkc4R 6 | lxsjYFPOlXhBtSzKjQLR5YJzUa+FyI89ubp/ftZKWDQe6Id3zA6061IqW/HO+9OI 7 | SX6Jcrk7WWBMihauT+0RLBEBTPFeM5F2hxDYLwIDAQABAoIBAQC9pgaUE2m9xPWS 8 | qTl+z6d3t0kvOemwkoaOD+HT8xgThGqZ+VpanUTUD/vJt8bzbYrcA9mFNsg6t6KP 9 | lTmHZ0DzCePnPRDOQwZ+0mXh+dhVqO6zLVJ99eNZuX+fqmDDxgQyHkK2mQ5w4F8L 10 | 5x1aj1OFxf3J6iLs9CraTAwq8PHfYzTWAIzYenHiMm1BsoITybXKp6k2mCkuGJkj 11 | FbXoGAQpdVhjOy3asgRfhRX6Mv/LSuDQIFtS077laVcY0ylTo9JjCgfDNufPEw2Q 12 | mzyx2O75cFvjkXjstpfqlAigVJx7HZpg0ysX8DY62cNB0E+Smv2MsNdAsSHX3vMH 13 | lv3TjCmhAoGBAPa1dbJu9eyNQfTc4QXGc8cEbuYqi0Bbb+wEqbR++VLAZmM1dBwj 14 | 3lUKKV97+ZopRnltSfjYn4kaLd3ZrNl7BHSFp163v7jdGe5hVLxSowuy1pcP+nf6 15 | 93rwwt5p1zzCZLahmryk+MblC/X9nQ6pfdLftC5vRmUQffWhY5vjyplxAoGBAMbd 16 | x+T1kKA7taps4GF4Jm9RR2veayEToPuqovU6eRKvUdU6ZreKqCUa0iIHQtp8y+jw 17 | ZeCrsmnInsysbCLlYgLgpsRR/743pCKQ2b/16NupvPXlBJvrAKPHd/0YEXRjb6JB 18 | t9/EGrbKOtTuO3Mz866Z6rxKr8wqUj8yQOgNhrufAoGARfRILlNGSk/3js3+xFt0 19 | Qs9f/sW7fIEw6DSeRj7mxW8m2SS0CrKk/WoHNzr5GJxxjkbN/dC20/JnZQuu9m/q 20 | YHvxbGsf4vRWwQA6PbgU4WFRdb4jIFg6SlLwfo52aJUaZ6rFLI5+uC8ESDkkip7G 21 | vb+O4MfOpyOZA8hCbVaXARECgYAjbs64B9z9/8WNmRqdo0fN28CLArU5zoKHdM7W 22 | PNXns180S9STbVwqSE4ajAqoXUYDuhmc31rJqFpLA4m86fv9oUN1hVq47LcNBZwW 23 | rN0RjnvBoE2i7ktN4zOI3+n0P+dbFLSLZSiRWxUCbXQgQahwerItXG1YRk4jPnP8 24 | JLTV5wKBgC57r9qCk/nc9M6wn/WqHYZPknsBvoze1gVyzaXYdMW0ZyvMyXWDmUyQ 25 | +NWeNFbG+1cGRmC8KAcJLJ9KZuEZZ4Xt07qlueaUIMXSL5RGAAkJP1O/gn8Ezi2a 26 | RgK0cj06qWgaKsPbePOd5044b+MS0aaVk4Ly9pH3aqoyf0gFWfd2 27 | -----END RSA PRIVATE KEY----- 28 | -------------------------------------------------------------------------------- /vagrant_repo/pems/c1_slave3.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN RSA PRIVATE KEY----- 2 | MIIEogIBAAKCAQEA59hUWw79f9r2Xz330VDBbeB/z9l0I5OK6JBLpagrfGu6ZVg0 3 | kOB/s23j+gMWNUZDYQ6RKYiS0GxmxgkbKVYJwRx7dFJG788pdHU6LWpTzjnWI6fi 4 | Qxp47GCAj3XjbaS70qDh7F4VWxy8h8RtJs3diL+YH/rqiWhIgJLg4fsSLKI+taB2 5 | otRFc229mqCYbWdlo2KPuWhR92WlSao46oGZqs9LnGDwbjyX/CvBoaX1S87T26f7 6 | 80FVl4BHrgaQCgN+z7Wn9FcK4OOmjGJiERbcBh6+TMshgP5xbHaNVlYOg6oS68fw 7 | hh2RRbrozXdAs6NeR+o9UA+HrakPIXYxDDJBNQIDAQABAoIBADgQcBW1AkgwwvM1 8 | IQBU7vGLIF060ILp4uVqP2DH0fw8cM6hDdUa9MaHBGIo7O3lF9YYl7HbfOU50YCC 9 | IzdTvvgb0x7F5rGG/xdSYccptypfghENQAHKHQPMMkp+z4hsFZ9RmFB4T+HAiTar 10 | oVmI3tF6w2a4Xo7r0NyGqCr9c9+mxnjhi/GNGFcyWB0/0q+fAV3Y35wJ/LSU5YtQ 11 | tEuSXQgg99z+f17ZZOPWye/DuXElGfvgBr60ZyR93RErp9Cw9DBWe+N6hTptfRQx 12 | f4r7RZAubkjazVO8VVnPfTfHdr46mbwUuqtpPjI7UyKx8I9S9vKrdyHtggQLSxbB 13 | 2SNClOECgYEA+N3NqyvS+YX+QNNSMLj7x1G43C/2JE3Uvv4k5pzCP8cHk20SXEtf 14 | Enrvah1Qu4NfMx8e5DeCml8b12Q69SxYsA97bLeV1MH+geB1EYndX/bvJaRzm7eg 15 | LL9+Y+OyjUrSZnrKfnYwsC7QIwLZBnQEdR9Tuv1m1JeJqb9SNS6EWmcCgYEA7n2f 16 | SMQCCpkivMC3d94BHm84R8+XQTLovXSkuui2jcyNLfGxG947qwaKCyqvy3kdIU1e 17 | BH+7iRDEjw9fbOt7bnSWC0Mc0okTi0BNqHW7vL8hJckl7bWR0ANYMZnZKHrbKdBB 18 | cIJbmfVLFvp6xD5Fg12IQ9GdZJ7Cfs7e2UeV/gMCgYBgMbvx0fq2oGhqvkQiuR35 19 | KUl/Mrq9xafaO3of+a/L3y66eYqDSk7xYbtxFOvDzz/ZDspuBFbjPKgSVZfEdOPD 20 | Cfj3SO8NUf8CTLRzlwqOsXA26J4XLp8nLM255qV5n9Y77nKe9yhSsYWaQtuIdwfS 21 | Dc3blV9OBVUc2+r2y4g1OQKBgBcVE4CQb/4kmicYo+k3FHaknxbcMbB+w+XqTzND 22 | 6L9Kp/NlbBXdaXsBFAVGqWMRIs+hVFMtJbJ7a/rIqxy4oear5AXNBhIecETPAXUn 23 | h/cZrJSipkgehbFTUYrjcBAp6+JdJKhGBaWeBxl/PriVqlavi8u8kvY1I2/wh8MR 24 | 2aOPAoGACRFWop/xHvSGEtP5lHzWIHfh8tCTrgzG/MnssftHOGgTuA2vowaad2Bh 25 | ilvaYBRgmbAWVKaY2BDJAgye0jhQiJu54ZNt8HNPF4FEraKWTr1SD18QlyCsMkYP 26 | M1eKzytLg4cApUYHaBTYJAIHabVdA0/V8gBS/7YU9sHT1d/uXVc= 27 | -----END RSA PRIVATE KEY----- 28 | -------------------------------------------------------------------------------- /vagrant_repo/pems/c2_boot1.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN RSA PRIVATE KEY----- 2 | MIIEpAIBAAKCAQEAum9IdrESvGVANlXd3IUWgx4icn93t7apMOr5Mbn+gkOCJfzW 3 | CGo0uLmv/tBJ9DvTaL1zXstIrqC+YQ7VGajztyAe/MiPNZS7JsORjwX9BUtFI6tf 4 | Tjf0y5H/2e4BanonWdHDGNPi/wgtTnXMqrh38gxq6F9wPnG5uDnO1LWXdQn2bDI8 5 | m2Q6igKirXwvQA5tVzLSEBguqjVDzGd2fOhhPFYyuwYOEfV3ySov0Re5sGGiQJA2 6 | XwjVguUHLFYzf+kssLb77bMKkaAjW1CpTQ4JzLUDwZ6kQG5v+Js1bJiKJfkai6X0 7 | dzLtThsIuzTv5tQExIdaJ+hqIFPn0nkXQMrp1QIDAQABAoIBAQC2WvkvF35zBjpr 8 | q0uKUic18vjQs7t+18zgC0XZjMrT0YJw88DKlE+jTAVIoaVknkvoDD7XvtEF9jah 9 | Kufn5GkWevW0XdwuFZ+FiA9NLRdS4U/sVsiu8m6f29u85189LeRlp5ZEJ6TFvdLL 10 | BtA9QJgaCmlbh1Z7zbNR7kFPr5tIntzn9CwsVJJ0VXmrz1V0OFYcnwd9EvkNnmFA 11 | iKPzM1N9VgS61t+kNG6mghsdLz2Bn/1d+xC1wGRBFEY6H7AAbip5eNL0NNsTqxHy 12 | 5wEFOXyd2syTLxfDyg5V8c239aZsQvtuWgyEzaZCLfr8klDMEsGhrEGvd35Nl8ov 13 | M91q1JyBAoGBAOfPEnGFP1Hczi4knIhoRWZzbdPwApEj0E0DP5Bfn+cSYYqnfIrt 14 | AKDE2KFiQLzedO4jGD0XhyJ06SKLK/o4otke7me9nvUk+TqwnzUTgvPpTicETgeJ 15 | qeBntsHw6yB4xiOo+ds/dnnEUG+zUgKiax8UI5Hf0P45RdGaBwMFDID1AoGBAM3k 16 | AoIHskpLvPCFoHjsL23EsOJ1GxL0IMhBykaPT3y2kDjP3BLQFa8CbjtTV7axg8nY 17 | IWkJRDLJhBrJ7oHhj834TSPK5eagKhx5umlx+XXjb6NvkLqrkg/Df5Y3VoDNvr2c 18 | vi2MsdolUvpFqGZIbNHxbfbrbpDwSKdHcPhoSblhAoGAEk+4PEFzXAseOmTn/JqI 19 | COzLWzeVbFOw67R6+/Oh1QYNsH9EhlDsgMar+iuhw4mrIPiivIi0QxOLKxBlW/HH 20 | Y3FfEdDX0rOmAG3dVbsB2DSw2MItS8kjIzfuJunaGQmRVVXOzvP3bu0EEZ7PtqeP 21 | 4Ledi7NrdfmeO014ilOGxlUCgYA+XFNOIxqjWjFOAItMVO1AqBSTYrjiksLjJNop 22 | aPrAYWNpcbvMju4iZfARU/r7QOUT27yy3bWkVFkI7CSrfjBaSFzE/I2JvvVCTrRh 23 | f735MPv9WqtRfunskGAylWxD8w1UzQblMPolgqyRVUvePw2GwUN3SHPivoSi9gaH 24 | lr7NwQKBgQCWagilzP+ceeRB3U2whi1U2jJjXIJqTb4A39giFZ+rpa6di6BPX5DN 25 | Vhh7oo+hKLZAD2KzQ5gAX6tm2RkaOn5UwWIrmZ8OuYHHrg9fSjVPWaUOMspreK0w 26 | f+47puvbNdjvjIwQTFjgzmOWPt0gRuv0c7kZMKg6rXfDq46wcql1+g== 27 | -----END RSA PRIVATE KEY----- 28 | -------------------------------------------------------------------------------- /vagrant_repo/pems/c2_boot2.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN RSA PRIVATE KEY----- 2 | MIIEpAIBAAKCAQEA4KbY9s2Q3JzgJjUMmSoCUiDiAAiAEg+GM7RbaYakfdDOXjs8 3 | Nl8kj+tqQxGSo9nSWgeWFuubamIGjlklC9LjyFvVRPMrjgWAp+Qe3RGmpZltYSAn 4 | p74PkVtnvm3L76FpDlM9lNoBovr701fLj5sFwlwkYRPoOVGJ7W59rp57+wYwUFaj 5 | xVPY+OP4OaHoeah2BcbdqQOoAASgBOvaTYqkivBKHUgql+Y0G8N4RcBQjdg1eW9D 6 | apmed5axgJrrjiBe1tY1fKY+dixybuE0yL+QnXwKPZVxwqsw3irjT8y5REnbDVJf 7 | FAqL/OW4n3XKYLKYvtlR4pkI3zKTt3c39iuUuwIDAQABAoIBABmH3LBvvD7WNUMi 8 | VEQz2f+rbQPD84oZ6Y6GuLzNaHRD/rAG21jyhx00C+eDX77vSlCg/BWuwQLeERCs 9 | YOFvHiPvC9XCLPj+9xgdfMRy9RVs0llvZhJSL0K9uJSTtdGN7nqKSz1XaUg0bdoe 10 | 6Ctx2r2z6w59TK727U3meLIXoM9uNhBCy5ekcaMym0PXH3JJEYEsJZWoPMeEEhSB 11 | UDUyMnYIDkDu546pKvRn2wyZVoTHQ4g2vRNe81iE7IYkVo//daQFTo1VM3QpCWsm 12 | 0Ub7uNQRtcmgybQR9HT8KA32tZqvTtaVBnc/PoxciP/z1gPTIR0hMUsQJZhlxtBv 13 | RXDXPwECgYEA+mELzpoijg1Epxo4rQSyACHiG0QJXWRakjlNX0nSV+k0QlA5NUJw 14 | GjIlsOIlna6VlCGw/pjukC+LDvcp51Td8oPSjrlmxyD96RHKnr524JAE08aK7ZVR 15 | mANdET9T4qNaH3rwP54IweGBF7BScDORBSee3cBMmqVFE7CliPR+FxECgYEA5bHx 16 | m+P5J3YQG9TPrywTwJsbPyuVSuQ6XCSX/oDAAqf47V6d7XF70fP3/SF1vsK9QfHs 17 | 1Rt/YREKovtALz7TsKxHeznoRcpw42ktznw52HsXu7ZVeC+y8fuBNG6OKeXJLyIP 18 | u3+1spw/33lIiyIXyGBt7YadQAMXmRxVMZ1tJwsCgYEAs/f7p6aM/fQ1i7NCV8MP 19 | Ox8fyh9uZ83ReFdt8Pc8FWqP4LaPWGQH9hxjkTAMf7nU1GQfN/GvUL6LwtcQLLKI 20 | 0l/EgkhrwuhI+jWKoe4fvqxme96zT7DLtGt+gv41CqwGBKi2ddPfUZUI2IEp0HKQ 21 | Y9clzxkBNwtiipOneLjcxTECgYA5x8eFdZWpjZODzMbpw+a8Hsh93ZLSohLkNvhd 22 | NzoV8Pc3jwOfRVrmd768WHxsHkTJn/f5q88hNc49LYL5344U9WGN6AU7+S7opf61 23 | 4J4UjPJtb/KUJzuWj7Py4pS0iW9Qgfr/KaMlaRTQPIw5I7xj1Y4RoDlSbvSyuWPc 24 | 9UMN/QKBgQCcmy20jWdVPpCeIEEwjYzwtmhX/u4FjkP3gEWYL2ij5N9qS44UQknW 25 | h4aJZ6pRs9VXvntDHAHxIg9Dawe8nDzI+NGWLx/Pk7Y8atRhlWcZF7JB+9rPe2sK 26 | JfyS4CFVEbXwiIJVSQSccBit32cpZCugQV72VJ5b+Sh0COsxG2/Iew== 27 | -----END RSA PRIVATE KEY----- 28 | -------------------------------------------------------------------------------- /vagrant_repo/pems/c2_captain.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN RSA PRIVATE KEY----- 2 | MIIEpAIBAAKCAQEAvG7XcqcWSlrIk+R/8bXDsxASd0gs4tQqw3fbvbij8v1N90CH 3 | U+e2hUAAjroYMj5k1nki25rMglkmiH8L4OnVa5xcKIetluEz9E2JvlFUFk7MOigi 4 | 71LveZYxRZ54uhnEnsjVULP+hZ1NV3n8CpL+tyN9HLuUi/tguE+Oxw5fIWOVyYD5 5 | FKiUr0KrBsWtAkEzsbcKbg6BdvPC4vhUVfU8dRbvXCfsuAzqngwa0taxxwMwXPNk 6 | +6ysKxbRrbDeMC8CgdKE1fuh+2e2kClNmRBX56yOLWPZVD/gd2kISky8dC5i5pDy 7 | lAvb5TmJAL76uI8wrb0WvEC7BK5LnajKf5MQcwIDAQABAoIBACrr1Id5J8qoAygs 8 | 1Dfqfzk6X/prpk3EpjkABD2i4TVoHWpEeI7UKO8RNQ9NtFU9gRqZXSdIi2zlgbF1 9 | vu7sVIC+jP9uaEwF4B+1ybpgLBcou7xDiDGbYpD/dRm2jylU1USV2oEXftJQkl1q 10 | m86MzRhKLSVuVNfN2qog9RTCYUjpUhXRPAo6mQHaagjnX1CHm2+DMZDOh/7ij4KS 11 | GxCF+3vWgbIgB8XxEIkg+08ElA6EFYZgjKUPkuLe7WA83Yg9ovW22L53TERoxfEU 12 | KC8k/5nSvU9LwsJqTbHL3M+gpA2lf8xnO2XwPQmN6X7iBd81lJeLhH1FZT+RbIWn 13 | Mtug24ECgYEA3RxQrIX8jfY/RXBekPYJ3cUzWCFRSwepXPCF/UAscnTwKUqO+Y3C 14 | 3om4qXQRpl5pqaNDMcmT3cs91HwVjkQJKSSywwiqBYc6hj04M9FaSJv/PcSHbZ+z 15 | HTsD7WawqY5y2a8tOwQEA0AG99puLL/zPvPr+fOzbKDmNz3vaFZHCoUCgYEA2iqG 16 | bHavz+gmCikshl+ClgHwm7tQZ948KGWo+6uUc0Odn8gIdEwpSNFZrXXR40umWl7D 17 | WuKXKSdLIODDItYBcDejwxU05CQ+kmJokroKUSr8Nttl2gnu/Xjerk98dOG6NTjq 18 | Tj9vyWLiHslgXOdmpguU0OcdCkHq/k1G0cl5LJcCgYEAo1EhyXyiAd2L+Gc6gkop 19 | GXRqK0NYv1mmYC6MWXXIHrZ/GZCnsG5kLGl/SzKfQspjs1gS7rhcjqtrPQJ2DYH1 20 | Xj1sCKDirHio4rRfSe7th8opql76RR97djC8AuMhw+uiq2U3vGqH6DqnqvTdAhK5 21 | wZr7hsDZm3fw84a8yc1IZd0CgYEAzgTabBKoc+0F/xJiuYH4DzBFxspcY7m5lWxq 22 | 5z5gMXjooLqFQU2qrtkDlopsafhGX5CdanYPyQ0SJTobDAqL0Sy5uL+N8uNHM3U6 23 | y1Rj6cJt6l/FDuHSjgpWPsVRAg8niJr2qG2/Yq2+WtRP62uZw7OsFJorEkStZPgU 24 | qIdZpoECgYBRapYtlA/9nrWvc/fI6rRffbnoBYpypcvWh+79W49Qc8HkQhIk08nJ 25 | u4DcyPV3XYBb8esfuDejmHxfm+MwvpqWuF/vYBOZ7ACj2PFm8bYXeK8w2mFIg4dA 26 | Fg67++m3B6g0PjcVShpHv2FEsfERgW9wnYaLQApyx9e2RfCeCBrqXw== 27 | -----END RSA PRIVATE KEY----- 28 | -------------------------------------------------------------------------------- /vagrant_repo/pems/c2_deployer.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN RSA PRIVATE KEY----- 2 | MIIEogIBAAKCAQEAtRQ8hMI3TS53fwie7VCSOnH93ZBXvfBhF0Vy5opx+8y+A0s9 3 | ru7A3kgq0B/yx3UpE8OwZiMNYW8Te/FIRCnzxvInRncYUpXukhIhaAQyp7Qq7rn1 4 | dpsV+NMhYcZsSXGDDzUmdHZwlnGCRyLRboz1qeFOrrXISp9XzLcDBN5Jt6zdXwPr 5 | HebqUN9NVhpdV1P2qlY+wUsbVfo2PqiAh+qPnyjEDy6b+g+vSdMQ3TaAE9FsIj/S 6 | iVpqfTyy+smpo4VBD9zktc5G4xkX/FIoRDayj33X4AOTOs1yzjUBm0CRZGd09nmh 7 | VNiL4JKxJh7iItV5c/OBAitZNtMNFaQ1CnH97QIDAQABAoIBAAuvS5xxf+oOFo3u 8 | +3pq2ZTF6FDU0KSkD0/WHmz8ABD0jEpgH5HbPDzbwU9+0EbIq6bn2Mkud92Sslos 9 | HrKvVli/JYOpibtCi4uHefphUvd5a8/N1iYaKdfNn/jUOgafOYrQrjOTtP4wQuze 10 | NU+B7xRQQqiJeGxATgUaxioZQf6FIDLNaKkmFT3tvIJoi9x5wNwQgKQ8MFYpjv9j 11 | ff/WFPmJGG6VYRS74RRXgRdNN2BKoBF4l5y9d2JkjDCVlva84yUz+eMy3HkRaL69 12 | 03iniWAYV02jkB/jeS3jtgWTKW3LXLRe1BXAW7RlUDIFHPPVXMGp5r/9ofyRDP/3 13 | Wsw1p40CgYEA7e5rXNVmMkyCDrVoRNG9f26cZtrMaFvm5U0CowAPn9QiK/3U949t 14 | +cksutaZUNJkY0K+bNqVvCqJJ2Y8c1w9Ces3KdbSQ71q6WRkjeRg03vPHtYNNwrp 15 | aYNI9eZa7doXQRNqdsjlQh1t/pFC7C2VJNoze7sTQPvicV3HojW8eqMCgYEAwtSP 16 | 3xAZqmVm9tM9EQOkysgk01DNuPLRUvHcQyXn14q75YK+FtHYYgMgaGEnpXLSaHN4 17 | 21dpkbLlBvEAQTcg4AdXZJlTFKVaxuOPwwY+eRlE0vLoJho+aPnAhuB4frzuxcqC 18 | suVFtVjIh0d6QomKoYnKKlTP8GLza0om3RKMPi8CgYA91LKT2mUHdzhpKB1jnPnY 19 | zt7YH8305MUZG60uvMpSp6cFtZ4Ng3l56xyzpScMiNBLt0GTOi6lSox/76KP/A1k 20 | sXqRZeEYd3X8FvnGoe3Dp64IfmnKvwwvPk3MkUNaAk3+vFPzcHubddhqykcQ5zuV 21 | 6xpr8g6r2YlcGpnRfpNvbwKBgEqwekclQPGV1hche/Od1fr3J0brXzJbw+tsVOhZ 22 | C7wRr16Y9I6C+9T3JeFd/Xjrv8XTHq3XoNz+G9bBZTubCrtXlSU3siXkDhzY+C/n 23 | oOOD0GKeRGj2/p33wNr0Cr1raI3iyKAUTNjspFNYD4Kaf87Vp+76fIzHIlIrJyLx 24 | DVp5AoGAXmXPPTjRCdfb/dFWSxDyHF9EORrTe49zcLVoAswIK34b8ui/KYzDGXcy 25 | BxOL+C2Bc+3DYSSa3dQQPy5Gi6MD0NpKTSQs3t6aV6iOgxw+ALMd8dYmPOKJsWEn 26 | IjvS/SYnRPS+IiDaqD/QY53puLj4uuFxyxGZzajhWfvPaIkg0OA= 27 | -----END RSA PRIVATE KEY----- 28 | -------------------------------------------------------------------------------- /vagrant_repo/pems/c2_newnode.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN RSA PRIVATE KEY----- 2 | MIIEpAIBAAKCAQEAoXiUJnEn7M2wAklDcBBzzUjRdj1HBKh3Ui3u2cFXUPPK/KH0 3 | ha55UAvYojB5YQBdw+ijf8Ud6/u8KTT8jtKf/KAO+ZWgHktcq/s5xAQST4iEyZmo 4 | g80GecqZgkgQAnJVQAFdUHvt29eXdE5ElWh+XBH2kNp6XmkAxwWQSE5q6EGYBSR5 5 | Dt6culg2D6xhB1M6SyTPbMQ+KHIO2oPtmN6EWDENcHb2GoiwfM8nUlmXwRtgQbFk 6 | M9H/u8vTKId+38sKYdZoq9K8apzFqZRZebdivHKH1TQcHAKbxjtp1I/yxKNiDH6N 7 | JCFdBTGnfoypL88gukS/P0qIg78GhkTZlyA6rwIDAQABAoIBAGxfk3+hntxOyP0f 8 | 0wVZ5X84im1Df3De6QbdEVxRaZtJpUmeIZG/omhZKxLgWfcC2evtLh9JW2XRVV6K 9 | 05/AOeTCQIq/I/JxPkennAO1f9ylkgoE+ZdMejYwBovsdeJOfm0w/UJRizlsH5jO 10 | FzX4JicBX22lVVAcRYtObqI5D4PFwWc1fcsfu/UspQRgXdxSxZd5p/9WkW1ceofh 11 | pEQ1ttLwemyfmuXo0VV70r8+5bStUg6b0tHq9gH6MV0AXTanUsoOo8ccfiguxyIx 12 | p46w6dzwpjedLiqAvKNiF8MGiWSr7K3fKbiPtV1aNfK9xHhVZ4taXu6yUZTUYvii 13 | uLC66bECgYEA1Fx/zNxMInh0AvO4m+HAer1e6jpUgQNNNNj26rqW67FjW4iOO/mt 14 | mx6ZO2GcUOF1go5zPT3N72cPO4aIRaEPnQB0o5XpiEqaf/pWT1g2X2Y/dVQyGx/7 15 | 5pCIph2WWpAs0ynxKGKOTr/dkKr1f/Bj71FLqDzKz2yCnFdVC7ccLlsCgYEAwqbw 16 | R9tJO2JUKhIPz0UFYVB7FnC7F5m4QxQvgXRyw2bYa01u/36MYLNlxconlH34WtrF 17 | 7N3vEMeNmu5/QF/eR+cqHqJS0XW7hyGIFV+H+Hc7JMzzfW4m3NrpxNBlKHENu0IS 18 | Vk/7eq4jWzTVT+FqDZDdL93iNT+pgbO0g3yQvT0CgYEAl+qQFlpmMKagv1fg8cq+ 19 | qk98be1KdHyLJ8oqYWMYAgYFQP7gWXFUy0pJbhx2+blAGiSTtfTXtHKyh+/G3qDI 20 | jZU826Wrya8s9W59fgdp5jc8IFAaBCOOTbOJveQeoizPlERF25EdoqJI+2wBcgPj 21 | SdmLWRAcOeSzTup+0YGtrE8CgYEAgTuCdcKiKToMNO5O7sadXtGnFuv7Wxzk2Cwz 22 | qhgdBZxnfT4ovppPKviQTjP7+Tt1QyTSmYNzcEl8u2sysxOzKTvRnAsbPxOSUJIz 23 | njURuiW276Te19zlEmaJI/FT5/i/LB8eu41YokexE6HNKb63wY/3OgtvXvkIWiNs 24 | aouuMOUCgYA/JbD1PbWw3dAtdGlmM5QH5upnVrV79CLx66JjZPKUPG97pEp0+Q/7 25 | oAbkeQdS6URgzd0hH8pbbWV0crlqJUNIyZQrH9UVQHt2poFtwEkAVPHX41tZ77oz 26 | GAOg1TTKY8QmiBri0gnzequVqHntxVR1SlUYzp4aHCu/yzCMUvltjQ== 27 | -----END RSA PRIVATE KEY----- 28 | -------------------------------------------------------------------------------- /vagrant_repo/pems/c3_slave2.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN RSA PRIVATE KEY----- 2 | MIIEowIBAAKCAQEA8dRxeY0+XJdUjelr633XrmMIuEs6r+daAnYJsMwmLGPoz1mW 3 | UX29rAGM07fLoL8ob5HBTFu+1GWqLUupWduLJ5k3kt52RhvwS/aSaPVx/FwPi+iR 4 | W3Ca6mkTmSvV1/OT40w5PVLnnzDk8hpmUJcaKT5nNUpmDLtWG7JsRz9NeebFJxff 5 | hh4A7tJ8AlY4wqCox8rjfODkuUBQQoXyyrWX79zRRhijJVLCs8UpowBdyvRzB6G2 6 | /hAMafecly1SdjngT2oumqqZmmtejRIlUygmG7HwDi56mkHgcQ96VW3YFP8w+JDK 7 | pyq0/FeVJ18UsPEn0SQuPzaGB9iCk2g4NoGoZQIDAQABAoIBAAfN5leY4lFUpOrr 8 | hIsWBZbgJVDlRKCWo8X+jzOAcx7tnn7KklpQ54Uci7HtdYnbgW+QUZ+oOlFacpKB 9 | pZZ7ylLd0/hOa5y5nBinfXQbr7EIO4w1VjOQP7+e4n4H9x/AAZ7NP++ltEnj5w+V 10 | IIYrSjHYjLYgj4iLpyy/plTqSxLK+rNQ15fiEi8eT+Q0MmGEGk/2gFP0z51vlDg4 11 | qFHAKiuq8sOZXL9sjt9y3tq7z9TnVt+4MWFGVHEzxeQwnltgkfmgdEcnLVlAmCfX 12 | EuK/u44LnWvAWZ0N5crRF/2tBoXLkeHNeywjnci20w9UIuvjfrOXnZuuF9FDAXpB 13 | Cn2jVwECgYEA/w3jtztsQ2aAlN41B4xFY3RwNosDkX794EhsCkreEAtZlVNvUKnN 14 | /KXZRzmPrfV6n04sTxiDN2V8CHuBoq1gEc5GH/bNCgTXMqB8uAUTK3lNq3rqFHVH 15 | wveKXmfSxsmPLMQQ/WfS7vlmugzkJ2VS4vmie1p0fDXjKynE/SIvTUECgYEA8roA 16 | HwFDdvFxnT6BeC04T5snUb8Cx0Z2Cs/Ag92W56fba5JMUkQqkBHTZcnUHQvsW6U8 17 | oD6ru0rm7guhsfa73flII4GtU38SfPfvB6cXueebKebvBYFjzUJ14Z1apnAZ/vSL 18 | yamFSzyadeUy4LREgbbojwenWWvxYPGAw+TF/iUCgYB+2BiE2u+nwYV3A9+ZpmAn 19 | 6xOXfKFErcRy03Gv2LYBgrOFuR3mHtzLpmudqXnUSP431ffhSk6PsU/zJAE/tzvM 20 | /yoO4X3tWqTvj7MXDacP+t7uxk096WnMA7Hz62x+4mTrHYNZk1Xq9WvqYVjiYtjK 21 | +t2cvUqrL12P7NEEFwkxQQKBgQDHNHPI/mZ6Bamy3YuwL5yZaMKaSmNjXKagNOTQ 22 | 1Fl3AcIIxOayVZOA7cBLN5tHw3NVu4TIFucmLVDdaNppjg+dG2tjCJhRgGaR/YFF 23 | DJNiVXx4pTjhkdFwsezBHz04f6Q2JEldVi05FCHIRDS/SfM3af/u8t8beoV9hHaj 24 | TuxXqQKBgBsTjroxR9QvswGAsivr/lJViWEWCmHLSe5wbEVywQEIQGdZnAMKYq17 25 | qoGc/49ThGWBZ6U66n2e4grNB6hC2WaOR9+LFMt3phX/QFAYJvqb3t8kfQ1/vQZD 26 | q8dxrPkd66RxccIyib0quUFTPCT+EL8NX6wJL7WVRqht2a8VQO5Y 27 | -----END RSA PRIVATE KEY----- 28 | -------------------------------------------------------------------------------- /vagrant_repo/pems/f_debian.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN RSA PRIVATE KEY----- 2 | MIIEpAIBAAKCAQEA7VZwHZx01VqXkYKjcM8kUaFc1NOU3BdBCOFWTy6P9GI4Zx+q 3 | IRymovLHBL0YEXgH5+FQpM0rPpjsT78u6F9WN/RuvvgtOe5EWrRLZL3cL63Yc1iF 4 | EbX/3gsdcUU9KYOlvQZrNRrdxePciBe4ArQY2VB5lo/cJJztfZpBeaHcH5DIvq/6 5 | m45PE4jOjwnfEhzMIysU7P9X8VFHoq34xYnCR5EXo/aHilwsDtHzFBw7Dj7dtzzE 6 | pAiRYoqsx/zGLWGLVj8TPf7YiWPLxv+kaSoQDlcGR0STaFRdFeGwUe7hadLqKq9L 7 | hJhdA8oUWmZY1JSA+XLpJ3N3a3uzzYu50vyOyQIDAQABAoIBAQC56OOZzlyWY4gm 8 | qzZrv1arusKE09ffLzf6RMje7ZJF1EpqPRt/JHpDWfkbdSPNS0CmGpCZBz3Aovk4 9 | 3oFX9JYM7qNxY+XJYyKYCnKkTzSTBJJwh/50iSQMQpiliZ8HTeAd2VFRH+JoiLzO 10 | vgWd2IU+dRNJJRdEdshxgsuXA3ryHW11+4KMEXOseBNB2Jj5nilMffVelIGdQYek 11 | EV+czy0u8feU3NQQ0moRx4dAi3tI5fAc+WfXXyo+7bq6vbxY/lXCFTW/bYHstUjg 12 | dbdItDwbkUcRMbP+Up5z2J6KevUsARoBvso1nKzzivfMWXvNghkpGjGB3/Ndedti 13 | 8wKxtpaBAoGBAPfPXUiZBnwj5D1aw0hvX7nTcv/8acGCU/00CiUChy8CuFxOEeLW 14 | ZQnrv9/4IauBWFN3gPtz0wvPnmxUK2ZzKT0AAmOQA180L5H/amWR6/ExCKWIcGjS 15 | R9qPSEHkQfPWAe9674C/bmrn7sBI4mx8vjhRP8BSxvge4FQTuzwufE2lAoGBAPUu 16 | eG619DejlgwReAr+27IS4mZrsB2+zTviAiiBeF9WFcbpHrl1qJFM/cNwx6MJZ1pS 17 | W0Iabo/qfYmdn963afr0zRBHo00oueH77lSC2WduxdjvDoubuIJVfpIePS/ES9Ko 18 | mqvAJIwZQ5hAL1jcItjbpXuXMJmkYz0dHmAtXvtVAoGBAKPSTSvaJeRZYeCBqQmw 19 | vwq805CREGThwJ5qEa7HzhBw7ununnpkG2WEmVL52WBk4LxFC1qwBjwPo/6fYhWX 20 | WhK+d9XT9baxbCVLQc4lumG3dazg1tck9GVzRWRx/nuw5ZSoo75sTxWTgE1ToYPw 21 | r1vRsqB02J5c4xYR+TxeysQVAoGAClcnZSPvZNlVXrTt5yjQgzYgrkkkaFy/syLZ 22 | DHRJa1vqFzWFwjSgI2Cn4zJCeTHQVhLbHnKW7yLooIExWOdLZPYmH+WlkX+CN3G0 23 | n4PVP3OAjKGob2Ll6TlJ2UfFNNqGiB/sRgoYgIAgRa+PT6QZJCQ/WnMJ7bDtLoqn 24 | 2U6QjvECgYAW35UyE1bfdndBb02VOUNHj9NcRaQRody9D0Qjs4+rR5qXI3iIbm0A 25 | IRC8f//7KBXkRjpcyhRKRQPG9ocNto9MEGz/ohYHh/sgp7qojQx0MmqDvbLOtEZZ 26 | QRUxCvdRSnm6LOysomJiEwXCrMIKMw40SpBixbax6BwS7zuT9tuy2w== 27 | -----END RSA PRIVATE KEY----- 28 | -------------------------------------------------------------------------------- /vagrant_repo/pems/f_default.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN RSA PRIVATE KEY----- 2 | MIIEowIBAAKCAQEAyc5y/+YzNe3/UtNgPHq7fFb/VApMuo6lEOsMDNkE3TSjYPUc 3 | x8uGvio6rWESdc/uJRrceU3yqAMuVpC18qyan6GC4e5WSHbq4G/xIkGn0JEuVbyD 4 | WDb4QN4PKYq150SsrwWiAzmpBASXzT1PIlcRSnx+i1j0H3qNCOictOyQp6w4qGL+ 5 | H3olsutzHpDqpFUg4nzU7io8azaJTHBRyrSAKYpVac9o0M/dMbkkBpSgDS48CjtT 6 | gf+wyRgkljuzxMjuTQ4IGXZOOhWqliPkGNqr8mWaBV3I3+WNrxArGvEGi2FHWrCJ 7 | rGQqq3PsNvtr3DPa+1am4GQIMgnoc9xFBTBsqwIDAQABAoIBAQCuY3nbCtlsHAtM 8 | Tp7WBJUpgKBJxlDB0exwbz1NiOf8I7WfXpENUiJRCHsGQmFKb3FynQCyzpoHeCA9 9 | 6/VfDKrdkRtiE6x6GFElu3ZbzPKweBTbP/kcbPwgSgQ+OMCyZhT3dd2n/dbBQxrO 10 | 39EXcrfdbzGHR0pGPYfMj/6DFf529QGY4agTvlXxAzyyWfLVe83vRvpcMsF/NdJ2 11 | eA6QzGlhfvzOWjm5tJbDmNz79cw+vSedVQgsBa6gZbCPSGTs0GSLLi5gY/V2PGsO 12 | XHZuXzvnib1dASxbAVywCechOMk4EtYQgKpOXOMFWXT8o0DLKW8vi8xSjoQKZYF8 13 | TOTqxgPxAoGBAPLxuYdLmsiWz+pLsNIt3AxpBxk03x48ZFNNf6GigT6zJSBi5lCq 14 | HpglatM/TRXUpVkv9hk/28Cd1XSXKsahy94BVM5gAgLQ+TnjyedQ1QUPKcHlFm19 15 | X8QTYk7okIVmGL/limejtAMxYoEYOQ3C5AwhFq7HqXA2xTYxRPSRd5+5AoGBANSm 16 | xsBoZS0PxVCg+h5HS7+Jevgv3aHej6n/9Z14ez7nhieLuzeV+iPPKTuNP5ed3qYY 17 | 3p0eJ5jBIp2s8giOWqIHWtDZogzP6JTmqbj2qhUQDxo5OoIw7BolI8krjmEcVTLx 18 | pjC4akgc0OFQF9O4d5Sy1ABnQuf4HX30y1+7dbmDAoGAWDFWJ35Tt0PAQI6vpu0M 19 | 99hcwlLGOGS2CuOUVKn4fzlrXeFpOJk5OARFTmCpbCZgzAq0LSBYdwkVBxklZywv 20 | JO2Yyr5hnIIeJ1zA298lJYwGnaO7S4366OQciQa2CCczDt6WKt9rpskTuEeB1rQM 21 | MzcD0/kZUmofl3e1T49LPMkCgYBtLsgjaDZygYNs14o0W6TfzgXOQj1IbA5VWa9R 22 | T9fvv04ZJdxVOPL6ydXA1tAM16jGnURHZYEtJBTS4kZO8FBGmwIc83EJpQIk2Z3Q 23 | 8wz2zY0DiNiqmdXPwrvyASQUZki0ZHBQ2Y7wQaNZ3BavxSnYtky1fE9U7Qavci2t 24 | lIFoYwKBgEMDs5qT0Mzyx4Qcri71NDyJ4V8c688nnM+IfWdL+6IyJzeBzFPXEedx 25 | 9WHFO311/kR0TH0NV203SKKVDfykJLcZJSvPr9CVq4EEIWh/N9jqcthfD8gNUrwc 26 | dfDg3ZWJrb8s3LI1I/mttwScRJxQnn0A9nkXXpahe/fv6utSu3le 27 | -----END RSA PRIVATE KEY----- 28 | -------------------------------------------------------------------------------- /vagrant_repo/pems/f_heavy.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN RSA PRIVATE KEY----- 2 | MIIEowIBAAKCAQEAwUxb7FUvYM9pd7qRPclplM66dAuhXnnPXvczaK/LgBkQ5fG9 3 | V70/Ei0cymz1VyhpWgPZGhzk9CLMTnAeP63UuEGLfTOH+nPlhV5T/E6okPYfFhzO 4 | g1YVtQ9XXFbi8W/gIjXWA1w8ING7OVynv0w2Fk0A/5f+kh3zE0/qNrhgSIOhHwNf 5 | 2kE/7AFJ5dNS6OpzhlglyDtwibIS9QqG2i0Tfhi67rfG9qefLJ5sWN10hMOy7HiE 6 | g//p1wpbjPCl0/oqwV+BD9Si5Kros5ObUuhpHchJZgM/EUWPAlsxBiezCTwKQlp5 7 | 7FtxniMlgrMK64xoCVE+ypib1vVQNIx2vi2BZQIDAQABAoIBAGIubuJzwkTiFSgD 8 | U5KWo1I6Tupyndxm8rXByhL6d9rw4GxrhUjzjv2kfGM1RMiodhqKqdNhqcl3g160 9 | BClEGjAc2sUVT5QfGg3MA8y8B1LaMKACscJ0D0KQMEduuob31FiMD9BVIRVqcjaI 10 | oYvBIhfhtQgeI+gD3luI0+ZHcGBj2KXnldSFGaWL22B3pldVxWkxrf/+ujOiGhcj 11 | n7dobigYeHISY0lOcWFll01H08jHwlxmoAuXa140DGNKZs/5cUuIAWYW7/hzFy9u 12 | 5tCtqpQ7ShiNUygo6cvzWArTbCs4AFqamVhGylVhjzpLlyFb1Zy1vSOJKJXicw1p 13 | YBibSQECgYEA82ABAD4/C3qM5rNJlHNQcY+39foWAJPusmk7GHK/cyyFE6JX9QZs 14 | 6wFldj31j9axmGY4iOEucQBoLjTNZC3pZwC66wf///o2XtM8mO0rC8wjQJ7kTq31 15 | 2ZJ+jgueUv39iB1ICMT4vCnnrHmCZuRAGHRB3+6+mvzH2ZTkZYAPalkCgYEAy1NX 16 | TxbpDkc1AtFuMMc2PcW4rep46Hd7x/U3yMJMLRStzAInq1WrJf0mMPYPUl87TOFb 17 | 4WjtuCogKF2vJSUcIwOxl1ZVDRxED4xAcZLs1fPGo5p1iSuppCxE8zg33TGKle92 18 | U3oyBgSZMw3IWN67Lzd07pF7iGVxn9h4Z9pM1e0CgYEAqa/gQskjr98sapXK0aRt 19 | DCDGhMxvlsuN+/r+5xbqgWUjDAN/DCoEuv3oPj8I/dcVUErFVDqc5NEB0mWiZxzT 20 | xatup/yV82YDjq39bCrAfqNAWQfv6yPDbIWFk4hqRTcuFD9GQEcFnjwhedHmp9Kx 21 | FdvJKlcNsoZY2U3EyTg2h1ECgYBU9fFAuikOb1DGaa7qsQOIUmt2OMjnEq5lgqEZ 22 | wZ7FI6Pv4GKlJHoMuLhRsy/50pNb77tN+GOFFg0z8Nmz4srcEroNq+SEQvBpsshm 23 | 7OcMC/5P9MXyWI1dbaYuH6qwQfhP6Kz/+sqWWyuM+tBh2khLVZgF7EK7XvBYw8Kk 24 | WsLKjQKBgD8yqyWCLIKfDsY9ri3lW+uenx/28n35eGZE6OJmslWR0Pggz7q9m6nj 25 | Ptb47hvUV3wo0bD8/srIlIP6rQGU9SY2BUyOpWfTR0Bl5zk6zY2DMfpYf3YLmkLc 26 | EYkBcXd8BR7xZHbofoinV8n71CVRonRcOVZkL5NHG28mmxPyGUrJ 27 | -----END RSA PRIVATE KEY----- 28 | -------------------------------------------------------------------------------- /vagrant_repo/pems/f_win2012r2.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN RSA PRIVATE KEY----- 2 | MIIEpAIBAAKCAQEA7VZwHZx01VqXkYKjcM8kUaFc1NOU3BdBCOFWTy6P9GI4Zx+q 3 | IRymovLHBL0YEXgH5+FQpM0rPpjsT78u6F9WN/RuvvgtOe5EWrRLZL3cL63Yc1iF 4 | EbX/3gsdcUU9KYOlvQZrNRrdxePciBe4ArQY2VB5lo/cJJztfZpBeaHcH5DIvq/6 5 | m45PE4jOjwnfEhzMIysU7P9X8VFHoq34xYnCR5EXo/aHilwsDtHzFBw7Dj7dtzzE 6 | pAiRYoqsx/zGLWGLVj8TPf7YiWPLxv+kaSoQDlcGR0STaFRdFeGwUe7hadLqKq9L 7 | hJhdA8oUWmZY1JSA+XLpJ3N3a3uzzYu50vyOyQIDAQABAoIBAQC56OOZzlyWY4gm 8 | qzZrv1arusKE09ffLzf6RMje7ZJF1EpqPRt/JHpDWfkbdSPNS0CmGpCZBz3Aovk4 9 | 3oFX9JYM7qNxY+XJYyKYCnKkTzSTBJJwh/50iSQMQpiliZ8HTeAd2VFRH+JoiLzO 10 | vgWd2IU+dRNJJRdEdshxgsuXA3ryHW11+4KMEXOseBNB2Jj5nilMffVelIGdQYek 11 | EV+czy0u8feU3NQQ0moRx4dAi3tI5fAc+WfXXyo+7bq6vbxY/lXCFTW/bYHstUjg 12 | dbdItDwbkUcRMbP+Up5z2J6KevUsARoBvso1nKzzivfMWXvNghkpGjGB3/Ndedti 13 | 8wKxtpaBAoGBAPfPXUiZBnwj5D1aw0hvX7nTcv/8acGCU/00CiUChy8CuFxOEeLW 14 | ZQnrv9/4IauBWFN3gPtz0wvPnmxUK2ZzKT0AAmOQA180L5H/amWR6/ExCKWIcGjS 15 | R9qPSEHkQfPWAe9674C/bmrn7sBI4mx8vjhRP8BSxvge4FQTuzwufE2lAoGBAPUu 16 | eG619DejlgwReAr+27IS4mZrsB2+zTviAiiBeF9WFcbpHrl1qJFM/cNwx6MJZ1pS 17 | W0Iabo/qfYmdn963afr0zRBHo00oueH77lSC2WduxdjvDoubuIJVfpIePS/ES9Ko 18 | mqvAJIwZQ5hAL1jcItjbpXuXMJmkYz0dHmAtXvtVAoGBAKPSTSvaJeRZYeCBqQmw 19 | vwq805CREGThwJ5qEa7HzhBw7ununnpkG2WEmVL52WBk4LxFC1qwBjwPo/6fYhWX 20 | WhK+d9XT9baxbCVLQc4lumG3dazg1tck9GVzRWRx/nuw5ZSoo75sTxWTgE1ToYPw 21 | r1vRsqB02J5c4xYR+TxeysQVAoGAClcnZSPvZNlVXrTt5yjQgzYgrkkkaFy/syLZ 22 | DHRJa1vqFzWFwjSgI2Cn4zJCeTHQVhLbHnKW7yLooIExWOdLZPYmH+WlkX+CN3G0 23 | n4PVP3OAjKGob2Ll6TlJ2UfFNNqGiB/sRgoYgIAgRa+PT6QZJCQ/WnMJ7bDtLoqn 24 | 2U6QjvECgYAW35UyE1bfdndBb02VOUNHj9NcRaQRody9D0Qjs4+rR5qXI3iIbm0A 25 | IRC8f//7KBXkRjpcyhRKRQPG9ocNto9MEGz/ohYHh/sgp7qojQx0MmqDvbLOtEZZ 26 | QRUxCvdRSnm6LOysomJiEwXCrMIKMw40SpBixbax6BwS7zuT9tuy2w== 27 | -----END RSA PRIVATE KEY----- 28 | -------------------------------------------------------------------------------- /vagrant_repo/pems/s1_master.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN RSA PRIVATE KEY----- 2 | MIIEpAIBAAKCAQEA2GnZ78/HLZknj4R01qV60cfZi3/+2JhlHt7KO78RaM3pROSA 3 | xKoopqiBTo5vtxFA5ffUGMIPVS6wYv2bRApGZFbFpBUci1q0M97Kcs9BRNQGPacq 4 | SjNtrT8rVowRUDOJvvg8M6FFBRPofazbdJ5TzKD3cg3sCj3JPbh0lEjiypwy95py 5 | fJE7ZA6cPa2LJf3OHXmRFsWScOAkhJALBMFXKs143bdT1OvFQu5KFDbQ6in3sINO 6 | Ejxm4RCTx26hyTeO/i9pzhoNSwVneqQMHVGMgiEwyj4PYuTWddNgFipHf8NKSQ0G 7 | rgTtgo/pU4yR0BMRzpzGOKjZHQCK+4nBmC9H+wIDAQABAoIBAQCMpT5d/EsV91Me 8 | kpbcaO9JJvjbEHQvj9soFOKZsbM+yZOwklCdf3ir1xcyVp+D+lKTIl1VOcl9Mrqv 9 | muItdgAJdds8p/vFFU3H6CLqOofQk3r61olFb+b3kPY5aQ5XcSc0VV/KriSNCEMw 10 | aga146/SbUpjdWjRvxXqZtZdCIFb6rW0+vf2dDxX1gCiU8b0NHU/zsLik/T1JG3/ 11 | CyNc0jKQ6wqZXBcWUYOb6TnHar6CDyUh8VhSZZjiIzJhLfdGhVlVJubcHVRqs6Pl 12 | LOQDgXWKkChX68DIWbDr71qKlFmdh5LwoE3kaaj3I2UIcCddnCWUHlG3BB+mcSfO 13 | G4GfMnMBAoGBAO/32lfnEE2WBiKwY4WKdelsyTrfxZ7zTaAOOk6z/XXRGNm2OTpn 14 | a5bb364wfMXopFsDVGTyAzkbVxMmJ+ghDKbKAjNdvufTS/PZxwSTei4R53xTPryZ 15 | 0I8l/X0cLPtUuWP5Btcb/hjt8orUWCO68zBrjwYg7++f1GEWLWxZSlXHAoGBAObf 16 | JTHxwHq3COedUp8LTlPuZ54LZPqNYjjaZCV5y6xwamgemtnYlJr99tI4hR1kr3+H 17 | 7Vu8acWr+Z6bsklmyx/Sd9z795vmE8MbR+nR70Krbkqhk0YpqldvL0jCUI3W+v2h 18 | 2AiwqLKIOxuvWpwpGz7Dxoz+x5XzjQQCk3BloCwtAoGBANvyXGG3exzyBlujOwT6 19 | nQq/2E2rLzJ6pUqv38eleAqWBeX+/MNIabfTfljlPmgTzRlSmvcPT9727T+y+F7u 20 | c+8oNw4nvcQ0ymgO0zihiBpT9M3iax1pCl06n/YdbilLRcWZSii+Eo99AZM4ADV3 21 | tFFMNMKUS/dhksMOFcI6sUSfAoGAInsZVwhAMxO7JLx+ZnqNzENC/nu9LR6ImO0l 22 | H+O845g2jC5l+js6lptvjZ4bY3RyMZ3feV/+fCNfOK0QR54uoCYS+NI4/POz5+Pf 23 | LbDJBzALXOIc2NHIOx7D9R3wYf7FpbPSTBn2WBO4oD3kToZlJ06eDNjQfjjNyteH 24 | pbXH4lECgYBuWaQyNhGlV2LSAJ45uI+nsoMO5g/UcFxFOFEv3NmqKHJ9wiUjQ+t1 25 | SIedBRYSPXINS1CKDlaPk269z6T0HUq08qfTE3TznJ9qrXmhETMgr2PQ3aWl+d3L 26 | RfyNr30VIV7LsU0NIoH8c2c08pxu3pPmARtnG0WQiI938uRIkNAvxw== 27 | -----END RSA PRIVATE KEY----- 28 | -------------------------------------------------------------------------------- /vagrant_repo/pems/s1_search.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN RSA PRIVATE KEY----- 2 | MIIEowIBAAKCAQEAvVV6qQnsMOHi8uH9GuIV0aqyUsglw8Cgq19rOwGTVmHE9KWo 3 | V1sEHXRv3nvr7ugTohcAIuAnkjP+/VMPePrFVO9Jn92NGtpkeobYgwWf3J/vTR6S 4 | FlHxBDio7MqEU7bRzC2fR3xIWwp8z5hkh+6y+xy2kwIYC1HgtpMvlqej1N1vWTNC 5 | +4LX6jEA1Vawow+muSlt1Dvdt2CaH3eO0T+52g50fkC9WrqVR/3glW9EHDxJAFBZ 6 | f5VQMdqqBzGiaP9fleRCFS6E8uBf6w6x2+6ewXbYb4kF1wrZ+xVNr8YqUfuT/qXQ 7 | 4gHRexncj0wA3Kz4AUQbDAnQCNETkmuIwbEncQIDAQABAoIBAQCA1VCRA9p/bMXU 8 | hiiHiX5VXHTZVa405LevxU8fKLRMXFz8KFlDkABd1qRk3SgvOiZZ7pK+KI9kshL5 9 | 5/IoXWO3ptgPe1+P/TnQEj/z7/jW1NGuRXYc0AdT2wY/kpK2sDlUWVr/9rb5lEpX 10 | rJgD005hBynJIOyhj0Z8le0U89/McPC8p56C1pkH9H/WZx+AT99JOYGZm1sTtqTJ 11 | ylGF5bl2M29ZBBgfFWEGbADhCYtEKe8235NfKYRo97TV4z/Ms22TUJlYAyduLbTB 12 | MWiypPao5uz67GEUgADHUsP/liTv06C53bMcDB4D9QZmqbga+PtwldEq6eZtLZQJ 13 | 683rEnIdAoGBAO7g1pbeavQAjU7TvH7K02czKwvkQk0xSzmWaPrDkTX1daMNqW2C 14 | LDYnffrexnANuA5gGNyRdr+qTnvKHFmrkD+Sz7KjqknI8PufJA9ZSZJzhl+sYuCA 15 | P3X369Y3eSUjCcfT4ziWyXtk2sRvVC3e8GT9pzyOrmhCsS5BjiHu5OozAoGBAMrn 16 | jfLCkGzp3bL3Ko2PGrJol31pOiLYJu3Heqdoy1qLTxhDoOXYd5eqtAl7kFTntY+n 17 | 8dqK+ZSkhnVa2+Fhr+8vMgo/YaRIbZwW7ieGPvk5Pz0RMJUIn/kn4w0bXzh1SrFM 18 | ZD/AwyjkHqWFshtCwTo9KoTImR1HPzEoPt8Wt8vLAoGAAxR5D9bsUBsVt1d5jbT1 19 | xtXdDzkxNaeWDbcHwXv2ClkQ3DpX3eaYxVX7BNoMevNiVSUeDPH/MvdyLZxsgyd4 20 | I6mz7dy4XF0v5j6mC2CeVzoQGHmziKt+pfm9W7S5ZiYugRoVSux+yo2BWJkK39CJ 21 | DvRKTLiWPRfnCu6jc4KOBwsCgYBpfbPeR+vAxGJAPqMAECvIH/rK+B+CqDCtJS4O 22 | xbwcKhuIOPj5Ju8eimCqIXTrv8A0nRNwFRsnfdZuQzvYVOqch0QT8dn5CLL8GSve 23 | nrw05N+NB1fj1CUf6+3vDZEXEFwyC85/GuAcbWXFltn/tFgzyENH3+dDQpyHGS5+ 24 | 3BfYuwKBgDM1KTCr1xxPPgfR1lfZvPud/vsbr6cOiRyvPelouX2OgcVpq3hVWo6E 25 | dcmkwkcnd5BAseZd1rR6LEyOjvUS29BCW8Kl9jgLi/s8K8d1/3IDHw2MvRsqxUg3 26 | dqQkLeFGvOZSvREd5s7vMwIwwRAzFABc6P/3HM4HnuBkv9f4w3xf 27 | -----END RSA PRIVATE KEY----- 28 | -------------------------------------------------------------------------------- /vagrant_repo/pems/s1_slave1.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN RSA PRIVATE KEY----- 2 | MIIEpgIBAAKCAQEA35ezNC4VFy83RiA0s3UBIOLiM+9157JLN9LgeTb+XFehGVym 3 | zgNuwkOn/UBtglhJLKgFMIP8asZGnOkm2uB4uwQ5haaz691cLVIPpuUOnVsa37HC 4 | e2oVjLc4kTu95ONrjdkhpqTs+M5dOtD3rl5MaersOwKe86YMzOY6DGwn5uLNm+8k 5 | Kt/0NsXucm/qZFuZpk81Y024cNX1HrrG2BEWbmXX/fvFaTy3cKJhghJue3vRaRTs 6 | GWwk8nYN7TRk8s0Ill+1xxVo6yyZUOo+XWP/Un9R8GIk4liSG+5dQDAPBepxmA13 7 | 9WCI1/8ByjPuXadGExBuJiFbvFN81nrzyjtyKwIDAQABAoIBAQDetJ4FQkU1k4zt 8 | p1R2zvrxw6rlagU5Y6hyEPQPKEyQs6O9vEBVAKxIiNUBdjPdWYyBE1Yf7cb0n0tk 9 | LQLLjjwSovGcgt/A9fpDFfKLHKnC6CTLXKZHAPI396M7XZMWMcNGRVi0QJ/cbsgD 10 | tnKNVlWsRhdH66NhMiqbyFFXYD8aQz837GoSuqyGTok4C9Pa24kUNshkV8QjPoTi 11 | DJLVlFOn9l89p8pjQLNi46KJ/ZNunLNaTt0X28qO4Zl/wV/4fIySs+XcTpyEsvJB 12 | XlSkz3nmUa7slDZL+efkFN4UE8Cibdxf90PxZ9sUJ/uQ/v2rRhhwyJCWGOzTkFM/ 13 | QnveBUwZAoGBAPMgR1vJkQFxqTspfSLt8ASW+pdo5C8Dei4W9Ghr0TdFKCehlokD 14 | rtM3R6dI11k0O5hEHdNtsXiJB6afjEckMLeqBNLFi7JRp5gy9i20ndEXRSKTEAI+ 15 | 6F0nSfF9Cz/kk4VTZicEr8ks4Q32NEfwFRQ2ynncPVyKp0/EVvyyfoUPAoGBAOtu 16 | ofmB3iRjVLZti8JVi+7abTtGbUi85phY+hDXm1NzmuV1Fi9gVoaSA2dy3EXvShkr 17 | m5mzjLN76fHpiPKL+2MMcOCw/cAr5KDoTTLTMvuZNK6NvPvdBULjwJMV+8nq4lWC 18 | TQuz+ITLirIfi4ZGxy7BQJyDbLGRpiAjeMTDUFklAoGBAI6cPn8+qsn4C9ZiLb7R 19 | ZtqqXO93XXGeToq+eDrQE3aiID2u8QgJmwDWCje76GWw18wnGH+udk1Hw68fIz+P 20 | oOv61L11ls3QS8hhDDofGftN9QWk0d0fXVlW9G6sdG7T+xxXoTH988bDhneUFXKl 21 | BxhGU1pLr8qaoi2N86BiawhNAoGBAJKhD85m/OSq3MrVxVKelw2HCrr9LPk9dVzz 22 | JaOxtPKvsIwydUPCe4FKlUYrulbwJrUwfLOoqPvsNBNPwNRXLJVO3UqD0TaL39P7 23 | eoEqGrmqfK4uZsJysGEtmfXBnlTurlJVWgjs6N5EKrivfuV9VXagM86G5/5b2Rxx 24 | Gzlo77TlAoGBANaWMeg0hrRbXAogSSu0VaPp1jHpS6aBmM5gUv2zzD0bZJGVjtB4 25 | R1qPqctHtJHvtJLwbuGw8h32nqrfvaZBjW/3bnCV9fqtquhVTMkmH702Ot/M/c0Q 26 | Cyu28apD1HS2dXgXT4Viw+dB/+pM5wsngcKD5B36mvjpQ4jBvTlEKp7c 27 | -----END RSA PRIVATE KEY----- 28 | -------------------------------------------------------------------------------- /vagrant_repo/pems/s1_slave2.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN RSA PRIVATE KEY----- 2 | MIIEowIBAAKCAQEA18VJSnVHalV/tTLitVp5YlGKU2xUvQOhhEJXI/Ufr67Tl4IV 3 | bypbocGACnEoZq/VXokh9ubIZnNbPcBlMI7fCb5j/yNIoYT5IUFAlcmguP+R0Id6 4 | BW9dNroD4BcpP20BxmJKRrxQ/clCJI5YV9n2M0Oaw8nL9o2d39aPGtEeV9yvoWXQ 5 | uJwRkyovhy1BZ84NVgxJthYy2J+nYdoiZ65DLUMNueGi+QhmsRSBfpA0Hin39/nQ 6 | uocL5zgUtNEioHgZohOx7ksgiJPETfAq8dV1eTyS8wgrPf01s9NIBxm3bCvwyutL 7 | WGECNYaZLOcfLpg79tpReTaisz16nHo3Mx3F6QIDAQABAoIBAHctKswLdwSOcNk+ 8 | X+XXMRBTBVoKjctQhBevJL5hl7zLjWcznG8oMDBp1jTuR2hgWjO6/p2G3s1njc/P 9 | wpRNdXfGRykW7fj4nzn09p1FHpbP4lQRYB48YnnlyFovsMKtjLtscqYbQYjLbtMO 10 | JFFxvACYqJTXkuZ9VePaeHRRaLcR04Co6TZomVqPnGPAz1P59yi+DfUvu/R2vmhk 11 | idF1yTWbT0qxIBPGONUfCpPvPlOuJo52Jl4u7AzxsSuC32sXFfe0BgH2gFhAf34b 12 | znuPpe72oF6yZXxoRrFBUidEQcXI0lRLj/+xkx0zINapHkbChDl3+oPlUsmblqeR 13 | FuZ6xpkCgYEA+YAO2uaGDyaqMAQgzGFYTsLiDJFzHWT36v8engQVM7MWJZm3TSFb 14 | vM2wuJ1MtlmUXoAcjDcJtIPJOc8AFokdKbUxJ99sz+Z7EkQtFEFnfsXDk3x03/g2 15 | tEwT5oZQczsqsNpQq2KX0i4IyK9u3DLfJjVoVo2ujS/O4mBWSua7P+sCgYEA3WRI 16 | R3sytc81BqGMua097ChH9ylvJsqcN1XMO/91SNKzo+SWCinWW2tq6mU0QYGQj/kV 17 | M/ZY7pRC6/KIOaL1CIRUUbFQRkKPHUqBjaX2NNVNWliOM2Qd7KbRRxr8YIIedQtW 18 | dfTXWshK3ayZbHhCUkeeKt7b++QpwHtW5XD+MHsCgYBQ9MVdL+mV5vTX6a7+wiNW 19 | QxP4AgX5Jrbu8GLt4ONESDrKbos0ortSkudhr+ChVoW2+BjLQlyKzywu7sTXixwE 20 | WX+esXdsKhwK/EYoSWSclOz14S9HMRIHBJx8c16NVUhv5BbC1ZXvo/JDs/Dj0Dnp 21 | +vBlDUnzE+0sNRgq650ciwKBgG2CKiJ5dPbrXH5AMJyzbbq/ngFK1HkqpSTV4qUW 22 | 0kvINSVvbyvtz+L+ei8hCj0QupIMkglW5Fx2p7eQCwP/cBbbZd3WyC9IwwOpE/Yd 23 | znAJxi5XOVeAQTEKvt/eIFIYarpYdlb4WgHEqwuFUYqO3bdXR4xLGiM5k9Fq8Oui 24 | /Yi7AoGBAIPQE6JOZ0gDRamPmbRumWjOGF1dJGl9IftTChjNjnmrM58NDlvemM5Q 25 | MPB2SBWnMTBOMS75u5O5hE0Rklb7XvfBbpuN9UeiefHvfCm7nWjeLz5vCN+S1JNa 26 | mSeQ9+fww0HD0xXiWCqhPgCt5FBS6mA/ky8hHSxbQfWCdOHxBNMq 27 | -----END RSA PRIVATE KEY----- 28 | -------------------------------------------------------------------------------- /vagrant_repo/pems/s1_slave3.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN RSA PRIVATE KEY----- 2 | MIIEowIBAAKCAQEAuxBY0d1+PQYkfYDYaQvFKvQ2uyT4Tjf2Dr7rZXzwaTUcASCS 3 | Lmu7EiTeLFWZdmd5dCJaiUsvXescJKbiHJdBEMMoTBJ38yzO/M0ETTnh2YZjDjmt 4 | bBKT1/CGEtbD/f3mbsfdjto9df6B007O0+efhyKs8mn0FsJHexm82jxR+tq8Qtmw 5 | eupLstoR8mXKP3PaHFFccSNCWXIeHM46x3xpeYACutkUsUs4mwec19XyekFYNL4u 6 | rnyDbN5oVxPw6fTJms0edwS9nD0fvT8ijBKyDwanVTT9kDByF6fGeELIf6oeAdoH 7 | kF/0xdQ57EUXNkzgjC89nHIrvSr2FyAcRTvgdQIDAQABAoIBAHGVwXjdFzQSsMGM 8 | JNvUC8rDMyB7mFJWZJAbmW+sZ4Zae0Cr+Fc7jwG7ZTRiXaapufOskHDhOEe85P/U 9 | XWOi7B0zgxp99FuyD5UtH7mMtfiRQ0B2ATmoJiFuqNpzkdp9+xe1QHDnT36AJXCb 10 | X7cH47P4eC9R6qaPHTxAKo4RJm48rWXvlxkHit7hMHFC2oScEgQtPEF9QM9+4sT0 11 | VWS9+H0/QY1hNrSj4BszT4WRSzt/QzWprxJ91FvgqJuHL4WC9BX87o0eFH1iR4DU 12 | BqH0Ek4N72eaEncTH9yc4aXjTmle4vh+ZgRBcwqjBEfdbzoStvn17kT+nw9O+li1 13 | gziQ2lkCgYEA22o+VCc2r9GTh6uK9s+MK1SKUmffuQowEk3mKQmaM8YT08Wy7pxH 14 | bmKSSbGvn/DRp8QjxK55AHzroSqdAuR3EkThznfxd0wgNV03QnCRor+uNVV0w/Vj 15 | kUGcW89NlaJmBtC87JQq+AJmAT3knLzFEp9LLMfRyMBZlFxQN69PmvcCgYEA2kEw 16 | uzYuqZe7Sv9jIey+GE7QUCB9lkYjRLDlMqjZ9F77oxjmQR1zip2d2VAQDwJ3TS7+ 17 | C7BxZZDFI2XZc+3TtDdHL9531wKnMkcMKdGBeEjzDL6ZeK47Itd7GBedSBbcIQaR 18 | q6Ln28/2QCADdhCUrUDqIxuKI/tgaw9ORAo4ePMCgYEAvFv/t/SWAOeUlAKS4ICa 19 | H1SLDmU37T0uuXgAXzhsFYg02zc7/ZVRyRR76yHL2C0/fptl7WGuZNnY2lmfwqzo 20 | /1j81GepdjV27PjiCHpku+d7oTOEcvlFCZzeov5a51sr5SvrE9m67X/5m5VLnbZ8 21 | JBl1yrKbiJCAFloNT1CDsU8CgYBID1oNlbgWWniGLIgIfWfOEseIjRGp+gJO/bDO 22 | 5xz/KBUhJmlvek/ZpmylgV+r9P56x1cteNYX2JKeO1RuiElrqQyh62vZ25Bkczy6 23 | 2edLVZqZzJxTUgNIX6jOrY1KbfHEHa0e5Cx1UNZXGbrK0nKkOViUutUDSE3vSyBm 24 | KpG2rQKBgCdEKbqLdezRYRtedj8qEQXazmueZI0F658BsqNPpOLOR158rA+pCL1h 25 | HATtQVOmf2dqgOh0boKt8flvQxYvpiNsYn09hd2BOjWOuyqmPxsiCfO1r6azSeXe 26 | RUR8tTh0AQ2RMSTkeR4/rDeghkJZaDY6yM0AAZSUOOoN642uaU5t 27 | -----END RSA PRIVATE KEY----- 28 | -------------------------------------------------------------------------------- /vagrant_repo/pems/s2_search.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN RSA PRIVATE KEY----- 2 | MIIEpAIBAAKCAQEAwdnrQdCsvZEvdVuUgEEF2X4uTmhhMQ/cPqALsPzbyYz2K4Pq 3 | N+RF4BKKmyeztc23F+pP7IYPJud5OVUvlSx8Ju7sTMSGTHShthBwL0B3PhTFAZAo 4 | UA0zLbI7fCg1zQKn79E0Gwi9MdUM5RsUdiPxOsVHO4aOTmizi1n3Ivg/RRd8rvBb 5 | pMuN3u7nt02QMC6WopGAy06StS5Dwz1aDf14sec4vR4Ggvu2Br4ieVRNeB0Vm1fY 6 | AgEhnoW7FKbiEwrzo6oNIq86XfBijIL5t4AeaWPAicbulgJgCohAzaoPpzsmNvyk 7 | ybcJp9+Q7VPzhrMmeVCsfLr95tfSinGHQTotkwIDAQABAoIBAEuG2jA0W3koXfM9 8 | kSg/LUZF8Ui/Rk7VPRxxQtzcR83JTAg8Rz8rg0YAM1ysJUqKMfHxat5ehPzFZue9 9 | luJqCJ0qrYpjb2fOcUr8MJlYZp0bfn5TakF2QyBktuRyzjNn+4JmYgS+bOhDd9iz 10 | qk81RcF+J3i7vioyhPGgRbesPQpvpCtx0xVyPDa7afymfgk1WPTkImvxFFqgls+2 11 | b2PBa+NBbYZwPo+RyQf5Jq11pnSnUZPivfSF9FwCtW+ya0B/0Z91JWKMcgoPRoYV 12 | WrwRSLKFkcRv4vLNaKG8J5sABIrYh6DRcw1bTLVBY1h7Jspg2T6lTfuA1Ny3eQd7 13 | d5UHOGECgYEA73kVcViwHJDFoAA0YB/rdR0j+n1dHQGzhHNasWlLeB4uiyKlphYX 14 | Zv7pWmNaqBfv8mLHIpslzE8Fh5i9V455fSPf1/M/ApR34v2CdLaGHAkrr67WySjN 15 | iVq4T9eNow6U00o9518697/KcTy6UMb40Is4Vbacz2aXylbngqBKBgkCgYEAzzrO 16 | 1rvxPLhWtcdBWCt/pTLDiIJnR9Nkb3aSmfGLm1lq/XNaB0cCvb0JWcFajoOCeav6 17 | yJ5hfYO5iNHqWouD8mLEccjbBwQmGZom6QwqTl+syKtHVk5DV3eju995+E7PAQpK 18 | XHU6lJkT70lPEh7quWQ78ckTz65YekQOh3Di3bsCgYEAzSaeCAxCUzZzFy8Vr4Oo 19 | 4xujxuO+8SqT79Qizfm2faDdnrR/1Fj4k3Ot1ZFoCLj5Bl0425yuNOk9g3yGOIwF 20 | 5/7jtMzeHgey7PLg37u+CCaTFl5iAtLBwfnGDCBNZnMHbDsd7SjYC4Zyl6++rZTH 21 | c2DRUhyvGb56Kw1oJ6/JuoECgYBfmpbwNFbQF49RX7LC1ZaXBTt2UAsL9PeiAMcT 22 | pH8u1WrpsPz43IbkOEEHGpAHrZ5VOcWCJqd9e3buK0H+Md1WxsAwamS58O0O5LJM 23 | 0+L0s2kITxSjOYoR4U01kJ05tEoGBdRWoXK8OX8b5utGxeKuUxLgsk6kgp+pEJrP 24 | W4IenwKBgQCIzNAuWPjlqKLHyNt5XEVXhDIVhGDyg9x2oiAQUkahsLUy7JTol+hL 25 | EVWPHhwb7BDJN/+v55OeodPoq35gdApQ1lN1eJSvBaBBXbwMsg7pQoBQ2idwblsM 26 | CVZ2hBKkDm4oT7uwXJIy/9H+Ez5Pg+Ym9d57mJGvBZrdNrmWebbnAg== 27 | -----END RSA PRIVATE KEY----- 28 | -------------------------------------------------------------------------------- /vagrant_repo/pems/s2_slave1.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN RSA PRIVATE KEY----- 2 | MIIEogIBAAKCAQEArVD25HTqdHwYB2qfP4BkIvEq0bGpQ1pnmQKNgjx1Mpl/JLk9 3 | zgxs+RciVGN9rzN3nLRxMKBxhaWYc83UtoD2m6ChULFV/5ZEvx4jugvcI6qxR9KL 4 | k16rem15rmZgVVN0gCPZpaWgTz0U5+jJ2bbrLFGq4MSzi9A3DsiD3D3Yqo48xV5+ 5 | Mkg7daTkQajNigm9X7KbDZccdwcCousjqNA+qLvjLvyX7ZLc6zR6UybAkJXAIDTD 6 | Pizv2zsydK0wSCcJlWVYF5Tbz9nmShR1hdF6r5Ex4jwmUt/SNLQFVheHCsgcaam9 7 | t+PSCs0bsFF5GBr1xzxMAzRP5/ZpA3TgFCjwaQIDAQABAoIBAAX9a1r/825tL4Nq 8 | GvDd5hgTD7DJnBj40eXG4c8jecVy6qMBR/KMGWQOeaBDA///Hl4rGlJc6S9+RqOR 9 | 9I0OLfe4+HpKdrdroRqd1wxCBqyw5Imf7DT+q5yClhcB8MhiJv+avZXtAHpcmRFe 10 | yUMeAEi61dYI1k+5tX1sTqpY9NkIHNYVMivkn8vMfnUO1wtAWSX9mQ1Ge9eZ8sy6 11 | 2xZu5tQsu+qnzq4E4p4xqP52ClG0rotEL9Xz7AavhVFoT0y01u7OmWpZOcPNAWSR 12 | 0uFaAsxSKDZyGF2LP8x7yhHX8piGqJNx2ZCSspmkkajtvFBAdUOlii584yh5BFfs 13 | TqhmWTUCgYEA4sXHS0sWPVEGrf8gcFQc7z9MlvnVbDdAA/aQVSoJdlD4Trw94POa 14 | cbzgKjJg39zndbGNi2WVK265XMdE48McHSYHrnB5afXNxlZS73aEy49XYRK/o+Ux 15 | B7jOoiKjmLebta5yC3Oxf4f1imHL4C0hAbHtZl/xTecLe9kmM+pBxk8CgYEAw6dt 16 | k8E+AioCqV6Hcsm3aZwTY++kLQSwdSi4aU5KUDB7HvjSrqHcURA7w/bWSoV0KwRw 17 | 14iZWhzDY2r9wAdYDAI8v1v8k4etukdBpHGHqnRSKylrPPWU3qHrM8W0Th2vKKtY 18 | ldl41HNWr4p+OTAPXqc+pBSeCErQ1q4iE0ZiZ8cCgYAaRR8ZMdGZuNE1RuDTImtX 19 | q9WLh9WZe60GyIFf3EbMVgTt2hCxBodVtbOiL8PZKxYFJFRpWZM2PNVsUglA+VFA 20 | by9kndLy227DEyz4YJpxmmFc9XcN3XcYlegaEDkzb9Gx8ktz2CsvwuhG551ektvH 21 | /nyp52Nkyuchqb4rNW/5MQKBgFY0D4B5NOPpNJEBGDaID6qVXKm8bR50oXaNQWsM 22 | VousQKLtyI2uvQ5uU5bMy6+7yuolI76i7cYZRDEqc7DGy5FG7xL06Xzq261mNdLJ 23 | PpfodkeUES6jmTraJnICGqYMSB9oFzi2v5kDVF81atWxiiQPFfdfKh3HMOpVgKfz 24 | a+oDAoGAWBUEuXFNNe7khNjo//RjdRHfVVN9yuCqert+fJzbidtsiZlt4wqazKyP 25 | mbppX42UTEWsF9u8DuIza4bymYjMyVJ1Hw8BT8nfWzvjbs+Jp7acw7I9WgmMG1jw 26 | 4y7MumWuXluaE4wJATZYv8vo5W0e3F8dhUbplWs0RSF+ftyp3mU= 27 | -----END RSA PRIVATE KEY----- 28 | -------------------------------------------------------------------------------- /vagrant_repo/pems/s2_slave2.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN RSA PRIVATE KEY----- 2 | MIIEpQIBAAKCAQEA50j4pCQ7lLYSZvtSWJvIAJkQM4bdQgj4QEKKFmlUoJFWZl/M 3 | MutckZSiS9IJeYngEblBGXXl6R+P375HPY7sxCcjvkjv2qAzals+r4Kz5GuFENPI 4 | sC0j9iqeZegxtNAlDW4wONU2Wwyosh3JclQlVk2Q6v9CUW+65KAZCwQiC0C0hlIM 5 | 6YPf3Wj+H1Ip6VRSLqp1l21K6wULnM4T/fEL8ym2Z+DTNzBzSC/5M3phXso0hXPK 6 | 8d2XYg39mZa2qFmDBqDEubh+J0V6PEoOnuI67dBFdvnQXteA74tuajwNBLgvvBNT 7 | Hey3IWCib1LhQh/E6mDMBgUd60gCmHFYE/11QwIDAQABAoIBAQDm7qB9XEQ1Z1qW 8 | guik2t7nYe2gVU/FKKmfmBDC8eby8EtBqvN8AC+MmMk4RX76YOVfLQdIQcUPcVk5 9 | wYbmezgDX0U8MR10wTK1Rmgf3LR8JbNWqvAeoOPgXouMGzzOWmo0r8nsZU+Bt/EU 10 | 79L9mfEx6/7/9WGlaJdGwmhe7ICFk+53oMMtZHvivbgTDlYjLHPrHw35NY5gzEUb 11 | uowNBLARK6tM9ZmdOJ+W3Mhyo6dgUreSZPweZk3e8Fni/X28Od+ZLg76RMYhwV1R 12 | RGJcmghRvnXpB2U5i+kZzfY1YOzMRb5Y81W2SOV/5o8OoTJcT2wHXQJ3hVNsyu4X 13 | +y1+F5/ZAoGBAP8CJWy66i3R3CL20fdgZ3zAoV7a2jXiA9wQwbzFOZ3RzN7L/zNf 14 | 1eLe+bWMFiZsm4g1p9FTFK6eEf64/y3eNeefVGrUuuZRTbQpCQzPaoT8YWm1TO3F 15 | ddQ0ZIsVfVXmQvdCa9DpiVFNIJWrK+ty4s4kL6jCtQzbEOyVotPlf3o3AoGBAOgv 16 | NYnSzIhtOwaykC2Feejk/R4DH9XhOiesAQsSs/23B/xSc1OdDcfoL/7rY2yeai9u 17 | ZD/+nYu5wtHw33PgVZTnu1yqvFAwu2ClZdJrJ4YDHuswJ02v2jq0VzD/cJe7H0Od 18 | RJlKsmqaTJSng6GoMBRz4kTuzZepJd93zX1PkKdVAoGAVeAtJj6T2jZQAd5IuxvV 19 | /ecI8N6WmYqxbgyekamBS6p5aZYdLPnbF3mrcf3o/6uXfPlEuHNYBa3ptXQrSxEH 20 | 6iZ30Toubp12o3MmPxAieQJc87JAY9oZYgr6yPPFr4XJi2bs0/+xZJWqoXxxX+ri 21 | gjUhb52SRvAG9QU3PlCM62UCgYEAm5ifiVhCBx8kUk2xvz/WvdNPKSCw4fUIsvNa 22 | 05/aDSnuaRKcBKmYRaJ9H5mBTJYw1M5m0lgAHlYDkAuaw53P3HUbI3OrtRWjTJYq 23 | 0UNL/kvzGWtwu2ggl/yo/cYBHz2gKwCmqw/a1wPGVEyaMuhyKBKszMM39e292q7/ 24 | f32lk+0CgYEAlAP2YpTokv8SkNrh/mJN2fAHDno2Q8LNAZ+JCnLHS+Yy/KsTW7s0 25 | mdRbWUepuWhJ3TfX71Vk6NubZHoYWo2zUAHctc+TcJVGevN7zNDkhTfu6QnzHqGa 26 | JFLD+/Aub5KepcFSnb5Y4KEYJswXqyEC4QwaKhl1sxJOprXt+QBaDKM= 27 | -----END RSA PRIVATE KEY----- 28 | -------------------------------------------------------------------------------- /vagrant_repo/pems/s_license.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN RSA PRIVATE KEY----- 2 | MIIEowIBAAKCAQEAsYeludIEnIBuZV7kaxNsQAMfh3iANlQE3Sw1TvKGmTCeCLu5 3 | 8toaBxtrcDaP7u0+0Rbmw3hw1HPm4xX8syi314kDSN7w64XQBwTOuGjyY+bDimQA 4 | ks67puKdgIOkG7RAK9Dxq7foRa7tgrMDqvFIOH44/eokoVXj+DMEK0712Hz4KHkx 5 | hrFp18U8YrAWyJ0K7NKNSrVDFbSH43fcAmg2ypbFsx2Ptppy8SkBgSs45xmjkYO0 6 | ElBK1mHRWFk0p7O+3Grf14Hq+E5bo2+Rk2XRsDZpsbzlnfB+ioQF/wrB2OrNMCtp 7 | y6/epBz0pMLjhYxgWlZwohOC3odBP/CnTWwyqQIDAQABAoIBAEAftwS/j1rYKQgE 8 | loz2nwsgFathIy58eqVI6phxkZyTqwGMjUXi8bPPe6c0jhjHKQFtPD0uq9KRarxr 9 | nLM56e24V69il7L6yoE+g0yo26SqHcdHB83/TlihUjKxWf2HxgYNmr1j2EoTPUcQ 10 | UirUrDl7nipZAJIl7Aoio0bhZnujTggkcor9qrlVAf0UWvF9BhXt4V8Xko5dxwKF 11 | g2cuOaq16G/04moQMg1VFuQtKlxiAbzKnhDMBYV3fCTyHhG2n+BT8kiajW6B8OrQ 12 | fi9ZjiByFJUbYW9plLcXeigK6NJD8PBOjfV2bRiQ5yzjkL/xGFCkM9Ese3YX9Zzx 13 | ZehEQ+ECgYEA3Fw1ag/anog/MZwtKdmsTBiggDM06VTFXS652mYJ/9XDBsocAs1z 14 | aWNsV8HZaSnrHPxSjw43ngCZc0kNsLdljTHi0wfWKhXjQwD7B/WEk33K8mxmKTpg 15 | 7mQehcvmDwImaKgxjTdQ+Tq+6cNCilWR7/LFfHDpovWd/TOgjFSS6QMCgYEAzj4X 16 | tq+tduHTF3h9/m7PnVC8OWurw3+GVpD2Wbg1Xr5Tqx8FVNwlm8q9ZWLgfeDdkTy5 17 | zvuCPhQxYUynRqTmRX1UMupaGpb7wbisrOq1aCKr88aX/AjF79Q/a50+TEMIiE1/ 18 | M3wDKWyA6UAIjLZ9gfLOw69jAuu6riZdZeBth+MCgYBvWTi0a2ZxDS/BhcVcjF1/ 19 | 5kHUBgwKi4dfWqkXLtCGsiFmYOJemCplapPolE+j0Ea50tZ06x43fN4NXzDHxyRN 20 | gJO5RxB1G7JGvUwb7Xgcf0f5z8SfuJwaWgUCXtHVa6S05aiETxtflMu7m6sX871W 21 | njokc3nbmnlG5LuPrXy+uQKBgEGqH164/F+3csAsSuExYsTRqbwWfe+WsKzrJqRW 22 | NBfgPT9kdwwXs5mwqTCYlKU/bQwK65XtGgCt6TLzdubVJcPGLYKwftOscqexJrk/ 23 | WVa4g0rwVf+Ww36iczbOL8GULilHk1JPD6qmszyQeKhkif1P02kWdE2/xAYijOYc 24 | 2ILFAoGBAKJtYoAYQv+Rd4NTuSjUwOouTbox5uSmdhDtMY6ZpCSAF7d6O3DgIQ+q 25 | R9lINY529vMMXByJYO5OAGfSAfDXXEjEg4o/dhU+nniKW/PMhSbb/ITTe3brOTwc 26 | WAkpgD7KOBk0joWshOT0g68uV2nzGsiUZFDuSR7Vlj23QvK4WC3f 27 | -----END RSA PRIVATE KEY----- 28 | -------------------------------------------------------------------------------- /vagrant_repo/pems/s_standalone.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN RSA PRIVATE KEY----- 2 | MIIEpQIBAAKCAQEA6DpJ002YBQykE33QyJnscZGn6re00JtcSzf72NtkQCG6y9pt 3 | YytiAA/m7BluIYrvkncfqyZuHeRZ1hbeg0MVVjfeXxoAdo1/62go6jbSzn/e7/JZ 4 | bO9fdvtuRR8j0HpEJjKMUBDJi8NWWpd4HHrHvXz4l2Z6GLwYLTe2GvF058tAvbsg 5 | ojdEibFvxobjlXAxs0ht3YGkxgk2raQfociLjNcVo3tI60LRTd2duyWNqKAITJ75 6 | ZrwczIVtqiFZ48KeWc3H3wxxhj/H3x/RzxDCTmZMYr0lYeEpTb0jCmdhszgWzJ3X 7 | DMtzYd4e3/UfuBtVJmHCadBnKVZIHrFcnHHkswIDAQABAoIBAQCblSmOwmZ9w4lN 8 | cbZmHxGUyNPp4efm9p8v2bMGB34zpSVjm9Q7Y35FsmGwfh0VpeJ5iwuRe668ohc5 9 | 4ppy8Iej+swlhOMYihZQnbkDqXU0WeD/eqtE215m9W5cKs+wxalQuf7dSVHuLBF3 10 | ohEba3rUTZyyujpExgegi7madXgwLepRduX6xQmhgtp6HChii9eDly7zIChhULPm 11 | CDEWVTbw4UAjISVXbpeUPpjx/A3nxqNTxc1DdGLPKIeuSOjcgZXgc0rPw4RItm9j 12 | HkN2ZohCLecntvR7O0I5dNe1Oufc3f/3WQWioLrJhueWeFvExRlp/Pj++2hQeGfG 13 | IfNrkXkpAoGBAPf+7+0cqjs4T8ixm0QQ0FUiF8T1nxNRj0ykEvQX+WO5Zs/VHjfK 14 | qQ1RkAU7/V3lzhs5hgVzJrJjQ29xsXR0wSVKQ/8toOhllhCaYz6FGBGsHstZvrvu 15 | HLI6q8ypPZsdLz7XuZwu+os27H9ucWbsZM2Uf5eDqkSY0wblWEAPCiL1AoGBAO+5 16 | ESK1XGhbln0gKG0z2Omo8gCE3Ww3932J/r336SP6LOIzjOFQV1mn1GhT15eV9/a0 17 | RnQ4m3LeOLk2MFxARYq0HujFrF7fYWNM19Lg3uvPM9F8lriYKzamKMlovr6d+fuL 18 | QqS3K1jnp+C/rDsW3PgRpqHjY4dMgeCag9uKCTAHAoGBAKuTqC9ma6h5N0nlB0U6 19 | VMjxw3wza5GUFg6yXaKfi52hQi58hmGXRwq96WSVsp/qRIS1cbIHjzhQUPGjuWCW 20 | /qJsFUtRKEhhMEfgaNVyg8qGSO/r8XhYL2ZoDUCVvte4g115JyOVpSX4I/uuT6sj 21 | 1kIdgYE0SPMYwLe+qSX4wcyZAoGASYiESBhHsz885z7hB7ZauDn5mc0nupVkVl7p 22 | BE6ydjW8ZNqZQVgKo1bG4gWt4TLAcC2WWvouPMsLrUyBAxs3+bcMsCxKloOA9RvS 23 | LD6MQts5Mu47sX4D62yGoFmAASqmTtHF7I6/PjM5HMjOxQVbXMDVU11T32HJiSL8 24 | hXBPJysCgYEAi8NgPqlSzPB66NVizQQTvUSoB3hZWitzxdkCulVLKIY0GclLyjhi 25 | bAliYGap6YwyAGuTZPfUklrKWkYTshlD5kxPEMJNdxwpjAVP49Q/xO8SLvwuzbFu 26 | 33+oYTGTAkZ9+CvqlfFmuVh8scVfZZlrzHAIJ+dBzr7KDgV8M1FLhbo= 27 | -----END RSA PRIVATE KEY----- 28 | -------------------------------------------------------------------------------- /vagrant_repo/roles/splunk_mirrors_local.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "splunk_mirrors_local", 3 | "description": "Configures mirrors for Splunk 4 & 6", 4 | "override_attributes": { 5 | "splunk": { 6 | "package": { 7 | "base_url": "http://10.0.2.2:8080/releases" 8 | } 9 | } 10 | } 11 | } -------------------------------------------------------------------------------- /vagrant_repo/roles/splunk_monitors.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "splunk_monitors", 3 | "description": "Set the monitors for splunk", 4 | "default_attributes": { 5 | "splunk": { 6 | "main_project_index": "opsinfra", 7 | "monitors": [ 8 | { 9 | "path": "/var/log/dmesg", 10 | "sourcetype": "dmesg" 11 | } 12 | ] 13 | } 14 | } 15 | } -------------------------------------------------------------------------------- /vagrant_repo/roles/splunk_monitors_windows.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "splunk_monitors_windows", 3 | "description": "Set the monitors for splunk", 4 | "default_attributes": { 5 | "splunk": { 6 | "main_project_index": "opsinfra", 7 | "monitors": [ 8 | { 9 | "type": "WinEventLog", 10 | "path": "Application" 11 | }, 12 | { 13 | "type": "WinEventLog", 14 | "path": "System" 15 | }, 16 | { 17 | "type": "WinEventLog", 18 | "path": "Security" 19 | } 20 | ] 21 | } 22 | } 23 | } --------------------------------------------------------------------------------