diff options
-rw-r--r-- | cloudinit/distros/freebsd.py | 20 | ||||
-rw-r--r-- | config/cloud.cfg-freebsd | 10 |
2 files changed, 21 insertions, 9 deletions
diff --git a/cloudinit/distros/freebsd.py b/cloudinit/distros/freebsd.py index 10f9e7e0..c59a074b 100644 --- a/cloudinit/distros/freebsd.py +++ b/cloudinit/distros/freebsd.py @@ -238,9 +238,21 @@ class Distro(distros.Distro): util.logexc(LOG, "Failed to create user %s", name) raise e - # TODO: def set_passwd(self, user, passwd, hashed=False): - return False + cmd = ['pw', 'usermod', user] + + if hashed: + cmd.append('-H') + else: + cmd.append('-h') + + cmd.append('0') + + try: + util.subp(cmd, passwd, logstring="chpasswd for %s" % user) + except Exception as e: + util.logexc(LOG, "Failed to set password for %s", user) + raise e def lock_passwd(self, name): try: @@ -394,10 +406,10 @@ class Distro(distros.Distro): cmd.extend(pkglist) # Allow the output of this to flow outwards (ie not be captured) - util.subp(cmd, env=e, capture=False) + util.subp(cmd, env=e, capture=False) def set_timezone(self, tz): - return + distros.set_etc_timezone(tz=tz, tz_file=self._find_tz_file(tz)) def update_package_sources(self): self._runner.run("update-sources", self.package_command, diff --git a/config/cloud.cfg-freebsd b/config/cloud.cfg-freebsd index 5ac181ff..be664f5d 100644 --- a/config/cloud.cfg-freebsd +++ b/config/cloud.cfg-freebsd @@ -49,10 +49,10 @@ cloud_config_modules: # - mounts - ssh-import-id - locale -# - set-passwords -# - package-update-upgrade-install + - set-passwords + - package-update-upgrade-install # - landscape -# - timezone + - timezone # - puppet # - chef # - salt-minion @@ -80,9 +80,9 @@ cloud_final_modules: system_info: distro: freebsd default_user: - name: beastie + name: freebsd lock_passwd: True gecos: FreeBSD groups: [wheel] sudo: ["ALL=(ALL) NOPASSWD:ALL"] - shell: /bin/sh + shell: /bin/tcsh |