summaryrefslogtreecommitdiff
path: root/cloudinit
diff options
context:
space:
mode:
Diffstat (limited to 'cloudinit')
-rw-r--r--cloudinit/config/cc_users_groups.py14
-rw-r--r--cloudinit/distros/__init__.py28
-rw-r--r--cloudinit/distros/ubuntu.py32
-rw-r--r--cloudinit/util.py7
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