ansible 配置文件未找到;使用默认值

问题描述 投票:0回答:5

我创建了名为

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
但默认文件是哪个以及在哪里可以找到它?

ansible
5个回答
8
投票

问:“默认文件是哪个?在哪里可以找到它?”

A:简短的回答:不必有任何配置文件。在这种情况下,将应用硬编码默认值。

详情:

“如果从包管理器安装 Ansible,最新的 ansible.cfg 文件应该存在于 /etc/ansible ...”

  • 请参阅配置文件。 Ansible 按以下顺序搜索配置文件:
  1. ansible.cfg(在当前目录中)
  2. ~/.ansible.cfg(在主目录中)
  3. /etc/ansible/ansible.cfg
  • 如果没有任何配置文件,则将应用默认值。请参阅Ansible 配置设置中的硬编码默认值。以下命令的输出将显示每个配置选项的来源
shell> ansible-config dump

6
投票

运行:

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 配置位置。


1
投票

ansible 配置文件仅在使用 yum 或 apt-get 等包管理器执行安装时在安装过程中自动创建。如果您使用 pip 安装了 ansible,则应手动创建配置文件。


0
投票
  • 给你的虚拟环境命名是不明智的
    ansible
    我建议重命名它。
  • 请分享您用来创建虚拟环境的命令(因为您应该激活它,我从您共享的内容中看不到它)
  • 如果您想快速解决问题,您可以声明一个名为
    ANSIBLE_CONFIG
    的环境变量以及所需配置的位置。

Ansible 按以下顺序查找配置文件:

ANSIBLE_CONFIG (env var)
ansible.cfg (in the current directory)
~/.ansible.cfg (in the home directory)
/etc/ansible/ansible.cfg

0
投票

就我而言,我使用的是 WSL Ubuntu,当前用户没有

/etc/ansible/ansible.cfg
文件。要解决此问题,请按照下列步骤操作:

  1. 创建

    /etc/ansible
    目录:

    sudo mkdir /etc/ansible
    

    使用

    sudo
    ,因为我使用的用户不是
    root

  2. 您刚刚创建的目录的所有者将是

    root
    ,因为使用了
    sudo
    。更改为当前用户:

    sudo chown $(id -u):$(id -g) /etc/ansible/
    
  3. 检查所有权是否已更改:

    ls -l /etc/ansible/
    

    输出示例:

    total 8
    drwxr-xr-x 2 ali ali 4096 Sep 27 22:53 ./
    
  4. 现在,创建配置文件:

    vi /etc/ansible/ansible.cfg
    
  5. 检查配置文件不再是

    None
    :

    ansible --version
    

    输出示例:

    ansible [core 2.17.4]
      config file = /etc/ansible/ansible.cfg
      ....
    
  6. 您可以通过打开该文件来验证 Ansible 是否正在考虑该文件:

    vi /etc/ansible/ansible.cfg
    
  7. 添加您想要的任何配置。例如:

    [defaults]
    roles_path=/tmp
    
  8. 保存并运行检查此配置是否有效:

    ansible-config dump | grep ROLES
    

    提示: 如果您设置了任何 Ansible 环境变量,请在运行上述命令之前取消设置,以避免冲突。

    预期输出:

    DEFAULT_ROLES_PATH(/etc/ansible/ansible.cfg) = ['/tmp']
    

注意: 避免使用其他路径,尤其是

/mnt/
下的路径来创建配置文件。这可能会导致
chmod
chown
无法正常工作。然而,这仍然是可能的;您可以阅读这篇博客文章了解更多详细信息。

© www.soinside.com 2019 - 2024. All rights reserved.