ansible - 如何为同一变量的多个服务器提供不同的值
问题描述
我有一本安装 IIS、配置应用程序池、网站和部署应用程序的剧本。现在我有一个独特的要求。从某种意义上说是独一无二的,我仍然对如何做到这一点一无所知:-)。要求是在 4 台服务器的集群中将回收团队设置为间隔 15 分钟。即第一台服务器的回收时间为晚上 10:00,第二台服务器的回收时间为晚上 10:15,依此类推...
有关如何实现它的任何指示...
我已经使用以下设置设置了应用程序池
- name: Setup TestWorkerApi Apppool in IIS
win_iis_webapppool:
name: TestWorkerApi
state: started
attributes:
managedPipelineMode: Integrated
startMode: AlwaysRunning
processModel.identityType: SpecificUser
processModel.userName: '{{ Domain }}\{{ Test_In_User }}'
processModel.password: "{{ Test_In_Pwd }}"
managedRuntimeVersion: v4.0
processModel.idleTimeout: 0
processModel.idleTimeoutAction: Suspend
recycling.periodicRestart.schedule: ["22:00:00"]
autoStart: yes
register: apppool_output-TestWorkerApi
tags:
- TestApp
我正在寻找应用程序池回收时间,如第一台服务器上的晚上 10:00、第二台服务器上的晚上 10:15、第三台服务器上的晚上 10:30 等...
解决方案
Ansible 允许您设置特定于主机的变量...
(a) 在您的库存中,以及 (b) 在您host_vars
目录中的变量文件中。
在任何一种情况下,您都可recycle_time
以为每个主机设置一个具有所需值的变量。例如,使用旧的库存格式,可能如下所示:
server1 recycle_time=22:00:00
server2 recycle_time=22:15:00
server3 recycle_time=22:30:00
server4 recycle_time=22:45:00
或者使用 YAML 清单格式:
all:
hosts:
server1:
recycle_time: "22:00:00"
server2:
recycle_time: "22:15:00"
server3:
recycle_time: "22:30:00"
server4:
recycle_time: "22:45:00"
或者使用host_vars
您将host_vars/server1.yml
使用内容创建的目录:
recycle_time: "22:00:00"
...对于其他服务器也是如此。
在任何情况下,您都将在您的剧本中引用该recycle_time
变量:
- name: Setup TestWorkerApi Apppool in IIS
win_iis_webapppool:
name: TestWorkerApi
state: started
attributes:
managedPipelineMode: Integrated
startMode: AlwaysRunning
processModel.identityType: SpecificUser
processModel.userName: '{{ Domain }}\{{ Test_In_User }}'
processModel.password: "{{ Test_In_Pwd }}"
managedRuntimeVersion: v4.0
processModel.idleTimeout: 0
processModel.idleTimeoutAction: Suspend
recycling.periodicRestart.schedule: [{{ recycle_time }}]
autoStart: yes
register: apppool_output-TestWorkerApi
tags:
- TestApp
您可以在 Ansible 文档的“变量”部分阅读更多内容。
推荐阅读
- java - 二进制搜索除以 4
- javascript - 如何删除函数中的 EventListener?
- openssl - ar: libcrypto.so: 安装 openssl-1.1.1g 时无法识别文件格式
- jquery - 如何在 jquery 中更改 django 日期格式?
- c++ - 如何重载具有相同类型的构造函数?
- elasticsearch - 如何将 ngram 分析器与 multi_match 一起使用
- javascript - 如果 FormValidation 的另一个特定字段不为空,如何要求一个字段不为空?
- animation - 如何使用 matplotlib 和赛璐珞放置动态图例
- javascript - 将 MongoDB 结果返回到 HTTP 请求
- angular - 如何使用 Angular 创建“当前日期”按钮