我创建了名为
ansible
的 venv 并使用安装了 ansible
pip3 install ansible
。现在在检查ansible版本config file = None
ansible --version
ansible 2.9.12
config file = None
configured module search path = ['/home/ansible/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
ansible python module location = /home/ansible/ansible/lib/python3.7/site-packages/ansible
executable location = /home/ansible/ansible/bin/ansible
python version = 3.7.4 (default, Aug 18 2019, 12:04:45) [GCC 5.4.0 20160609]
当我运行 ansible 命令时,它显示
No config file found; using defaults
但默认文件是哪个以及在哪里可以找到它?
问:“默认文件是哪个?在哪里可以找到它?”
A:简短的回答:不必有任何配置文件。在这种情况下,将应用硬编码默认值。
详情:
“如果从包管理器安装 Ansible,最新的 ansible.cfg 文件应该存在于 /etc/ansible ...”
shell> ansible-config dump
运行:
sudo apt remove ansible
sudo apt update
sudo apt install software-properties-common
sudo apt-add-repository --yes --update ppa:ansible/ansible
sudo apt install ansible
现在您可以获得 Ansible 配置位置。
ansible 配置文件仅在使用 yum 或 apt-get 等包管理器执行安装时在安装过程中自动创建。如果您使用 pip 安装了 ansible,则应手动创建配置文件。
ansible
我建议重命名它。ANSIBLE_CONFIG
的环境变量以及所需配置的位置。Ansible 按以下顺序查找配置文件:
ANSIBLE_CONFIG (env var)
ansible.cfg (in the current directory)
~/.ansible.cfg (in the home directory)
/etc/ansible/ansible.cfg
就我而言,我使用的是 WSL Ubuntu,当前用户没有
/etc/ansible/ansible.cfg
文件。要解决此问题,请按照下列步骤操作:
创建
/etc/ansible
目录:
sudo mkdir /etc/ansible
使用
sudo
,因为我使用的用户不是 root
。
您刚刚创建的目录的所有者将是
root
,因为使用了 sudo
。更改为当前用户:
sudo chown $(id -u):$(id -g) /etc/ansible/
检查所有权是否已更改:
ls -l /etc/ansible/
输出示例:
total 8
drwxr-xr-x 2 ali ali 4096 Sep 27 22:53 ./
现在,创建配置文件:
vi /etc/ansible/ansible.cfg
检查配置文件不再是
None
:
ansible --version
输出示例:
ansible [core 2.17.4]
config file = /etc/ansible/ansible.cfg
....
您可以通过打开该文件来验证 Ansible 是否正在考虑该文件:
vi /etc/ansible/ansible.cfg
添加您想要的任何配置。例如:
[defaults]
roles_path=/tmp
保存并运行检查此配置是否有效:
ansible-config dump | grep ROLES
提示: 如果您设置了任何 Ansible 环境变量,请在运行上述命令之前取消设置,以避免冲突。
预期输出:
DEFAULT_ROLES_PATH(/etc/ansible/ansible.cfg) = ['/tmp']
注意: 避免使用其他路径,尤其是
/mnt/
下的路径来创建配置文件。这可能会导致 chmod
和 chown
无法正常工作。然而,这仍然是可能的;您可以阅读这篇博客文章了解更多详细信息。