Andrew Bogott has submitted this change and it was merged.

Change subject: Labs: Generate/store root passwords for instances
......................................................................


Labs: Generate/store root passwords for instances

Each project will have a root password that applies to all
project instances.  The password is stored in
/var/local/instance-root/passwords/$projectname on the labs
puppetmaster.

Passwords are automatically regenerated if the file is missing,
so removing the password file is an easy way to reset passwords
if needed.

Bug: T142216
Change-Id: Ia9eb2bdb5879fe074ecb9e175f57f3849ff52821
---
M modules/base/manifests/labs.pp
A modules/puppetmaster/files/make-labs-root-password
A modules/puppetmaster/manifests/labsrootpass.pp
M modules/role/manifests/labs/puppetmaster.pp
4 files changed, 58 insertions(+), 0 deletions(-)

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



diff --git a/modules/base/manifests/labs.pp b/modules/base/manifests/labs.pp
index 74a82d0..83afb42 100644
--- a/modules/base/manifests/labs.pp
+++ b/modules/base/manifests/labs.pp
@@ -49,4 +49,9 @@
             user    => 'root',
         }
     }
+
+    # Create a root password and store it on the puppetmaster
+    user { 'root':
+        password => generate('/usr/local/sbin/make-labs-root-password', 
$::labsproject)
+    }
 }
diff --git a/modules/puppetmaster/files/make-labs-root-password 
b/modules/puppetmaster/files/make-labs-root-password
new file mode 100644
index 0000000..86a1649
--- /dev/null
+++ b/modules/puppetmaster/files/make-labs-root-password
@@ -0,0 +1,24 @@
+#!/bin/sh
+alias errcho='>&2 echo'
+
+PROJECT=$1
+DIRECTORY=/var/local/labs-root-passwords
+
+if [ -z "$PROJECT" ]; then
+    errcho "No project name specified."
+    exit 1
+fi
+
+if [ ! -d "$DIRECTORY" ]; then
+    errcho "Directory for passwords not found."
+    exit 1
+fi
+
+if [ -f $DIRECTORY/$PROJECT ]; then
+  PASSWORD=$(cat $DIRECTORY/$PROJECT)
+else
+  PASSWORD=$(pwgen -sy 16 1)
+  umask 027
+  echo $PASSWORD > $DIRECTORY/$PROJECT
+fi
+mkpasswd -m sha-512 $PASSWORD
diff --git a/modules/puppetmaster/manifests/labsrootpass.pp 
b/modules/puppetmaster/manifests/labsrootpass.pp
new file mode 100644
index 0000000..6599ef0
--- /dev/null
+++ b/modules/puppetmaster/manifests/labsrootpass.pp
@@ -0,0 +1,28 @@
+# Class: puppetmaster::labsrootpass
+#
+# Set up a script to generate root passwords for puppet clients
+#
+#  Used in labs instance roles like this:
+#
+#    user { 'root':
+#        password => generate('/usr/local/sbin/make-labs-root-password', 
$::labsproject)
+#    }
+#
+
+class puppetmaster::labsrootpass {
+
+    require_package('pwgen')
+
+    file { '/usr/local/sbin/make-labs-root-password':
+        ensure => 'present',
+        owner  => 'root',
+        group  => 'root',
+        mode   => '0555',
+        source => 'puppet:///modules/puppetmaster/make-labs-root-password'
+    }
+
+    file { '/var/local/labs-root-passwords':
+        ensure => 'directory',
+        mode   => '0700',
+    }
+}
diff --git a/modules/role/manifests/labs/puppetmaster.pp 
b/modules/role/manifests/labs/puppetmaster.pp
index c394c2a..7e42fe6 100644
--- a/modules/role/manifests/labs/puppetmaster.pp
+++ b/modules/role/manifests/labs/puppetmaster.pp
@@ -4,6 +4,7 @@
 
     include network::constants
     include ldap::role::config::labs
+    include puppetmaster::labsrootpass
 
     $labs_metal = hiera('labs_baremetal_servers', [])
     $ldapconfig = $ldap::role::config::labs::ldapconfig

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

Gerrit-MessageType: merged
Gerrit-Change-Id: Ia9eb2bdb5879fe074ecb9e175f57f3849ff52821
Gerrit-PatchSet: 6
Gerrit-Project: operations/puppet
Gerrit-Branch: production
Gerrit-Owner: Andrew Bogott <[email protected]>
Gerrit-Reviewer: Andrew Bogott <[email protected]>
Gerrit-Reviewer: Faidon Liambotis <[email protected]>
Gerrit-Reviewer: Gehel <[email protected]>
Gerrit-Reviewer: jenkins-bot <>

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

Reply via email to