首页 > 解决方案 > 特定剧本的Ansible多个主机?

问题描述

通常在 ansible 中,您总是为特定的剧本定义特定的主机。但是如果我想为多个主机运行一个剧本怎么办?

为了更清楚一点:我有以下组:

和以下剧本:

出于显而易见的原因,肯定 nginx 剧本应该有条目:hosts: Webservers但是main software剧本是什么。这个剧本应该包括两个主机。

最后,我想要有许多不同的剧本和组,我唯一想要执行的是:ansible-playbook ~/playbooks/webservers.yml这会触发:“主软件,certbot,nginx ...”通过包含。但是,如果不编辑包含在webservers.yml.

是否可以告诉剧本它应该在包含它的主剧本的主机上运行?像:webservers.yml -> 主机 -> nginx.yml -> 在 webservers.yml 中输入的所有客户端上运行?

你们中有人有想法吗?或者这只是用ansible无法实现的?

问候

标签: ansiblehosts

解决方案


您可以使用带有声明的include模块使用var,如下所示:whengroup_names

webservers.yml

- hosts: all
  tasks:
    - name: Include Main Software playbook
      include: main_software.yml

    - name: Include Nginx playbook
      include: nginx.yml
      when: "'webservers' in {{ group_names }}"

    - name: Include Vscode playbook
      include: vscode.yml
      when: "'DevClients' in {{ group_names }}"

记住main_software.yml,playbooks 必须有nginx.yml一个不是.vscode.ymltasksplay


推荐阅读