Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ansible-每个分组更改的角色默认值_Ansible - Fatal编程技术网

Ansible-每个分组更改的角色默认值

Ansible-每个分组更改的角色默认值,ansible,Ansible,我对Ansible还是新手,所以到目前为止,一切都是一次巨大的学习经历。。请放轻松 我希望用一种最佳实践方法来实现以下内容,但我似乎不太明白,或者更确切地说,我希望有一种更有效的方法来实现同样的目标 具体来说,我正在尝试应用一个设置了许多默认参数的角色。。例如,是否需要xinet的一些特定信息。。通常,答案是否定的,因此这是默认值。。但是我们环境中的某些系统确实依赖于此,所以当它是指定组的一部分时,我想将默认值设置为true 我已经想到了一些实现潜在目标的方法,但我不确定在Ansible文化的核

我对Ansible还是新手,所以到目前为止,一切都是一次巨大的学习经历。。请放轻松

我希望用一种最佳实践方法来实现以下内容,但我似乎不太明白,或者更确切地说,我希望有一种更有效的方法来实现同样的目标

具体来说,我正在尝试应用一个设置了许多默认参数的角色。。例如,是否需要xinet的一些特定信息。。通常,答案是否定的,因此这是默认值。。但是我们环境中的某些系统确实依赖于此,所以当它是指定组的一部分时,我想将默认值设置为true

我已经想到了一些实现潜在目标的方法,但我不确定在Ansible文化的核心,什么是最佳实践

选项:

A-创建和复制整个角色,并仅将复制的角色应用于xinetd服务器 --不太喜欢这个,因为这需要维护基本相同角色的多个副本

B-修改基础任务以排除在定义特定组变量时运行作业 --这有点太低级了,我担心这些变化会被忽视


也许使用组变量是正确的方法?我已经做了一些研究,并运行了一些例子,但我还没有完全做到这一点。。。正在寻找关于良好前进道路的任何意见/建议,谢谢

在您的角色默认值文件中有一个常见模式:

some_feature_enabled: false
然后,将变量重新定义为组变量,并设置为true。有两种方法:

1) 在清单主机文件中:

[somegroup]
somehost

[somegroup:vars]
some_feature_enabled: true
2) 在专用组中\u组的vars文件。在包含playbook的目录或包含资源清册文件的目录中创建一个名为
group\u vars
的目录,并在其中创建一个与您的组名相同的文件
somegroup
。在此文件中:

some_feature_enabled: true
最后,为任务添加一个条件:

- debug:
    msg: "Only print this message when somefeature is enabled
  when: some_feature_enabled
如果有一组相关任务可以分组在一起并基于一个值进行切换,则可以将它们包装在块中:

- block:
    - debug:
        msg: "First task"
    - debug:
        msg: "Second task"
  when: some_feature_enabled
如果整个角色是有条件的,则可以将测试放置在角色级别:

roles:
  - { role: somerole, when: some_feature_enabled }

为您提供了所有关于Ansible变量的血淋淋的详细信息,关键是包括关于重复变量优先级的信息。有关Ansible团队对最佳实践的看法,如果您尚未这样做。

感谢您的帮助!我选择了选项2,因为这似乎是保持/管理未来差异的最干净的方法。完成这项工作的关键是理解Ansible按照第一个链接中所述的方式对变量进行优先级排序