Closed cdenneen closed 1 year ago
@cdenneen It looks like you are working off an old version, semi-recently the provision plan was broken in two subplans. If you pull the latest main branch and switch to pecdm::subplans::provision, that subplan will return an inventory. Your custom plan that'll add your additional configuration steps should be based on pecdm::provision, effectively you'll build a plan which runs pecdm::subplans::provision then do your additional work like DNS setup then run pecdm::subplans::deploy to install PE, then after that any additional custom classification work.
@ody it seems like my custom code was using peadm::get_targets
would that still be the case?
$primary = peadm::get_targets(getvar('inventory.server.0.name'), 1)
plan ca::provision(
Optional[TargetSpec] $targets = undef
) {
$inventory = run_plan(pecdm::provision, {
'stage' => false,
'replica' => true,
'version' => '2021.6.0',
'architecture' => 'large',
'compiler_count' => 1,
'subnet' => [
'subnet-A', 'subnet-B',
'subnet-C'
],
'cloud_region' => 'us-east-1',
'ssh_user' => 'ec2-user',
'ssh_ip_mode' => 'private',
'lb_ip_mode' => 'private',
'provider' => 'aws',
'firewall_allow' => [ '10.200.0.0/16' ],
'dns_alt_names' => ['puppet','puppet2021_us-east-1','puppet2021_us-east-1.route53domain.com',
'puppet2021_us-east-1-primary','puppet2021_us-east-1-replica'],
'extra_peadm_params' => {
'r10k_remote' => 'git@gitlab.corp.com:core/pe_infra_control.git',
'r10k_private_key_file' => '/Users/cdenneen/.ssh/code-manager_2022-05-17',
'deploy_environment' => 'main',
'compiler_pool_address' => 'puppet'
},
'extra_terraform_vars' => {
'tags' => { 'stack' => '2021-use1-1' }
}
})
$primary = peadm::get_targets(getvar('inventory.server.0.name'), 1)
run_task('node_manager::update_classes', $primary, environment => "main" )
apply($primary) {
class { 'peadm::setup::node_manager_yaml':
primary_host => $primary.peadm::certname(),
}
node_group { 'Application 1':
rule => ['=', ['trusted', 'extensions', 'pp_role'], 'Application 1'],
}
node_group { 'Application 2':
rule => ['=', ['trusted', 'extensions', 'pp_role'], 'Application 2'],
}
node_group { 'Custom Puppet':
parent => 'All Environments',
classes => {'role::all_in_one' => {}},
environment => 'main',
override_environment => 'true',
rule => ['and', ['~', ['trusted', 'extensions', '1.3.6.1.4.1.34380.1.1.9812'], 'puppet/server']]
}
}
}
So you are suggesting changing: run_plan(pecdm::provision
to run_plan(pecdm::subplans::provision
.. then run my subsequent tasks for creating DNS. Then theoretically duplicate the block and use run_plan(pecdm::subplans::deploy
?
@ody Still having error, I might not be using the subplans correctly:
# This plan does more stuff
plan ca::provision(
Optional[TargetSpec] $targets = undef
) {
$inventory = run_plan(pecdm::subplans::provision, {
'replica' => true,
'architecture' => 'large',
'compiler_count' => 1,
'subnet' => [
'subnet-A', 'subnet-B',
'subnet-C'
],
'cloud_region' => 'us-east-1',
'ssh_user' => 'ec2-user',
'ssh_ip_mode' => 'private',
'lb_ip_mode' => 'private',
'provider' => 'aws',
'firewall_allow' => [ '10.200.0.0/16' ],
'extra_terraform_vars' => {
'tags' => { 'stack' => '2021-use1-1' }
}
})
run_plan(pecdm::subplans::deploy, {
inventory => $inventory['pe_inventory'],
'version' => '2021.6.0',
'dns_alt_names' => ['puppet2021_us-east-1','puppet2021_us-east-1.route53domain.com',
'puppet2021_us-east-1-primary','puppet2021_us-east-1-replica',
'puppet_us-east-1.route53domain.com'],
'extra_peadm_params' => {
'r10k_remote' => 'git@gitlab.corp.com:core/pe_infra_control.git',
'r10k_private_key_file' => '/Users/cdenneen/.ssh/code-manager_2022-05-17',
'deploy_environment' => 'main',
'compiler_pool_address' => 'puppet_us-east-1.route53domain.com'
},
})
$primary = peadm::get_targets(getvar('inventory.pe_inventory.server.0.name'), 1)
run_task('node_manager::update_classes', $primary, environment => 'main')
apply($primary) {
class { 'peadm::setup::node_manager_yaml':
primary_host => $primary.peadm::certname(),
}
node_group { 'Application 1':
rule => ['=', ['trusted', 'extensions', 'pp_role'], 'Application 1'],
}
node_group { 'Application 2':
rule => ['=', ['trusted', 'extensions', 'pp_role'], 'Application 2'],
}
node_group { 'AP Puppet':
parent => 'All Environments',
classes => {'role::all_in_one' => {}},
environment => 'main',
override_environment => 'true',
rule => ['and', ['~', ['trusted', 'extensions', '1.3.6.1.4.1.34380.1.1.9812'], 'puppet/server']]
}
}
}
run shows:
❯ /opt/puppetlabs/bin/bolt plan run ca::provision --trace
Starting: plan ca::provision
Starting: plan pecdm::subplans::provision
Finished: plan pecdm::subplans::provision in 0.43 sec
Finished: plan ca::provision in 0.44 sec
No name or uri for target: {"name"=>"", "uri"=>"10.224.11.177"} for group at ["peadm_nodes"]
The code shows for aws it should be using private_dns
for name which I see in the terraform.tfstate
Any idea why it's showing empty in the output?
Closing PR as it is no longer compatible with merged changes which are meant to address use case
@ody can we get this merged so can do things like this:
$primary = peadm::get_targets(getvar('inventory.server.0.name'), 1)
@reidmv (this was what I was missing).