我使用的是 Mac OS X,并且Ansible。我忘了如何安装它了。我想通过pip
:
$ pip freeze
altgraph==0.12
ansible==1.9.2
无论如何,从我读的内容来看,应该有一个配置文件/etc/ansible/
,但该目录的内容只是:
$ ls -a /etc/ansible/
. .. .hosts.swp hosts roles
看起来好像也没有定义环境变量:
$ echo $ANSIBLE_CONFIG
# blank line
据我所知,Ansible 可以工作(没有本地,并且用户目录中的文件夹ansible.cfg
中没有任何内容),但我感到困惑。ansible
有人可以解释一下我在这里不明白什么吗?
答案1
据我所知Ansible配置文件(ansible.cfg
)可能位于此处,用于用户级配置设置:
~/.ansible.cfg
以及位于此处的系统范围的配置;您在其中声明找不到任何这样的文件:
/etc/ansible/ansible.cfg
如果您的系统上有多个用户,也许~/.ansible.cfg
您忘记了其中一个用户目录中存在浮动?
您声明您可能已经使用它安装了它pip
,但检查Ansible 的 Homebrew 公式, 它是9 月 4 日才从 1.9.2 版升级到 1.9.3 版。所以也许您是通过 Homebrew 安装的?
您主要关心的似乎是是否ansible.cfg
有必要:
据我所知,Ansible 可以工作(没有本地,并且用户目录中的文件夹
ansible.cfg
中没有任何内容),但我感到困惑。ansible
有人可以解释一下我在这里不明白什么吗?
是的,它应该可以正常工作,无需配置。对于大多数软件来说,配置文件所做的就是覆盖核心系统默认值。因此,如果ansible.cfg
缺少配置文件,Ansible 仍会工作,但只能使用核心系统默认值。如Ansible 官方文档:
Ansible 中的某些设置可通过配置文件进行调整。 对于大多数用户来说,常规配置应该足够了,但您可能出于某些原因想要更改它们。
可以在配置文件中进行和使用更改,这些更改将按以下顺序处理:
* ANSIBLE_CONFIG (an environment variable) * ansible.cfg (in the current directory) * .ansible.cfg (in the home directory) * /etc/ansible/ansible.cfg
答案2
公式将中的homebrew
字符串替换为。对我来说这似乎是个坏兆头。/etc/ansible
constants.py
/usr/local/etc/ansible
/usr/local/etc/ansible
之后我没有brew install ansible
。但是,我确实确认过,如果你在那里输入有效值ansible.cfg
,它将被遵守(目前)。
我的建议:
- 不要使用
brew
安装Ansible
。 - 明确说明您的配置不依赖于系统环境全局变量,例如
/etc/ansible/ansible.cfg
。
代码参考:
brew ansible 公式替换 #475:https://github.com/Homebrew/homebrew/blob/master/Library/Formula/ansible.rb#L475
ansible 常量.py #61: https://github.com/ansible/ansible/blob/v1.9.3-1/lib/ansible/constants.py#L61
答案3
在 OSX 上,我使用 pip 安装了 ansible,并发现 ansible.cfg 不存在于 /etc/ansible 或我的主目录中。
来源:https://github.com/ansible/ansible/issues/18512
pip 通常不安装配置文件,pip 与 ansible 也不例外。如果您只是想试用 ansible,通常无需 ansible.cfg 文件即可运行。(您确实需要指定一些清单,但如果您愿意,您可以在命令行而不是文件中执行此操作)。如果您想获取示例配置文件以进行调整,可以从此处的 tarball 或源存储库中获取它:https://github.com/ansible/ansible/blob/devel/examples/ansible.cfg
库存文件说明如下:http://docs.ansible.com/ansible/intro_inventory.html要在命令行上指定库存的主机,只需执行以下操作:
ansible -i 'host1,host2,host3' all -m command -a 'hostname'
如果您想通过命令行指定单个主机,请在清单字符串中使用尾随逗号:
ansible -i 'host1,' all -m command -a 'hostname'
答案4
我发现 Homebrew 不会创建/etc/ansible
目录,也不会创建配置或主机文件。但是,如果您创建目录/etc/ansible
并将配置从 github 存储库复制到/etc/ansible
目录中,它会将其识别为配置。
您可能还想进入该配置并取消注释指定库存位置的行:
库存 = /etc/ansible/hosts
执行此操作后,ansible 将以与任何其他安装相同的方式执行自制安装,并且您在线找到的文档可以与自制版本一起使用。