Ansible:从无密码用户变为

Ansible:从无密码用户变为

我有一个没有密码的用户,并且希望 Ansible 能够以sudo该用户的身份使用,而无需添加NOPASSWD到 sudoers 文件中。Ansible 抱怨:FAILED! => {"msg": "Missing sudo password"}

更详细地说:有两个用户,my_userrootroot受密码保护。my_user没有密码,可通过私有 SSH 密钥访问。sudoers 文件包含%sudo ALL=(ALL:ALL) ALL。手动尝试使用sudofrommy_user可以正常工作,而不会收到任何密码提示。

剧本:

- name: VM deployment
  hosts: localhost
  gather_facts: false
    - name: "Add the VM as an ansible host"
      ansible.builtin.add_host:
        name: '{{ my_ip }}'
        groups:
          - my_vm
        ansible_ssh_private_key_file: "~/.ssh/id_rsa"
        ansible_user: 'my_user'

- name: "VM configuration"
  hosts: my_vm
  gather_facts: false
    - name: Install some packages
      ansible.builtin.apt:
        deb: "/tmp/somepackage.deb"
      become: true  # FAILED! => {"msg": "Missing sudo password"}
      become_method: sudo

从现有问题来看,我发现更改 sudoers 行可以%sudo ALL=(ALL:ALL) NOPASSWD:ALL解决问题。我宁愿不这样做,因为对于这个用户(已经没有密码)来说,这应该不是必要的:

    # This works
    - name: Install some packages
      ansible.builtin.command:
        cmd: 'sudo apt-get install -y /tmp/somepackage.deb'

是否有一个好的方法可以使它不经过编辑而工作/etc/sudoers

相关内容