diff options
Diffstat (limited to 'cloudinit/distros/ubuntu.py')
| -rw-r--r-- | cloudinit/distros/ubuntu.py | 55 | 
1 files changed, 53 insertions, 2 deletions
| diff --git a/cloudinit/distros/ubuntu.py b/cloudinit/distros/ubuntu.py index 77c2aff4..423fee73 100644 --- a/cloudinit/distros/ubuntu.py +++ b/cloudinit/distros/ubuntu.py @@ -7,6 +7,7 @@  #    Author: Scott Moser <scott.moser@canonical.com>  #    Author: Juerg Haefliger <juerg.haefliger@hp.com>  #    Author: Joshua Harlow <harlowja@yahoo-inc.com> +#    Author: Ben Howard <ben.howard@canonical.com>  #  #    This program is free software: you can redistribute it and/or modify  #    it under the terms of the GNU General Public License version 3, as @@ -20,12 +21,62 @@  #    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 import util +from cloudinit.settings import PER_INSTANCE +import hashlib +import pwd  LOG = logging.getLogger(__name__)  class Distro(debian.Distro): -    pass + +    distro_name = 'ubuntu' +    __default_user_name__ = '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") + +    def create_user(self, name, **kargs): + +        if not super(Distro, self).create_user(name, **kargs): +            return False + +        if 'sshimportid' in kargs: +            cmd = ["sudo", "-Hu", name, "ssh-import-id"] + kargs['sshimportid'] +            LOG.debug("Importing ssh ids for user %s, post user creation." +                        % name) + +            try: +                util.subp(cmd, capture=True) +            except util.ProcessExecutionError as e: +                util.logexc(LOG, "Failed to import %s ssh ids", name) +                raise e + +        return True | 
