实际上我已经为每个主机组定义了remote_user变量。但是remote_user值不是从定义的值中获取的。而是使用最高指定值。
Ansible版本:
# ansible --version
ansible 2.3.1.0
config file = /etc/ansible/ansible.cfg
configured module search path = Default w/o overrides
python version = 2.7.12 (default, Jul 1 2016, 15:12:24) [GCC 5.4.0 20160609]
Playbook文件:info.yml
---
- hosts: all
remote_user: demo
roles:
- common
- hosts: devlocal
remote_user: root
become: yes
roles:
- common
- hosts: testlocal
remote_user: test
become: yes
roles:
- common
当我为主机[devlocal]运行剧本时,用户名取自第一个作业[即:" demo" ]。实际上它应该使用remote_user" root"就我而言。
日志:
# ansible-playbook -i hosts -l devlocal info.yml --ask-pass -vvvv
Using /etc/ansible/ansible.cfg as config file
SSH password:
Loading callback plugin default of type stdout, v2.0 from /usr/lib/python2.7/dist-packages/ansible/plugins/callback/__init__.pyc
PLAYBOOK: site.yml ********************************************************************************************************************************
3 plays in site.yml
PLAY [all] ****************************************************************************************************************************************
TASK [Gathering Facts] ****************************************************************************************************************************
Using module file /usr/lib/python2.7/dist-packages/ansible/modules/system/setup.py
<10.11.12.213> ESTABLISH SSH CONNECTION FOR USER: demo
有人请帮助解决这里的问题。提前致谢
答案 0 :(得分:0)
有人请帮助解决这里的问题。
此处的问题是您指定了第一个以demo
运行的游戏:
- hosts: all
remote_user: demo
roles:
- common
Ansible将其作为demo
运行,这似乎不是您的目标。
这就是Ansible提供inventory mechanism的原因,因此您可以为每个主机指定连接详细信息,而不是在播放中。
答案 1 :(得分:0)
我为每个主机组定义了remote_user变量
错误。您为每个游戏定义了remote_user
而不是主机组
主机和组通过库存定义
因此,您应该定义devlocal
和testlocal
分组ansible_user
。
单打:
- hosts: all
roles:
- common