如何从ansible库存中获取特定的群体并将其用于剧本中?

时间:2019-08-14 12:44:26

标签: ansible ansible-2.x ansible-inventory

我需要从清单文件中抓取特定的子组,并在正确的剧本中正确使用它。

all:
  children:
    development:
      children:
        ntp_servers:
          hosts:
            ntp01:
            ntp02:
        services:
          children:
            chatbot:
              children:
                app:
                  hosts:
                    chatbot-app01:
                    chatbot-app02:
                db:
                  hosts:
                    chatbot-db01:
                    chatbot-db02:
            dice:
              children:
                app:
                  hosts:
                    dice-app01:
                    dice-app02:
                db:
                  hosts:
                    dice-db01:
                    dice-db02:
                    dice-db03:
                redis:
                  hosts:
                    dice-redis01:
                    dice-redis02:

例如,我想获取聊天机器人组的应用子组。 谁能给示例剧本如何引用chatbot.app组?

我曾经这样使用,但这似乎是错误的陈述。

- hosts: chatbot:app
  roles:
    - chatbot

1 个答案:

答案 0 :(得分:0)

不可能直接实现您要实现的目标。您当前遇到的问题是主机组名称appdb重复出现,这会使您的结果产生偏差。

首先,您需要确保使用唯一的组名。例如:

all:
  children:
    development:
      children:
        ntp_servers:
          hosts:
            ntp01
            ntp02
        services:
          children:
            chatbot:
              children:
                chatbot_app:
                  hosts:
                    chatbot-app01:
                    chatbot-app02:
                chatbot_db:
                  hosts:
                    chatbot-db01:
                    chatbot-db02:
            dice:
              children:
                dice_app:
                  hosts:
                    dice-app01:
                    dice-app02:
                dice_db:
                  hosts:
                    dice-db01:
                    dice-db02:
                    dice-db03:
                dice_redis:
                  hosts:
                    dice-redis01:
                    dice-redis02:

然后,您可以根据自己的意愿参考父/子组。使用问题中的示例,您可以执行以下操作:

- hosts: chatbot_app
  roles:
    - chatbot

可以对您所有的组(开发,ntp_server,服务,聊天机器人,骰子等)执行相同操作

相关问题