我正在使用 cloud-init 设置运行 Ubuntu 14.04 的 AWS EC2 机器。cloud-init 的一个更有用的功能是write_files
允许我在虚拟机初始化期间安装其他文件的模块。
write_files
有几个有用的功能,其中包括设置文件的所有者,如记录在这里。不幸的是,我似乎无法write_files
在 Ubuntu 14.04 中使用此功能将文件所有者设置为任何非系统帐户,因为添加用户的 cloud-init 模块 -“用户组”正在该部分之后运行write_files
。如果我将文件所有者设置为该部分中添加的用户users
(或在我的情况下为默认用户users
),即使我通过 uid 执行此操作,也会收到如下错误:
StandardError:('write-files', OSError("Unknown user or group: 'getpwnam(): name not found: ubuntu'",))
这似乎被编码到 /etc/cloud/cloud.cfg 中,其中包含以下部分:
cloud_init_modules:
- migrator
- seed_random
- bootcmd
- write-files
- growpart
- resizefs
- set_hostname
- update_hostname
- update_etc_hosts
- ca-certs
- rsyslog
- users-groups
- ssh
我在网上看到过一些cloud_init_modules
在 cloud-init 用户数据中进行设置的例子,但是如果我添加这样的部分并按照write-files
下的顺序排列users-groups
,似乎没有任何效果。
除了放弃write_files
并实施runcmd
基于的解决方法(如问题 #605670还有什么可以做的吗?
答案1
我打了同样的错误 #1231541。由于我在 OpenStack 中遇到了问题,因此我使用打包程序重建映像并更改 cloud-init 模块的顺序。之后一切都按预期运行。