|
6 | 6 | String $git_management_system = hiera('git_management_system', 'github'), |
7 | 7 | String $code_manager_ssh_key_directory = '/etc/puppetlabs/puppetserver/ssh', |
8 | 8 | 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 | + }, |
10 | 13 | Boolean $create_and_manage_git_deploy_key = true, |
11 | 14 | Boolean $manage_git_webhook = true, |
12 | 15 | String $control_repo_project_name = 'puppet/control-repo', |
13 | 16 | ){ |
14 | 17 |
|
15 | 18 | $token_filename = "${token_directory}/${code_manager_service_user}_token" |
16 | 19 | $code_manager_service_user_password = fqdn_rand_string(40, '', "${code_manager_service_user}_password") |
17 | | - $create_role_creates_file = "${token_directory}/deploy_environments_created" |
18 | 20 |
|
19 | 21 | #master_classifier_settings is a custom function |
20 | 22 | #2016.5.0 makes classifer.yaml an array of hashes |
|
23 | 25 | $classifier_settings = master_classifer_settings()[0] |
24 | 26 | } else { |
25 | 27 | $classifier_settings = master_classifer_settings() |
| 28 | + $create_role_creates_file = "${token_directory}/deploy_environments_created" |
26 | 29 | } |
27 | 30 |
|
28 | 31 | $classifier_hostname = $classifier_settings['server'] |
|
59 | 62 | unless => "/usr/bin/test \$(stat -c %U ${::settings::codedir}/environments/production) = 'pe-puppet'", |
60 | 63 | } |
61 | 64 |
|
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 | + } |
79 | 87 | } |
80 | 88 |
|
81 | 89 | rbac_user { $code_manager_service_user : |
|
85 | 93 | display_name => 'Code Manager Service Account', |
86 | 94 | password => $code_manager_service_user_password, |
87 | 95 | roles => [ $code_manager_role_name ], |
88 | | - require => Exec['create deploy environments role'], |
89 | 96 | } |
90 | 97 |
|
91 | 98 | file { $token_directory : |
|
0 commit comments