Я использую cloud-init для настройки машин AWS EC2 под управлением Ubuntu 14.04. Одна из наиболее полезных функций 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 что еще можно сделать?
Я ударил то же самое ошибка # 1231541. Поскольку у меня возникла проблема в OpenStack, я использовал упаковщик, чтобы перестроить образ и изменить порядок модулей cloud-init. Дальше все заработало как положено.