Andrew Bogott has submitted this change and it was merged.

Change subject: Set up ssh keys so that designate can clear salt and puppet 
certs.
......................................................................


Set up ssh keys so that designate can clear salt and puppet certs.

Change-Id: I1ecca050b2ce2eb3020f36d2e09bc5cc32f259e0
---
M manifests/role/designate.pp
M manifests/role/nova.pp
M manifests/role/puppet.pp
M manifests/role/salt.pp
A modules/puppetmaster/manifests/certmanager.pp
A modules/puppetmaster/templates/puppet_cert_manager.pub.erb
6 files changed, 43 insertions(+), 1 deletion(-)

Approvals:
  Andrew Bogott: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/manifests/role/designate.pp b/manifests/role/designate.pp
index aee8c37..44446b6 100644
--- a/manifests/role/designate.pp
+++ b/manifests/role/designate.pp
@@ -88,5 +88,7 @@
         rule => "saddr (${wikitech} ${horizon} ${controller}) proto tcp dport 
(9001) ACCEPT;",
     }
 
-
+    ssh::userkey { 'puppet_cert_manager_private':
+        source => 'puppet:///private/ssh/puppet_cert_manager/cert_manager'
+    }
 }
diff --git a/manifests/role/nova.pp b/manifests/role/nova.pp
index a674ebb..8fdd31f 100644
--- a/manifests/role/nova.pp
+++ b/manifests/role/nova.pp
@@ -59,6 +59,13 @@
             default => $nova_controller_hostname,
         }
     }
+    $designate_hostname = $::realm ? {
+        'production' => 'holmium.wikimedia.org',
+        'labs'       => $nova_controller_hostname ? {
+            undef   => $::ipaddress_eth0,
+            default => $nova_controller_hostname,
+        }
+    }
     $controller_address = $::realm ? {
         'production' => '208.80.154.18',
         'labs'       => $nova_controller_ip ? {
diff --git a/manifests/role/puppet.pp b/manifests/role/puppet.pp
index 2a950e3..52a5d30 100644
--- a/manifests/role/puppet.pp
+++ b/manifests/role/puppet.pp
@@ -34,6 +34,10 @@
             'ldaptls'           => true
         };
     }
+
+    class { 'puppetmaster::certmanager':
+        remote_cert_cleaner => $novaconfig['designate_hostname'],
+    }
 }
 
 
diff --git a/manifests/role/salt.pp b/manifests/role/salt.pp
index 655f218..afbba4c 100644
--- a/manifests/role/salt.pp
+++ b/manifests/role/salt.pp
@@ -44,6 +44,12 @@
         salt_reactor_options => { 'puppet_server' => 'virt1000.wikimedia.org' 
},
     }
 
+    include role::nova::config
+    $novaconfig = $role::nova::config::novaconfig
+
+    class { 'puppetmaster::certmanager':
+        remote_cert_cleaner => $novaconfig['designate_hostname'],
+    }
 }
 
 # A salt master manages minions within a project
diff --git a/modules/puppetmaster/manifests/certmanager.pp 
b/modules/puppetmaster/manifests/certmanager.pp
new file mode 100644
index 0000000..be10198
--- /dev/null
+++ b/modules/puppetmaster/manifests/certmanager.pp
@@ -0,0 +1,22 @@
+class puppetmaster::certmanager(
+    $remote_cert_cleaner=""
+){
+    user { 'certmanager':
+        home       => '/var/lib/puppet',
+        managehome => false,
+        system     => true,
+    }
+
+    # Allow remote execution for cert cleanup
+    ssh::userkey { 'certmanager.pub':
+        content => template('puppetmaster/puppet_cert_manager.pub.erb'),
+        user    => 'certmanager',
+    }
+
+    sudo::user { 'certmanager':
+        privileges => [
+            'ALL = (root) NOPASSWD: /usr/bin/puppet cert clean *',
+            'ALL = (root) NOPASSWD: /usr/bin/salt-key -d *'
+        ]
+    }
+}
diff --git a/modules/puppetmaster/templates/puppet_cert_manager.pub.erb 
b/modules/puppetmaster/templates/puppet_cert_manager.pub.erb
new file mode 100644
index 0000000..fcab503
--- /dev/null
+++ b/modules/puppetmaster/templates/puppet_cert_manager.pub.erb
@@ -0,0 +1 @@
+from="<%= scope.function_ipresolve([remote_cert_cleaner, 4]) %>" ssh-rsa 
AAAAB3NzaC1yc2EAAAADAQABAAABAQC58c3tShWchHSCEGp4LeJ3hcKhfgNMSF3FFmblVbp5ZUQ7EyL23q2hBr6Wdo2WoWAiiZN7BvQRjoykMvCEJoUVr2Kot8T84pyzR+U1l7ASuuGMQF5z4ftyWT34icEzbTCPdsPx+yPOHfPn9N5i7B55+5D2/R2xgeZ6J0/ab+ZS6vZ+oNnMEvD29RmfwCYdOcVZH6O66Pi4e44kd78rhhLlws0G2XVRvng1Urte75KuBq57G6axFHq7oQyjOQ+yLLlYvr35nDruXZ5ggW2+i9x/6KbybSURWQpXOy8I4e0Uv7K+4fqC1XPwVGexsnmWcMeqbIPpijL+jKe8kq2Q89C9
 labs_certs

-- 
To view, visit https://gerrit.wikimedia.org/r/204067
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I1ecca050b2ce2eb3020f36d2e09bc5cc32f259e0
Gerrit-PatchSet: 11
Gerrit-Project: operations/puppet
Gerrit-Branch: production
Gerrit-Owner: Andrew Bogott <[email protected]>
Gerrit-Reviewer: Andrew Bogott <[email protected]>
Gerrit-Reviewer: Chasemp <[email protected]>
Gerrit-Reviewer: Dzahn <[email protected]>
Gerrit-Reviewer: Rush <[email protected]>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to