amazon-web-services - 仅在一台服务器上运行 Ansible 任务 - AWS
问题描述
我的 ansible 任务在我的所有 api_servers 中运行,我将其限制为仅在一个 IP(api_server 之一)上运行我添加了 run_once: true 但它没有帮助。
好心提醒。编辑 :
下面的工作吗?我有 10 个 app_servers 实例正在运行,我希望任务仅在一个 app_server 上运行
run_once: true
when:
- inventory_hostname == groups['app_servers'][0]
我的库存文件在哪里
[app_servers]
prod_app_[1:4]
解决方案
我会这样写我的剧本:
---
# Run on all api_servers
- hosts: api_servers
tasks:
- name: do something on all api_servers
#...
# Run only on one api_server e.q. api_server_01
- hosts: api_server_01
tasks:
- name: Gather data from api_server_01
#...
另一种选择是使用when:
或运行带有该--limit
选项的剧本
---
- hosts: all
tasks:
- name: do something only when on api_server_01
#...
when: inventory_hostname == "api_server_01"
编辑:在这里,您将在一个示例中看到所有选项:
---
- hosts: all
tasks:
- debug: msg="run_once"
run_once: true
- debug: msg=all
- debug: msg="run on the first of the group"
when: inventory_hostname == groups['app_servers'][0]
# Option with separated hosts, this one will be faster if gather_facts is not tuned.
- hosts: app_servers[0]
tasks:
- debug: msg="run on the first of the group"
推荐阅读
- android - 如何在没有 Pojo 的情况下从 api 添加数据
- c# - 如何在 Unity2D C# GUI 中实现单选按钮?
- video - 如何使用 ffmpeg 获取 mp4 容器的视频流的偏移量?
- node.js - 奇怪的 npm 问题,命令永远不会完成,永远挂起
- javascript - 动态创建引导网格
- mysql - MySQL 查询 - 在两个日期之间进行检查,而无需检索行
- r - 错误:依赖项 'ROracle' 不适用于包 'ora'
- ember.js - findAll 具有由 parent 定义的属性
- javascript - 根据 Dropdownlist SelectionIndexChanged 事件更改页面的 URL
- mongodb - golang mongodb 迁移数据库库 mongo 到 mgo