Удаление пользователя установки с помощью Packer
Когда виртуальная машина создается впервые, она получает пользователя для установки, который используется для запуска подготовки. Я хочу удалить этого пользователя на последнем шаге, потому что он не обязательно безопасен и не нужен. Однако Packer запускает всех провайдеров от имени этого пользователя. Я пытался использовать Ansible, но он все еще использует этого пользователя в некоторой степени, и поэтому Plays книга Ansible не может удалить его без сбоев (говоря, что программы все еще работают от имени данного пользователя). Вместо того, чтобы суетиться, я спрашиваю, есть ли у кого-нибудь какие-либо идеи относительно того, как достичь этой цели, которая должна быть простой и оказалась не такой.
3 ответа
Запланируйте задание cron для удаления пользователя с помощью @reboot
или добавьте несколько строк в сценарии rc, чтобы сделать то же самое.
Я нашел другой способ, который работает с упаковщиком 1.7 для QEMU, VMware и VirtualBox. Удалить пользователя можно с помощью команды завершения работы. Этот метод предполагает, что у пользователя есть доступ к sudo.
shutdown_command = "sudo su root -c \"userdel -rf packer; rm /etc/sudoers.d/90-cloud-init-users; /sbin/shutdown -hP now\""
Я понимаю, что это довольно старый вопрос, но мне не понравилась идея использовать cronjob (или cloud-init, или все, что происходит после того, как будет создан экземпляр изображения) для этого, и я нашел то, что я считаю лучшим Решение с использованием самого упаковщика. Это работает в пакере 1.4:
{
"type": "shell",
"skip_clean": true,
"execute_command": "chmod +x {{ .Path }}; sudo env {{ .Vars }} {{ .Path }} ; rm -f {{ .Path }}",
"inline": [
"rm -f /etc/sudoers.d/90-cloud-init-users",
"/usr/sbin/userdel -r -f fedora",
]
}
Это предполагает, что ваш пользователь установки назван fedora
- это использует Пакера skip_clean
возможность пропустить удаление сценария оболочки после inline
раздел завершается (что, учитывая, что fedora
пользователь больше не существует, гарантированно потерпел неудачу).
Также обратите внимание, что если у вас включена переадресация агента SSH с упаковщиком, это может оставить следы сокета агента на изображении.