Удаление пользователя установки с помощью 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 с упаковщиком, это может оставить следы сокета агента на изображении.

Другие вопросы по тегам