首页 > 解决方案 > 如何为同一变量的多个服务器提供不同的值

问题描述

我有一本安装 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

解决方案


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 文档的“变量”部分阅读更多内容。


推荐阅读