我刚刚开始学习 ansible ,我配置了一个简单的剧本,其中使用无密码远程用户(称为 ansible)运行 apt install 命令,并添加了变为:true,如下面的代码所示。
---
- name: managig the ubuntu servers
hosts: ubuntu_servers
remote_user: ansible
become: true
become_method: sudo
become_user: root
tasks:
- name: Installing a pcakage on ubuntu servers
apt:
name: traceroute
state: present
update_cache: true
我确信用户 ansible 已配置为无密码 sudoer ,因为我直接在服务器上测试了它,但我总是收到此错误
致命:[服务器2]:失败! => {"msg": "缺少 sudo 密码"}
致命:[server3]:失败! => {"msg": "缺少 sudo 密码"}
我认为问题来自于
remote_user
。您在主机上下文中指定了 remote_user
,但似乎不起作用。我做了一些小测试:
库存文件中的默认组
<server name> ansible_host=<host ip> ansible_user=jenkins ansible_ssh_common_args='-o StrictHostKeyChecking=no'
我的剧本
---
- name: test
hosts: default
remote_user: wvcuser
tasks:
- name: whoami
shell: whoami
register: output
- debug:
var: output.stdout
输出:
...
ok: [devserver1] => {
"output.stdout": "jenkins"
}
...
一种策略性的方法是使用 ansible_user。