无法通过ansible对新创建的Ubuntu用户使用sudo
我正在使用vagrant运行Xenial 16.04虚拟机。虚拟机是由一个流浪用户提供的,这个流浪用户的密码没有root用户的密码,尽管Ubuntu仍然需要一个密码,如果你用ssh连接到它root@ubuntu-虚拟机 为了模拟生产VPS,我使用以下剧本创建了一个deployer用户:无法通过ansible对新创建的Ubuntu用户使用sudo,ubuntu,ssh,vagrant,ansible,ubuntu-16.04,Ubuntu,Ssh,Vagrant,Ansible,Ubuntu 16.04,我正在使用vagrant运行Xenial 16.04虚拟机。虚拟机是由一个流浪用户提供的,这个流浪用户的密码没有root用户的密码,尽管Ubuntu仍然需要一个密码,如果你用ssh连接到它root@ubuntu-虚拟机 为了模拟生产VPS,我使用以下剧本创建了一个deployer用户: - user: name: deployer groups: admin password: "{{ deployer_password }}" shell: /bin/bash
- user:
name: deployer
groups: admin
password: "{{ deployer_password }}"
shell: /bin/bash
- name: "read authorized keys from root user"
become_user: vagrant
command: "cat ~/.ssh/authorized_keys"
register: "root_authorized_keys"
- debug: msg="{{root_authorized_keys}}"
- name: "create .ssh dir for deployer"
file: path="/home/deployer/.ssh" state=directory
- name: "copy authorized keys to deployer user"
shell: "echo '{{root_authorized_keys.stdout}}' > /home/deployer/.ssh/authorized_keys"
- name: "chown the authorized_keys file"
file: path="/home/deployer/.ssh" recurse=yes mode=0700 owner="deployer"
当我潜入deployer@ubuntu-vm我被要求输入密码,然后我按预期登录vm。在我为部署者用户输入密码后,sudo和sudo su也会按预期工作
当我试图通过Ansible playbook或Ansible临时命令执行sudo时,问题就出现了
请注意我对以下4个Ansible命令的响应:
$ ansible all -m ping -u vagrant
ubuntu-vm | SUCCESS => {
"changed": false,
"ping": "pong"
}
$ ansible all -m ping -u deployer
ubuntu-vm | SUCCESS => {
"changed": false,
"ping": "pong"
}
$ ansible all -m ping -u vagrant --sudo
ubuntu-vm | SUCCESS => {
"changed": false,
"ping": "pong"
}
$ ansible all -m ping -u deployer --sudo
ubuntu-vm | FAILED! => {
"changed": false,
"failed": true,
"module_stderr": "sudo: a password is required\n",
"module_stdout": "",
"msg": "MODULE FAILURE"
}
成功使用sudo for deployer需要哪些选项
还要考虑到UbuntuVM主机的远程用户将同时是vagrant和deployer用户。如果可能的话,我想在playbook示例中使用这两种方法:我使用vagrant用户创建deployer用户,然后使用deployer用户进行其他播放Try-ask sudo pass
它将提示输入密码
ansible all -m ping -u deployer --sudo --ask-sudo-pass
在Ansible 1.9+中,建议使用-been和-ask-been-pass,因为不推荐使用-sudo和-ask-sudo-pass 这也可以与ansible playbook一起使用吗?如果是,我如何为多个用户传递密码?请参阅我在上面的问题后所写的斜体文字-如果我只需要为一个用户传递密码,则“询问成为传递”有效,但我不知道如何为多个用户传递密码。我认为除非使用Ansible Vault,否则无法为多个用户传递密码。请看:我确实使用Ansible Vault。您在上面的用户创建任务中看到的deployer_密码变量来自使用ansible-vault加密的secrets.yml文件。在用户创建过程中使用deployer_密码是非常简单的。我只需要设置密码属性。我尝试为游戏设置password/ansible\u been\u pass属性,其中远程用户设置为deployer,显然这两个属性都无效。