【问题标题】:User creation with Cloud-init使用 Cloud-init 创建用户
【发布时间】:2013-12-16 15:43:29
【问题描述】:

我正在使用我的 vm 加载以下 cloud-init 脚本:

#cloud-config
# Add groups to the system
# The following example adds the ubuntu group with members foo and bar and
# the group cloud-users.
groups:
  - ugroup

# Add users to the system. Users are added after groups are added.
users:
  - default
  - name: user
    gecos: Testbed as a Service
    primary-group: ugroup
    groups: admin
    passwd: $6$rounds=4096$4pFvtqM5ldfLzR0hE9r7XSOoCO22lN7OB49IopWQ7SQrB5GBTR8X8okMpxXXQZ0jqUOuy4wKY.iYzwQTo7vH6zKx0DqjTFe6jh1

runcmd:
  - [passwd, user, '-u']

但似乎我做错了什么

由于我收到以下错误:

passwd: user 'user' does not exist
run-parts: /var/lib/cloud/instance/scripts/runcmd exited with return code 1
2013-12-16 15:15:09,028 - cc_scripts_user.py[WARNING]: failed to run-parts in /var/lib/cloud/instance/scripts
2013-12-16 15:15:09,087 - __init__.py[WARNING]: Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/cloudinit/CloudConfig/__init__.py", line 108, in run_cc_modules
    cc.handle(name, run_args, freq=freq)
  File "/usr/lib/python2.7/dist-packages/cloudinit/CloudConfig/__init__.py", line 72, in handle
    [ name, self.cfg, self.cloud, cloudinit.log, args ])
  File "/usr/lib/python2.7/dist-packages/cloudinit/__init__.py", line 309, in sem_and_run
    func(*args)
  File "/usr/lib/python2.7/dist-packages/cloudinit/CloudConfig/cc_scripts_user.py", line 27, in handle
    util.runparts(runparts_path)
  File "/usr/lib/python2.7/dist-packages/cloudinit/util.py", line 140, in runparts
    raise subprocess.CalledProcessError(sp.returncode,cmd)
CalledProcessError: Command '['run-parts', '--regex', '.*', '/var/lib/cloud/instance/scripts']' returned non-zero exit status 1

2013-12-16 15:15:09,100 - __init__.py[ERROR]: config handling of scripts-user, None, [] failed

对我的问题有任何提示或解决方案吗?

【问题讨论】:

  • 您似乎在添加用户“user”,而不是“taas”。
  • 对不起,我正在编辑文本,跳过了这一个我终于解决了这个,问题是创建图像的网络没有访问cloud-init服务/api。

标签: openstack ec2-api-tools cloud-init


【解决方案1】:

我意识到这个问题已经很老了,但我确实运行了一个测试来验证它在当前的 16.04 Ubuntu 映像中是否正常工作。

lxd 可用于非常快速地创建实例和测试 cloud-init 配置。假设你已经设置了 lxd,我做了:

$ cat ud.yaml
#cloud-config
# Add groups to the system
# The following example adds the ubuntu group with members foo and bar and
# the group cloud-users.
groups:
  - ugroup

# Add users to the system. Users are added after groups are added.
users:
  - default
  - name: user
    gecos: Testbed as a Service
    primary-group: ugroup
    groups: admin
    passwd: $6$rounds=4096$4pFvtqM5ldfLzR0hE9r7XSOoCO22lN7OB49IopWQ7SQrB5GBTR8X8okMpxXXQZ0jqUOuy4wKY.iYzwQTo7vH6zKx0DqjTFe6jh1

runcmd:
  - [passwd, user, '-u']

$ lxc launch ubuntu-daily:xenial xuser-test \
     "--config=user.user-data=$(cat ud.yaml)"

$ lxc exec xuser-test /bin/bash

# ls -l /home/
total 2
drwxr-xr-x 3 ubuntu ubuntu 6 Jul 18 18:47 ubuntu
drwxr-xr-x 2 user   ugroup 5 Jul 18 18:47 user

# tail -n 2 /etc/group
ugroup:x:1000:
ubuntu:x:1001:

# tail -n 2 /etc/passwd
ubuntu:x:1000:1001:Ubuntu:/home/ubuntu:/bin/bash
user:x:1001:1000:Testbed as a Service:/home/user:

# grep passwd /var/log/cloud-init-output.log
passwd: password expiry information changed.

如果这仍然是您的问题,请file a bug反对 cloud-init。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-20
    • 1970-01-01
    • 1970-01-01
    • 2018-10-09
    • 2022-01-16
    • 2016-08-23
    • 2021-10-18
    • 2021-08-02
    相关资源
    最近更新 更多