Ansible 如何为同一变量的多个服务器提供不同的值
我有一个剧本,可以安装IIS、配置应用程序池、网站和部署应用程序。现在我有一个独特的要求。独特的意义上,我仍然不知道如何做:-)。要求在4台服务器组成的集群中,将回收团队的时间间隔设置为15分钟。i、 e.第一台服务器的回收时间为晚上10:00,第二台为晚上10:15,依此类推 关于如何实现它的任何建议 我已经用以下设置设置了应用程序池Ansible 如何为同一变量的多个服务器提供不同的值,ansible,Ansible,我有一个剧本,可以安装IIS、配置应用程序池、网站和部署应用程序。现在我有一个独特的要求。独特的意义上,我仍然不知道如何做:-)。要求在4台服务器组成的集群中,将回收团队的时间间隔设置为15分钟。i、 e.第一台服务器的回收时间为晚上10:00,第二台为晚上10:15,依此类推 关于如何实现它的任何建议 我已经用以下设置设置了应用程序池 - name: Setup TestWorkerApi Apppool in IIS win_iis_webapppool: name: TestWo
- 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\u vars
目录中的变量文件中
在这两种情况下,您都可以使用所需的值为每个主机设置一个recycle\u 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\u vars
目录创建host\u vars/server1.yml
,内容如下:
recycle_time: "22:00:00"
…对于其他服务器也是如此
在任何情况下,您都可以在您的剧本中引用recycle\u 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文档的“”部分阅读更多内容。Ansible允许您设置主机特定变量 (a) 在您的库存中,以及 (b) 在
host\u vars
目录中的变量文件中
在这两种情况下,您都可以使用所需的值为每个主机设置一个recycle\u 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\u vars
目录创建host\u vars/server1.yml
,内容如下:
recycle_time: "22:00:00"
…对于其他服务器也是如此
在任何情况下,您都可以在您的剧本中引用recycle\u 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文档的“”部分阅读更多内容。谢谢Larsks,谢谢您提供的信息。我会选择剧本中包含的所有内容,所以第二个选项对我来说是积极的。我有其他的场景,你的第二个解决方案给了我一些提示,看起来很合适。再次感谢。谢谢Larsks,谢谢你提供的信息。我会选择剧本中包含的所有内容,所以第二个选项对我来说是积极的。我有其他场景,您的第二个解决方案给了我一些提示,看起来很合适。再次感谢。