Puppet is failing on deploy-1004.devtools.eqiad1.wikimedia.cloud:
ERR: Could not retrieve catalog from remote server: Error 500 on SERVER: Server Error: Evaluation Error: Error while evaluating a Resource Statement, Evaluation Error: Error while evaluating a Resource Statement, Duplicate declaration: File[/usr/bin/scap] is already declared at (file: /etc/puppet/modules/scap/manifests/init.pp, line: 45); cannot redeclare (file: /etc/puppet/modules/scap/manifests/master.pp, line: 69) (file: /etc/puppet/modules/scap/manifests/master.pp, line: 69, column: 5) on node deploy-1004.devtools.eqiad1.wikimedia.cloud
Backtracking of the issue:
- operations/puppet/modules/scap/manifests/init.pp defines class scap which will define the /usr/bin/scap file resource if $is_master is false.
- operations/puppet/modules/scap/manifests/master.pp defines class scap::master which unconditionally defines the /usr/bin/scap file resource.
- operations/puppet/modules/profile/manifests/mediawiki/scap_client.pp defines class profile::mediawiki::scap_client which has parameter $is_master=lookup('profile::mediawiki::scap_client::is_master').
- the instance deploy-1004.devtools.eqiad1.wikimedia.cloud has role role::deployment_server.
Grepping through operations/puppet for profile::mediawiki::scap_client::is_master:
./modules/profile/manifests/mediawiki/scap_client.pp:8: Boolean $is_master = lookup('profile::mediawiki::scap_client::is_master') ./hieradata/cloud/eqiad1/deployment-prep/hosts/deployment-deploy03.yaml:1:profile::mediawiki::scap_client::is_master: true ./hieradata/cloud.yaml:335:profile::mediawiki::scap_client::is_master: false ./hieradata/role/common/deployment_server/kubernetes.yaml:128:profile::mediawiki::scap_client::is_master: true ./hieradata/common/profile/mediawiki/scap_client.yaml:1:profile::mediawiki::scap_client::is_master: false
When it comes down to it, profile::mediawiki::scap_client::is_master should be true for any node that uses the role::deployment_server class.
Is there a way to change $is_master=lookup('profile::mediawiki::scap_client::is_master') into something that finds out if class role::deployment_server has been used?