pap*_*ito 5 ansible ansible-2.x
我在我的中定义了以下内容ansible.cfg
# default user to use for playbooks if user is not specified
# (/usr/bin/ansible will use current user as default)
remote_user = ansible
Run Code Online (Sandbox Code Playgroud)
然而,我有一本剧本bootstrap.yaml,我可以在其中联系root而不是ansible
---
- hosts: "{{ target }}"
become: no
gather_facts: false
remote_user: root
vars:
os_family: "{{ osfamily }}}"
roles:
- role: papanito.bootstrap
Run Code Online (Sandbox Code Playgroud)
然而,它似乎remote_user: root被忽略了,因为我总是收到连接错误,因为它使用用户ansible而不是rootssh 连接
fatal: [node001]: UNREACHABLE! => {"changed": false,
"msg": "Failed to connect to the host via ssh:
ansible@node001: Permission denied (publickey,password).",
"unreachable": true}
Run Code Online (Sandbox Code Playgroud)
我能找到的唯一解决方法是使用 调用剧本-e ansible_user=root。但这并不方便,因为我想用 调用多个剧本site.yaml,其中第一个剧本必须用 运行ansible_user root,而其他剧本必须用ansible
- import_playbook: playbooks/bootstrap.yml
- import_playbook: playbooks/networking.yml
- import_playbook: playbooks/monitoring.yml
Run Code Online (Sandbox Code Playgroud)
我缺少什么或如何解决它有什么建议吗?
问:“remote_user:root 被忽略”
答:剧本按预期运作
- hosts: test_01
gather_facts: false
become: no
remote_user: root
tasks:
- command: whoami
register: result
- debug:
var: result.stdout
Run Code Online (Sandbox Code Playgroud)
给出
"result.stdout": "root"
Run Code Online (Sandbox Code Playgroud)
但是,该变量可以在清单中被覆盖。例如库存
$ cat hosts
all:
hosts:
test_01:
vars:
ansible_connection: ssh
ansible_user: admin
Run Code Online (Sandbox Code Playgroud)
结果是
"result.stdout": "admin"
Run Code Online (Sandbox Code Playgroud)
使用命令仔细检查库存
$ ansible-inventory --list
Run Code Online (Sandbox Code Playgroud)
可能还需要仔细检查角色- role: papanito.bootstrap
| 归档时间: |
|
| 查看次数: |
3884 次 |
| 最近记录: |