ansible - 特定剧本的Ansible多个主机?
问题描述
通常在 ansible 中,您总是为特定的剧本定义特定的主机。但是如果我想为多个主机运行一个剧本怎么办?
为了更清楚一点:我有以下组:
- 网络服务器
- 开发客户
和以下剧本:
- 安装主软件
- 安装 certbot
- 安装 nginx
- 安装 vscode
出于显而易见的原因,肯定 nginx 剧本应该有条目:hosts: Webservers
但是main software
剧本是什么。这个剧本应该包括两个主机。
最后,我想要有许多不同的剧本和组,我唯一想要执行的是:ansible-playbook ~/playbooks/webservers.yml
这会触发:“主软件,certbot,nginx ...”通过包含。但是,如果不编辑包含在webservers.yml
.
是否可以告诉剧本它应该在包含它的主剧本的主机上运行?像:webservers.yml -> 主机 -> nginx.yml -> 在 webservers.yml 中输入的所有客户端上运行?
你们中有人有想法吗?或者这只是用ansible无法实现的?
问候
解决方案
您可以使用带有声明的include
模块使用var,如下所示:when
group_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.yml
tasks
play
推荐阅读
- angular - 转换作为 Observable 返回的对象数组
- python - 如何为不以特殊字符开头的字符串添加正则表达式
- apache-spark - 将 pyspark 数据帧存储在字典中是否最佳,它在内部是如何工作的?
- laravel - 如何在 laravel 中创建 api 忘记密码和更改密码?
- database - MongoDB 备份和归档
- python - Python 菜单不起作用 - 在 ELIF 处停止
- machine-learning - 如何处理二进制分类问题的多标签分类特征?
- css - 为什么需要 position:relative 来定位它的孩子?
- java - 抛出异常时,Spring Boot 不显示自定义错误
- javascript - 检查逗号分隔值的内容类型