Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法通过ansible对新创建的Ubuntu用户使用sudo_Ubuntu_Ssh_Vagrant_Ansible_Ubuntu 16.04 - Fatal编程技术网

无法通过ansible对新创建的Ubuntu用户使用sudo

无法通过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

我正在使用vagrant运行Xenial 16.04虚拟机。虚拟机是由一个流浪用户提供的,这个流浪用户的密码没有root用户的密码,尽管Ubuntu仍然需要一个密码,如果你用ssh连接到它root@ubuntu-虚拟机 为了模拟生产VPS,我使用以下剧本创建了一个deployer用户:

- 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,显然这两个属性都无效。