一些 ubuntu 云镜像,例如这个: http://cloud-images.ubuntu.com/vagrant/precise/20140120/precise-server-cloudimg-amd64-vagrant-disk1.box
有文件/etc/sudoers.d/vagrant,内容为 vagrant ALL=(ALL) NOPASSWD:ALL
没有它,因此使用 sudo_user 的 ansible 命令不起作用。
我可以添加文件:
- name: ensure Vagrant is a sudoer
copy: content="vagrant ALL=(ALL) NOPASSWD:ALL" dest=/etc/sudoers.d/vagrant owner=root group=root
sudo: yes
我想知道 Vagrant 是否应该做一些事情,因为这个任务 在真实(非 Vagrant )机器上运行 ansible playbook 时不适用。
最佳答案
Vagrant 需要对虚拟机进行特权访问,可以使用 config.ssh.username = "root",或更常见的是通过 sudo 。 Bento Ubuntu 盒子目前configure它直接到/etc/sudoers。
我不知道 ansible 的 sudo_user 的作用或含义,但我猜你的配置覆盖了/etc/sudoers。在这种情况下,您确实需要确保不会丢失 Vagrant 对虚拟机的 sudo 访问权限。或者使用 sudoers.d 构建您自己的基础框。
顺便说一句,如果您创建/etc/sudoers.d/文件,您还应该将其模式设置为 0440 或至少某些较旧的 sudo 版本拒绝应用它。
关于vagrant - Vagrant 是否创建/etc/sudoers.d/vagrant 文件,还是需要手动添加才能使用ansible sudo_user?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22415160/