考虑以下主机文件:
[initial]
74.125.224.72 ansible_user=root
[default]
74.125.224.72 ansible_user=deploy ansible_port=2222
我有一个名为initial.yml的手册,带有 hosts: initial
,另一个名为site.yml,带有 hosts: default
.
问题是,如果我运行 ansible-playbook initial.yml
,它在尝试以端口2222上的用户部署登录时失败 . 它不应该只是在端口22上以root用户身份登录吗?
initial.yml的内容(注释掉角色也没有区别):
---
- hosts: initial
roles:
- { role: common, tags: common }
- { role: login, tags: login }
ansible.cfg
的内容:
[defaults]
inventory = ./hosts.ini
roles_path = ./.tmp
retry_files_enabled = False
Environment:
-
Ansible 2.3.1.0
-
Python 2.7.13
-
Ubuntu 17.04
/etc/ansible/
或 /etc/ssh/
下的文件尚未修改 .
EDIT: 我已经能够通过为initial.yml使用不同的hosts文件并使用 ansible-playbook --inventory-file=initial.ini
指定它来解决此问题 .
2 回答
似乎使用Ansible,在同一文件中两次定义相同的主机会导致第二个定义覆盖第一个 . 来自Ansible docs:
您将不得不以某种方式解决这个问题,方法是使用多个主机文件,从命令行指定主机,或使用您提到的解决方法 . 可能有效的另一个选择是更改
hash_behavior
:请试试这个:
这里
-i
表示您的库存文件,-l
表示将剧本限制为一个组 .