sir*_*ide 4 user-management ansible packer
首次创建 VM 时,它会获得一个用于运行配置的安装用户。我想在最后一步删除该用户,因为它不一定安全而且没有必要。但是,Packer 以该用户身份运行所有配置程序。我尝试过使用 Ansible,但它似乎仍然以某种身份使用该用户,因此 Ansible 剧本实际上无法在不失败的情况下删除它(也就是说有程序仍在以给定用户身份运行)。我不是在胡言乱语,而是问是否有人对如何实现这个目标有任何想法,这应该很简单,但事实证明并非如此。
小智 6
我找到了另一种适用于 QEMU、VMware 和 VirtualBox 的 Packer 1.7 的方法。您可以在 shutdown 命令中删除该用户。此方法假设用户具有 sudo 访问权限。
shutdown_command = "sudo su root -c \"userdel -rf packer; rm /etc/sudoers.d/90-cloud-init-users; /sbin/shutdown -hP now\""
Run Code Online (Sandbox Code Playgroud)
我意识到这是一个相当老的问题,但我不喜欢为此使用 cronjob (或 cloud-init,或实例化图像后发生的任何事情)的想法,并发现我发现的是使用打包器本身更好的解决方案。这在 Packer 1.4 中有效:
\n\n{\n "type": "shell",\n "skip_clean": true,\n "execute_command": "chmod +x {{ .Path }}; sudo env {{ .Vars }} {{ .Path }} ; rm -f {{ .Path }}",\n "inline": [\n "rm -f /etc/sudoers.d/90-cloud-init-users",\n "/usr/sbin/userdel -r -f fedora",\n ]\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n假设您的安装用户名为fedora
\xe2\x80\x94,它会利用 Packer\ 的skip_clean
选项在该部分完成后跳过 shell 脚本的删除inline
(假设该fedora
用户不再存在,则肯定会失败)。
另请注意,如果您使用打包程序打开了 SSH 代理转发,则可能会在映像中留下代理套接字的痕迹。
\n