Назад | Перейти на главную страницу

Неправильный порядок модулей cloud-init, как исправить?

Я использую 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. Дальше все заработало как положено.