我正在尝试运行一个简单的Ansible剧本,其中显示了“主”目录的内容。
它运行成功,但是当我使用时:
become_user: "{{ TARGET_USER }}"
我收到错误消息:
"sudo: a password is required\r\n"
“ Ansible用户”是“ blnapp1”,“目标用户”是“ couchbase”
我在sudoers文件中添加了对“ blnapp1”和“ couchbase”用户的权限,如下所示:
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
blnapp1 ALL=(ALL) NOPASSWD: ALL
blnapp1 ALL=(ALL) ALL
ansible ALL= NOPASSWD: /home/blnapp1/playbook #path to playbook
couchbase ALL=(ALL) NOPASSWD: ALL
couchbase ALL=(ALL) ALL
我还将所有彼此的ssh公钥添加到/.ssh/authorized_keys
这是我的库存文件:
web1 ansible_host=**** ansible_connection=local
[couchbase-install:children]
couchbase_cluster_nodes
couchbase_server_nodes
[couchbase_cluster_nodes]
primary1 ansible_host=**** ansible_user=blnapp1 TARGET_USER=couchbase couchbase_primary_cluster_node=**** couchbase_cluster_admin_port=*** couchbase_bucket_name=exampleBucket group_server=default
[couchbase_server_nodes]
[all:vars]
#configuration_mode can be vars or cc
configuration_mode=vars
couchbase_data_path="/userdata/data/CB/var/lib/couchbase/data"
couchbase_index_path= "/userdata/data/CB/var/lib/couchbase/data"
yum_path="sudo /bin/yum"
#couchbase_admin="Administrator"
#couchbase_password="Administrator"
这是我的剧本:
---
- name: I-test
hosts: primary1
become: true
become_user: "{{ TARGET_USER }}"
tasks:
- debug:
msg: 'TARGET_USER is: "{{ TARGET_USER }}"'
- name: show repo content
shell:
cmd: ls -la /home
我发现的唯一方法是将“ blnapp1”用户添加到“ wheel”组。但是,我真的不希望“ blnapp1”具有“转轮”权限。
谢谢!
答案 0 :(得分:0)
blnapp1 ALL=(ALL) NOPASSWD: ALL
blnapp1 ALL=(ALL) ALL
那两行基本上说明了完全相同的事情:让blnapp1
以任何人的身份启动任何命令。但是第一个告诉sudo
不要要求输入密码,而第二个则不需要。
并且在针对debian:buster
码头工人映像进行快速测试之后,在这种情况下,它似乎只出现了遇到规则的最后一行,使得sudo
总是要求输入密码。
只需删除sudoers文件中的第二行。请注意,您的couchbase
用户遇到了完全相同的问题。