From ebfe71d300c1e8b31f2ff8927bc985c252448277 Mon Sep 17 00:00:00 2001 From: Cody Herriges <193064+ody@users.noreply.github.com> Date: Mon, 16 Dec 2019 10:17:13 -0800 Subject: [PATCH 1/2] Deploy combined with GCP, macOS, Terraform This commit includes the changes that were required to automate the deployment of the PE XL architecture when Bolt and Terraform were linked together on macOS, targeted at GCP. The use case being a single Bolt plan that can quickly stamp out new infrastructure for customers. Reasoning for filesize.sh change is because of parameter mismatches between Linux and macOS. Other changes are a result of needing to access nodes using external IP address when initiating automation from outside the cloud provider, e.x. your laptop and requiring that all services are wired together using internal DNS names. --- functions/target_host.pp | 4 ++-- plans/unit/install.pp | 4 ++-- tasks/filesize.sh | 11 ++++++++++- 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/functions/target_host.pp b/functions/target_host.pp index a3cdda8f..a3d44c48 100644 --- a/functions/target_host.pp +++ b/functions/target_host.pp @@ -3,10 +3,10 @@ function peadm::target_host( ) >> Variant[String, Undef] { case $target { Target: { - $target.host + $target.name } Array[Target,1,1]: { - $target[0].host + $target[0].name } Array[Target,0,0]: { undef diff --git a/plans/unit/install.pp b/plans/unit/install.pp index 1d05fcf4..569a524b 100644 --- a/plans/unit/install.pp +++ b/plans/unit/install.pp @@ -210,7 +210,7 @@ } # Configure autosigning for the puppetdb database hosts 'cause they need it - $autosign_conf = $database_targets.reduce('') |$memo,$target| { "${target.host}\n${memo}" } + $autosign_conf = $database_targets.reduce('') |$memo,$target| { "${target.name}\n${memo}" } run_task('peadm::mkdir_p_file', $master_target, path => '/etc/puppetlabs/puppet/autosign.conf', owner => 'pe-puppet', @@ -295,7 +295,7 @@ if !empty($agent_installer_targets) { run_command(inline_epp(@(HEREDOC/L)), $master_target) /opt/puppetlabs/bin/puppetserver ca sign --certname \ - <%= $agent_installer_targets.map |$target| { $target.host }.join(',') -%> + <%= $agent_installer_targets.map |$target| { $target.name }.join(',') -%> | HEREDOC } diff --git a/tasks/filesize.sh b/tasks/filesize.sh index 7389de88..8b4cf6c0 100755 --- a/tasks/filesize.sh +++ b/tasks/filesize.sh @@ -1,6 +1,15 @@ #!/bin/bash -size=$(stat -c%s "$PT_path" 2>/dev/null || echo null) +case $(uname) in +Darwin) + options="-f%z" + ;; +*) + options="-c%s" + ;; +esac + +size=$(stat "$options" "$PT_path" 2>/dev/null || echo null) # Output a JSON result for ease of Task usage in Puppet Task Plans if [ "$size" = "null" ]; then From 491ee6a65761247a77c7034154d58b29f9ff4364 Mon Sep 17 00:00:00 2001 From: Reid Vandewiele Date: Fri, 27 Dec 2019 12:06:25 -0800 Subject: [PATCH 2/2] Rename target_host function to target_name Since we have changes in it to return the name, not the host. This commit just makes the action match the description. --- functions/{target_host.pp => target_name.pp} | 4 ++-- plans/unit/configure.pp | 20 ++++++++++---------- plans/unit/install.pp | 18 +++++++++--------- 3 files changed, 21 insertions(+), 21 deletions(-) rename functions/{target_host.pp => target_name.pp} (73%) diff --git a/functions/target_host.pp b/functions/target_name.pp similarity index 73% rename from functions/target_host.pp rename to functions/target_name.pp index a3d44c48..94cff1e8 100644 --- a/functions/target_host.pp +++ b/functions/target_name.pp @@ -1,4 +1,4 @@ -function peadm::target_host( +function peadm::target_name( Variant[Target, Array[Target,0,1]] $target, ) >> Variant[String, Undef] { case $target { @@ -12,7 +12,7 @@ function peadm::target_host( undef } default: { - fail('Unexpected input type to peadm::target_host function') + fail('Unexpected input type to peadm::target_name function') } } } diff --git a/plans/unit/configure.pp b/plans/unit/configure.pp index 16be4de5..27ac5a90 100644 --- a/plans/unit/configure.pp +++ b/plans/unit/configure.pp @@ -46,10 +46,10 @@ # commented-out values should be used once GH-1244 is resolved. # WORKAROUND: GH-1244 - $master_host_string = $master_target.peadm::target_host() - $master_replica_host_string = $master_replica_target.peadm::target_host() - $puppetdb_database_host_string = $puppetdb_database_target.peadm::target_host() - $puppetdb_database_replica_host_string = $puppetdb_database_replica_target.peadm::target_host() + $master_host_string = $master_target.peadm::target_name() + $master_replica_host_string = $master_replica_target.peadm::target_name() + $puppetdb_database_host_string = $puppetdb_database_target.peadm::target_name() + $puppetdb_database_replica_host_string = $puppetdb_database_replica_target.peadm::target_name() apply($master_target) { # Necessary to give the sandboxed Puppet executor the configuration @@ -65,10 +65,10 @@ class { 'peadm::setup::node_manager': # WORKAROUND: GH-1244 - master_host => $master_host_string, # $master_target.peadm::target_host(), - master_replica_host => $master_replica_host_string, # $master_replica_target.peadm::target_host(), - puppetdb_database_host => $puppetdb_database_host_string, # $puppetdb_database_target.peadm::target_host(), - puppetdb_database_replica_host => $puppetdb_database_replica_host_string, # $puppetdb_database_replica_target.peadm::target_host(), + master_host => $master_host_string, # $master_target.peadm::target_name(), + master_replica_host => $master_replica_host_string, # $master_replica_target.peadm::target_name(), + puppetdb_database_host => $puppetdb_database_host_string, # $puppetdb_database_target.peadm::target_name(), + puppetdb_database_replica_host => $puppetdb_database_replica_host_string, # $puppetdb_database_replica_target.peadm::target_name(), compiler_pool_address => $compiler_pool_address, require => File['node_manager.yaml'], } @@ -100,13 +100,13 @@ if $arch['high-availability'] { # Run the PE Replica Provision run_task('peadm::provision_replica', $master_target, - master_replica => $master_replica_target.peadm::target_host(), + master_replica => $master_replica_target.peadm::target_name(), token_file => $token_file, ) # Run the PE Replica Enable run_task('peadm::enable_replica', $master_target, - master_replica => $master_replica_target.peadm::target_host(), + master_replica => $master_replica_target.peadm::target_name(), token_file => $token_file, ) } diff --git a/plans/unit/install.pp b/plans/unit/install.pp index 569a524b..42274104 100644 --- a/plans/unit/install.pp +++ b/plans/unit/install.pp @@ -117,9 +117,9 @@ # Generate all the needed pe.conf files $master_pe_conf = peadm::generate_pe_conf({ 'console_admin_password' => $console_password, - 'puppet_enterprise::puppet_master_host' => $master_target.peadm::target_host(), + 'puppet_enterprise::puppet_master_host' => $master_target.peadm::target_name(), 'pe_install::puppet_master_dnsaltnames' => $dns_alt_names, - 'puppet_enterprise::profile::puppetdb::database_host' => $puppetdb_database_target.peadm::target_host(), + 'puppet_enterprise::profile::puppetdb::database_host' => $puppetdb_database_target.peadm::target_name(), 'puppet_enterprise::profile::master::code_manager_auto_configure' => true, 'puppet_enterprise::profile::master::r10k_private_key' => '/etc/puppetlabs/puppetserver/ssh/id-control_repo.rsa', 'puppet_enterprise::profile::master::r10k_remote' => $r10k_remote, @@ -127,14 +127,14 @@ $puppetdb_database_pe_conf = peadm::generate_pe_conf({ 'console_admin_password' => 'not used', - 'puppet_enterprise::puppet_master_host' => $master_target.peadm::target_host(), - 'puppet_enterprise::database_host' => $puppetdb_database_target.peadm::target_host(), + 'puppet_enterprise::puppet_master_host' => $master_target.peadm::target_name(), + 'puppet_enterprise::database_host' => $puppetdb_database_target.peadm::target_name(), } + $pe_conf_data) $puppetdb_database_replica_pe_conf = peadm::generate_pe_conf({ 'console_admin_password' => 'not used', - 'puppet_enterprise::puppet_master_host' => $master_target.peadm::target_host(), - 'puppet_enterprise::database_host' => $puppetdb_database_replica_target.peadm::target_host(), + 'puppet_enterprise::puppet_master_host' => $master_target.peadm::target_name(), + 'puppet_enterprise::database_host' => $puppetdb_database_replica_target.peadm::target_name(), } + $pe_conf_data) # Upload the pe.conf files to the hosts that need them @@ -253,7 +253,7 @@ # Deploy the PE agent to all remaining hosts run_task('peadm::agent_install', $master_replica_target, - server => $master_target.peadm::target_host(), + server => $master_target.peadm::target_name(), install_flags => [ '--puppet-service-ensure', 'stopped', "main:dns_alt_names=${dns_alt_names_csv}", @@ -263,7 +263,7 @@ ) run_task('peadm::agent_install', $compiler_a_targets, - server => $master_target.peadm::target_host(), + server => $master_target.peadm::target_name(), install_flags => [ '--puppet-service-ensure', 'stopped', "main:dns_alt_names=${dns_alt_names_csv}", @@ -273,7 +273,7 @@ ) run_task('peadm::agent_install', $compiler_b_targets, - server => $master_target.peadm::target_host(), + server => $master_target.peadm::target_name(), install_flags => [ '--puppet-service-ensure', 'stopped', "main:dns_alt_names=${dns_alt_names_csv}",