Ansible:play_file中的remote_user问题

时间:2017-11-03 11:25:05

标签: ansible ansible-2.x

实际上我已经为每个主机组定义了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

有人请帮助解决这里的问题。提前致谢

2 个答案:

答案 0 :(得分:0)

  

有人请帮助解决这里的问题。

此处的问题是您指定了第一个以demo运行的游戏:

- hosts: all
  remote_user: demo 
  roles:
  - common

Ansible将其作为demo运行,这似乎不是您的目标。

这就是Ansible提供inventory mechanism的原因,因此您可以为每个主机指定连接详细信息,而不是在播放中。

答案 1 :(得分:0)

  

我为每个主机组定义了remote_user变量

错误。您为每个游戏定义了remote_user而不是主机组 主机和组通过库存定义 因此,您应该定义devlocaltestlocal分组ansible_user

单打:

- hosts: all
  roles:
  - common