【发布时间】:2018-06-09 14:56:07
【问题描述】:
testuser 是 sudo 用户,
sudo cat /etc/sudoers.d/90-cloud-init-testuser
testuser ALL=(ALL) NOPASSWD:ALL
我可以手动登录 testuser 并在没有密码的情况下运行:
sudo -H apt-get update
sudo -H apt-get upgrade
但如果我按照 ansible 代码运行,虽然我看到 whoami 命令返回 testuser,但代码会因致命错误而停止(请参阅下面的代码和错误)。
我必须将 become_user 设置为 root 才能运行(请参阅我注释掉的行)?注意我可以手动登录 testuser 并运行 sudo 命令,我不能使用 become_user=testuser 来安装 apt 吗?注意我认为remote_user没有关系,因为whoami命令只依赖become_user。实际上我觉得remote_user没用,它只是让我登录。如果become_user未设置。然后 whoami 成为 root,如果 become_user 设置为 testuser,则 whoami 成为 testuser。
- hosts: all
remote_user: ubuntu
become: yes
become_user: testuser
gather_facts: yes
become_method: sudo
tasks:
- name: test which user I am
shell: whomami
register: hello
- debug: msg="{{ hello.stdout }}"
- name: Update and upgrade apt.
# become_user: root
# become: yes
apt: update_cache=yes upgrade=dist cache_valid_time=3600
TASK [Update and upgrade apt.]
********************************
fatal: [XX.XX.XX.XX]: FAILED! => {"changed": false, "msg":
"'/usr/bin/apt-get dist-upgrade' failed: E: Could not open lock file
/var/lib/dpkg/lock - open (13: Permission denied)\nE: Unable to lock
the administration directory (/var/lib/dpkg/), are you root?\n", "rc":
100, "stdout": "", "stdout_lines": []}
【问题讨论】:
标签: ansible