gpt4 book ai didi

ansible - 如果不手动加载,Ansible不会选择group_vars

转载 作者:行者123 更新时间:2023-12-03 10:09:28 43 4
gpt4 key购买 nike

在我的local.yml中,我可以运行剧本并在group_vars/all中引用变量,但是我无法在group_vars/phl-stage中访问变量。让我们假设以下内容。

ansible-playbook -i phl-stage site.yml

我有一个变量,让我们将其称为 deploy_path,每个环境都不同。我将变量放在 group_vars/< environment name >中。如果我将文件 group_vars/phl-stage包含在 vars_files中,则可以使用,但我会认为该组文件会自动加载?

site.yml
- include: local.yml

本地文件
- hosts: 127.0.0.1
connection: local

vars_files:
- "group_vars/perlservers"
- "group_vars/deploy_list"

group_vars / phl-stage
[webservers]
phl-web1
phl-web2

[perlservers]
phl-perl1
phl-perl2

[phl-stage:children]
webservers
perlservers

目录结构:
group_vars
all
phl-stage
phl-prod
site.yml
local.yml

最佳答案

您使结构有些困惑。

  • group_vars目录包含 list 文件中定义的每个主机组的文件。这些文件定义了成员主机可以使用的变量。
  • 库存文件不位于group_vars目录中,应该在外部。
  • 只有属于组成员的主机才能使用其变量,因此,除非您将127.0.0.1放入组中,否则它将无法使用group_vars/all中定义的组之外的任何group_vars。

  • 您想要的是这个目录结构:
    group_vars/
    all
    perlservers
    phl-stage
    hosts
    site.yml
    local.yml

    假设127.0.0.1只是一个登台服务器,而不是perl或Web服务器,您的主机文件应如下所示:
    [webservers]
    phl-web1
    phl-web2

    [perlservers]
    phl-perl1
    phl-perl2

    [phl-stage]
    127.0.0.1

    [phl-stage:children]
    webservers
    perlservers

    因此,您可以定义哪些主机属于 list 中的哪个组,然后为每个组在其group_vars文件中定义变量。

    关于ansible - 如果不手动加载,Ansible不会选择group_vars,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23767765/

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