gpt4 book ai didi

Ansible 使用了错误的主机设置

转载 作者:行者123 更新时间:2023-12-05 02:18:11 27 4
gpt4 key购买 nike

考虑以下主机文件:

[initial]
74.125.224.72 ansible_user=root

[default]
74.125.224.72 ansible_user=deploy ansible_port=2222

我有一个名为 initial.ymlhosts: initial 剧本和另一个名为 site.ymlhosts: default 剧本。

问题是,如果我运行 ansible-playbook initial.yml ,它会在尝试以部署在端口 2222 上的用户身份登录时失败。它不应该仅以 root 用户身份在端口 22 上登录吗?

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

环境:

  • Ansible 2.3.1.0
  • python 2.7.13
  • Ubuntu 17.04

/etc/ansible//etc/ssh/下的文件没有被修改

编辑:我已经能够通过为 initial.yml 使用不同的 hosts 文件并使用 ansible-playbook --inventory-file=initial.ini 指定它来解决这个问题.

最佳答案

似乎对于 Ansible,在同一文件中两次定义同一主机会导致第二个定义覆盖第一个。来自Ansible docs :

Within any section, redefining a var will overwrite the previous instance. If multiple groups have the same variable, the last one loaded wins. If you define a variable twice in a play’s vars: section, the 2nd one wins.

您必须以某种方式解决这个问题,方法是使用多个主机文件、从命令行指定主机或使用您提到的解决方法。另一个可行的方法是更改​​ hash_behavior:

the previous describes the default config hash_behavior=replace, switch to ‘merge’ to only partially overwrite.

关于Ansible 使用了错误的主机设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46160980/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com