Skip to content

Instantly share code, notes, and snippets.

@0x46616c6b
Last active January 4, 2016 06:09
Show Gist options
  • Save 0x46616c6b/8579706 to your computer and use it in GitHub Desktop.
Save 0x46616c6b/8579706 to your computer and use it in GitHub Desktop.
Some work on skeleton support for ansibles user module
Index: library/system/user
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- library/system/user (revision ff8eb5f4540d4649978f227dd432a1a2b5bd2512)
+++ library/system/user (revision )
@@ -72,6 +72,10 @@
required: false
description:
- Optionally set the user's home directory.
+ skeleton:
+ required: false
+ description:
+ - Optionally set a home skeleton directory. Requires createhome option!
password:
required: false
description:
@@ -231,6 +235,7 @@
self.force = module.params['force']
self.remove = module.params['remove']
self.createhome = module.params['createhome']
+ self.skeleton = module.params['skeleton']
self.system = module.params['system']
self.login_class = module.params['login_class']
self.append = module.params['append']
@@ -304,6 +309,10 @@
if self.createhome:
cmd.append('-m')
+
+ if self.skeleton is not None:
+ cmd.append('-k')
+ cmd.append(self.skeleton)
else:
cmd.append('-M')
@@ -566,10 +575,14 @@
def create_homedir(self, path):
if not os.path.exists(path):
- # use /etc/skel if possible
- if os.path.exists('/etc/skel'):
+ if self.skeleton is not None:
+ skeleton = self.skeleton
+ else:
+ skeleton = '/etc/skel'
+
+ if os.path.exists(skeleton):
try:
- shutil.copytree('/etc/skel', path, symlinks=True)
+ shutil.copytree(skeleton, path, symlinks=True)
except OSError, e:
self.module.exit_json(failed=True, msg="%s" % e)
else:
@@ -657,6 +670,10 @@
if self.createhome:
cmd.append('-m')
+ if self.skeleton is not None:
+ cmd.append('-k')
+ cmd.append(self.skeleton)
+
if self.shell is not None:
cmd.append('-s')
cmd.append(self.shell)
@@ -831,6 +848,10 @@
if self.createhome:
cmd.append('-m')
+ if self.skeleton is not None:
+ cmd.append('-k')
+ cmd.append(self.skeleton)
+
cmd.append(self.name)
return self.execute_command(cmd)
@@ -997,6 +1018,10 @@
if self.createhome:
cmd.append('-m')
+ if self.skeleton is not None:
+ cmd.append('-k')
+ cmd.append(self.skeleton)
+
cmd.append(self.name)
return self.execute_command(cmd)
@@ -1148,6 +1173,10 @@
if self.createhome:
cmd.append('-m')
+ if self.skeleton is not None:
+ cmd.append('-k')
+ cmd.append(self.skeleton)
+
cmd.append(self.name)
if self.module.check_mode:
@@ -1318,6 +1347,10 @@
if self.createhome:
cmd.append('-m')
+ if self.skeleton is not None:
+ cmd.append('-k')
+ cmd.append(self.skeleton)
+
cmd.append(self.name)
(rc, out, err) = self.execute_command(cmd)
@@ -1439,6 +1472,7 @@
remove=dict(default='no', type='bool'),
# following options are specific to useradd
createhome=dict(default='yes', type='bool'),
+ skeleton=dict(default=None, type='str'),
system=dict(default='no', type='bool'),
# following options are specific to usermod
append=dict(default='no', type='bool'),
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment