Skip to content

Commit 9022701

Browse files
committed
Use code deployer role included with PE
Prior to this commit, we used a curl to the RBAC API to create a 'deploy environmets' role that our service user can use. However, in 2016.5 the RBAC API no longer accepts setting the token override_expiry permission as it has been removed. After this commit, we simply use the built-in code deployer role and no longer allow for creation of a role by a different name. You can still specify a different role name but you'll have to make that role yourself beforehand.
1 parent 1b18d51 commit 9022701

File tree

1 file changed

+27
-20
lines changed

1 file changed

+27
-20
lines changed

manifests/code_manager.pp

Lines changed: 27 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,17 @@
66
String $git_management_system = hiera('git_management_system', 'github'),
77
String $code_manager_ssh_key_directory = '/etc/puppetlabs/puppetserver/ssh',
88
String $code_manager_ssh_key_file_name = 'id-control_repo.rsa',
9-
String $code_manager_role_name = 'Deploy Environments',
9+
String $code_manager_role_name = versioncmp($::pe_server_version, '2016.5.0') ? {
10+
-1 => 'Deploy Environments',
11+
default => 'Code Deployers',
12+
},
1013
Boolean $create_and_manage_git_deploy_key = true,
1114
Boolean $manage_git_webhook = true,
1215
String $control_repo_project_name = 'puppet/control-repo',
1316
){
1417

1518
$token_filename = "${token_directory}/${code_manager_service_user}_token"
1619
$code_manager_service_user_password = fqdn_rand_string(40, '', "${code_manager_service_user}_password")
17-
$create_role_creates_file = "${token_directory}/deploy_environments_created"
1820

1921
#master_classifier_settings is a custom function
2022
#2016.5.0 makes classifer.yaml an array of hashes
@@ -23,6 +25,7 @@
2325
$classifier_settings = master_classifer_settings()[0]
2426
} else {
2527
$classifier_settings = master_classifer_settings()
28+
$create_role_creates_file = "${token_directory}/deploy_environments_created"
2629
}
2730

2831
$classifier_hostname = $classifier_settings['server']
@@ -59,23 +62,28 @@
5962
unless => "/usr/bin/test \$(stat -c %U ${::settings::codedir}/environments/production) = 'pe-puppet'",
6063
}
6164

62-
$create_role_curl = @(EOT)
63-
/opt/puppetlabs/puppet/bin/curl -k -X POST -H 'Content-Type: application/json' \
64-
https://<%= $classifier_hostname %>:4433/rbac-api/v1/roles \
65-
-d '{"permissions": [{"object_type": "environment", "action": "deploy_code", "instance": "*"},
66-
{"object_type": "tokens", "action": "override_lifetime", "instance": "*"}],"user_ids": [], "group_ids": [], "display_name": "<%= $code_manager_role_name %>", "description": ""}' \
67-
--cert <%= $::settings::certdir %>/<%= $::trusted['certname'] %>.pem \
68-
--key <%= $::settings::privatekeydir %>/<%= $::trusted['certname'] %>.pem \
69-
--cacert <%= $::settings::certdir %>/ca.pem;
70-
touch <%= $create_role_creates_file %>
71-
| EOT
72-
73-
exec { 'create deploy environments role' :
74-
command => inline_epp( $create_role_curl ),
75-
creates => $create_role_creates_file,
76-
logoutput => true,
77-
path => $::path,
78-
require => File[$token_directory],
65+
#Do not create the role in 2016.5 we can use the existing role
66+
#and the token override_lifetime permission no longer exists
67+
if versioncmp($::pe_server_version, '2016.5.0') < 0 {
68+
$create_role_curl = @(EOT)
69+
/opt/puppetlabs/puppet/bin/curl -k -X POST -H 'Content-Type: application/json' \
70+
https://<%= $classifier_hostname %>:4433/rbac-api/v1/roles \
71+
-d '{"permissions": [{"object_type": "environment", "action": "deploy_code", "instance": "*"},
72+
{"object_type": "tokens", "action": "override_lifetime", "instance": "*"}],"user_ids": [], "group_ids": [], "display_name": "<%= $code_manager_role_name %>", "description": ""}' \
73+
--cert <%= $::settings::certdir %>/<%= $::trusted['certname'] %>.pem \
74+
--key <%= $::settings::privatekeydir %>/<%= $::trusted['certname'] %>.pem \
75+
--cacert <%= $::settings::certdir %>/ca.pem;
76+
touch <%= $create_role_creates_file %>
77+
| EOT
78+
79+
exec { 'create deploy environments role' :
80+
command => inline_epp( $create_role_curl ),
81+
creates => $create_role_creates_file,
82+
logoutput => true,
83+
path => $::path,
84+
require => File[$token_directory],
85+
before => Rbac_user[$code_manager_service_user],
86+
}
7987
}
8088

8189
rbac_user { $code_manager_service_user :
@@ -85,7 +93,6 @@
8593
display_name => 'Code Manager Service Account',
8694
password => $code_manager_service_user_password,
8795
roles => [ $code_manager_role_name ],
88-
require => Exec['create deploy environments role'],
8996
}
9097

9198
file { $token_directory :

0 commit comments

Comments
 (0)