Vagrant是否会创建/etc/sudoers.d/vagrant文​​件,还是需要手动添加以使用ansible sudo_user?

时间:2014-03-14 20:30:06

标签: vagrant ansible

一些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

其他方框,例如https://opscode-vm-bento.s3.amazonaws.com/vagrant/virtualbox/opscode_ubuntu-13.10_chef-provisionerless.box

没有它,因此带有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应该做些什么,因为这个任务 在真实(非流浪)机器上运行ansible playbook时将不适用。

1 个答案:

答案 0 :(得分:3)

Vagrant需要使用config.ssh.username = "root"或更常见地通过sudo对VM进行特权访问。 Bento Ubuntu框目前configure直接到/ etc / sudoers。

我不知道ansible的sudo_user是做什么或意味着什么,但我想你的配置是覆盖/ etc / sudoers。在这种情况下,您确实需要确保不会丢失Vagrant对VM的sudo访问权限。或者构建自己的基本框,使用sudoers.d。

作为旁注,如果你创建一个/etc/sudoers.d/文件,你也应该将它的模式设置为0440,或者至少有一些旧的sudo版本拒绝应用它。