diff options
Diffstat (limited to 'cloudinit')
-rw-r--r-- | cloudinit/config/cc_users_groups.py | 14 | ||||
-rw-r--r-- | cloudinit/distros/__init__.py | 28 | ||||
-rw-r--r-- | cloudinit/distros/ubuntu.py | 32 | ||||
-rw-r--r-- | cloudinit/util.py | 7 |
4 files changed, 29 insertions, 52 deletions
diff --git a/cloudinit/config/cc_users_groups.py b/cloudinit/config/cc_users_groups.py index cbb351dc..1e241623 100644 --- a/cloudinit/config/cc_users_groups.py +++ b/cloudinit/config/cc_users_groups.py @@ -16,22 +16,12 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. -import grp -import os -import pwd -import traceback - from cloudinit.settings import PER_INSTANCE -from cloudinit import ssh_util -from cloudinit import templater -from cloudinit import util frequency = PER_INSTANCE def handle(name, cfg, cloud, log, _args): - groups_cfg = None - users_cfg = None user_zero = None if 'groups' in cfg: @@ -43,7 +33,7 @@ def handle(name, cfg, cloud, log, _args): elif isinstance(values, str): cloud.distro.create_group(name, values.split(',')) else: - cloud.distro.create_group(item, []) + cloud.distro.create_group(group, []) if 'users' in cfg: user_zero = None @@ -63,7 +53,7 @@ def handle(name, cfg, cloud, log, _args): if user_zero == name: user_zero = cloud.distro.get_default_user() - except NotImplementedError as e: + except NotImplementedError: if user_zero == name: user_zero = None diff --git a/cloudinit/distros/__init__.py b/cloudinit/distros/__init__.py index 1f46c5aa..12a0d9b4 100644 --- a/cloudinit/distros/__init__.py +++ b/cloudinit/distros/__init__.py @@ -46,16 +46,33 @@ LOG = logging.getLogger(__name__) class Distro(object): __metaclass__ = abc.ABCMeta + default_user = None def __init__(self, name, cfg, paths): self._paths = paths self._cfg = cfg self.name = name - self.default_user = None @abc.abstractmethod def add_default_user(self): - raise NotImplementedError() + # Adds the distro user using the rules: + # - Password is same as username but is locked + # - nopasswd sudo access + + user = self.get_default_user() + if not user: + raise NotImplementedError("No Default user") + + self.create_user(user, + plain_text_passwd=user, + home="/home/%s" % user, + shell="/bin/bash", + lockpasswd=True, + gecos="%s%s" % (user[0:1].upper(),user[1:]), + sudo="ALL=(ALL) NOPASSWD:ALL") + + LOG.info("Added default '%s' user with passwordless sudo", user) + @abc.abstractmethod def install_packages(self, pkglist): @@ -186,11 +203,8 @@ class Distro(object): except KeyError: return False - def set_configured_user(self, name): - self.default_user = name - def get_default_user(self): - return None + return self.default_user def create_user(self, name, **kwargs): """ @@ -326,7 +340,7 @@ class Distro(object): def isgroup(self, name): try: - if grp.getgrpnam(name): + if grp.getgrnam(name): return True except: return False diff --git a/cloudinit/distros/ubuntu.py b/cloudinit/distros/ubuntu.py index a6d665e0..17584f15 100644 --- a/cloudinit/distros/ubuntu.py +++ b/cloudinit/distros/ubuntu.py @@ -21,48 +21,20 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. -from cloudinit import distros from cloudinit.distros import debian -from cloudinit import helpers from cloudinit import log as logging -from cloudinit.settings import PER_INSTANCE from cloudinit import util -import hashlib -import pwd - LOG = logging.getLogger(__name__) class Distro(debian.Distro): distro_name = 'ubuntu' - __default_user_name__ = 'ubuntu' + default_user = 'ubuntu' def __init__(self, name, cfg, paths): - distros.Distro.__init__(self, name, cfg, paths) - # This will be used to restrict certain - # calls from repeatly happening (when they - # should only happen say once per instance...) - self._runner = helpers.Runners(paths) - - def get_default_user(self): - return self.__default_user_name__ - - def add_default_user(self): - # Adds the ubuntu user using the rules: - # - Password is 'ubuntu', but is locked - # - nopasswd sudo access - - self.create_user(self.__default_user_name__, - plain_text_passwd=self.__default_user_name__, - home="/home/%s" % self.__default_user_name__, - shell="/bin/bash", - lockpasswd=True, - gecos="Ubuntu", - sudo="ALL=(ALL) NOPASSWD:ALL") - - LOG.info("Added default 'ubuntu' user with passwordless sudo") + super(Distro, self).__init__(self, name, cfg, paths) def create_user(self, name, **kargs): diff --git a/cloudinit/util.py b/cloudinit/util.py index 7f47341a..6872cc31 100644 --- a/cloudinit/util.py +++ b/cloudinit/util.py @@ -1330,7 +1330,8 @@ def delete_dir_contents(dirname): del_file(node_fullpath) -def subp(args, data=None, rcs=None, env=None, capture=True, shell=False, logstring=False): +def subp(args, data=None, rcs=None, env=None, capture=True, shell=False, + logstring=False): if rcs is None: rcs = [0] try: @@ -1339,8 +1340,8 @@ def subp(args, data=None, rcs=None, env=None, capture=True, shell=False, logstri LOG.debug(("Running command %s with allowed return codes %s" " (shell=%s, capture=%s)"), args, rcs, shell, capture) else: - LOG.debug(("Running hidden command to protect sensitive input/output " - " logstring: %s"), logstring) + LOG.debug(("Running hidden command to protect sensitive " + "input/output logstring: %s"), logstring) if not capture: stdout = None |