【问题标题】:Playbook directory and Inventory directoryPlaybook 目录和 Inventory 目录
【发布时间】:2017-04-11 10:48:00
【问题描述】:

Here 有一句话:

提示:在 Ansible 1.2 或更高版本中,group_vars/ 和 host_vars/ 目录可以存在于 playbook 目录或 inventory 目录中。如果两个路径都存在,playbook 目录中的变量将覆盖inventory 目录中设置的变量。

如何定义:

  • 剧本目录
  • 库存目录

我不知道这种配置,似乎在我使用 Ansible 的过程中,我总是有一个目录,它同时位于 playbook 目录和库存目录中,但这种分离可能很有用。

【问题讨论】:

    标签: ansible ansible-inventory


    【解决方案1】:

    您可以通过指向文件、脚本或目录来指定清单:

    • 在命令行中:

      ansible-playbook playbook.yml -i /path/to/inventory
      
    • in ansible.cfg:

      inventory = /path/to/inventory
      

      无论您使用哪个选项,库存目录都将是存储使用过的库存文件的目录。

    playbook 目录只是存储 playbook 的目录。

    【讨论】:

    • 我以为 -i 设置库存文件而不是目录,但我经常使用它,我不知道后果
    • @itiic 在我看来,如果您只指定目录,ansible 将在没有任何文件格式的文件中查找主机。我是这样尝试的:主机位置:inventories/production/hosts.ini, 命令:ansible-playbook -i inventories/production playbook.yml 它确实不起作用。但是如果我 删除 .ini 文件格式,ansible 会找到主机。此外,如果您将它们放在单独的文件中,它会找到所有主机。
    • 为了使 ansible.cfg 中的那一行正常工作,它必须位于 [defaults] 部分,否则 ansible 将拒绝使用它
    【解决方案2】:

    @Miklos Kosarkar,我知道这是一篇旧帖子,但从未有人回答。默认情况下,Ansible 在查找清单文件时会忽略某些文件扩展名。这是在 ansible.cfg 的 [inventory] ​​部分中设置的。

    [inventory]
    # enable inventory plugins, default: 'host_list', 'script', 'auto', 'yaml', 'ini', 'toml'
    #enable_plugins = host_list, virtualbox, yaml, constructed
    
    # ignore these extensions when parsing a directory as inventory source
    #ignore_extensions = .pyc, .pyo, .swp, .bak, ~, .rpm, .md, .txt, ~, .orig, .ini, .cfg, .retry
    
    # ignore files matching these patterns when parsing a directory as inventory source
    #ignore_patterns=
    
    # If 'true' unparsed inventory sources become fatal errors, they are warnings otherwise.
    #unparsed_is_failed=False
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-08
      • 1970-01-01
      • 1970-01-01
      • 2011-11-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多