当前位置: 首页 > 知识库问答 >
问题:

在Ansible playbook中从不同的目录中指定多个组作为主机

时宾实
2023-03-14

我正在寻找一种方法,当组位于单独的目录中时,可以在Ansible playbook中将多个组指定为主机(这与此问题类似,但不同,因为该问题假设只有一个目录)。

假设我有一个名为change_things.yml的剧本。有时我想在开发、有时QA、有时生产等方面进行更改:

Ansible-Playbook-i Development-i production Change_things.yml

假设有单独的库存,大致如下所示:

# development inventory

[development]
10.0.0.1
10.0.0.2

主机未显式指定时,上面的剧本无法运行。

    null

我正在寻找一种方法来维护单独的主机清单,但创建剧本的方式,他们可以执行对主机组的多个组合。我不知道如何告诉Ansible“从这些目录中使用这些组”。

共有1个答案

公良骁
2023-03-14

问:“告诉Ansible‘从这些库存中使用这些组’”

答:在第一次播放中动态创建一组新的主机,然后使用它。例如

shell> cat pb.yml
- hosts: localhost
  tasks:
    - add_host:
        name: "{{ item }}"
        groups: my_group
      loop: "{{ my_groups|from_yaml|map('extract', groups)|flatten }}"

- hosts: my_group
  tasks:
    - debug:
        var: inventory_hostname

根据存货

shell> cat hosts_prod
[prod]
prod1
prod2
prod3

shell> cat hosts_qa
[qaA]
qa1
qa2

[qaB]
qa3

shell> cat hosts_devel 
[develA]
devel1
devel2

[develB]
devel3
ansible-playbook pb.yml -i hosts_prod -i hosts_qa -i hosts_devel -e "my_groups=[develA,qaB]"
PLAY [my_group] **********************************************

TASK [debug] **************************************************
ok: [devel2] => 
  inventory_hostname: devel2
ok: [devel1] => 
  inventory_hostname: devel1
ok: [qa3] => 
  inventory_hostname: qa3

在命令行中定义inventories和my_groups的任意组合。

 类似资料:
  • 我显示这样的数组: FieldListItem呈现方法是: 基本上,我使用切片只显示前3个元素,我想以不同的方式显示它们。例如,我想将第一个元素样式为标题-粗体,第二个元素为单行,字体应该更小,最后一个元素可以是多行,颜色应该不同。我有什么办法可以做到吗?

  • 问题内容: 我正在使用ant工具构建android库项目,我需要指定多个源目录。 我试图通过在ant.properties文件中添加这些行来指定多个源目录 但是在两种情况下都无法生成,在两种情况下都生成了 .class ,但是在创建jar文件时却出现此错误 谁能告诉我如何在 ant.properties中* 指定 多个源目录 以构建 Android库项目 ? *** 问题答案: 我已经以棘手的方式

  • 鉴于网页输出的目录区域相当狭窄,我想假设网页的导航标题较小,但继续在PDF输出中呈现较长的主题标题。 以下标记似乎根本不起作用(有或没有< code>audience属性): 在地图中添加似乎也没有什么区别: 以下内容适用于web,但不幸的是,在PDF目录中也有简短的标题: 我尝试使用下面的代码分别指向Web和PDF,但是这导致在转换过程中出现错误,表明我试图引用处理上下文之外的主题。这对于web

  • 目前,我在soap UI中运行的所有groovy脚本似乎都使用“..\SoapUI-5.2.1\bin”作为工作目录。在回答这个问题时,我尝试设置项目的资源根属性,但是这对groovy脚本使用的工作目录没有影响。 在SoapUI中创建一个新项目。添加一个测试套件、测试用例和一个groovy脚本测试步骤。在测试脚本中简单地放: 单击绿色箭头以运行脚本。对我来说,这将始终返回到SoapUI安装的bin

  • 我从特定目录下的Stackoverflow使用通配符子域获取源代码 原始代码: 它可以正常工作,但上面的代码指向根目录。我希望所有子域都指向我的“公文包”目录中的目录,所以我尝试修改自己的代码 修改后(添加"/投资组合"): 但它给了我“500-内部服务器错误”。。。为什么?有人能纠正我的密码吗? 对我的英语表示感谢和歉意。

  • 我有一组文件想放在。由< code>mvn编译生成的jar。不幸的是,我希望将它们放在. jar内的特定路径中。com/purple frog/expg lsl/castle/main . glsl格式的jar文件 如何在pom中指定此映射。xml?我不能在不影响其他程序员工作流程的情况下弄乱源项目的目录层次结构。