如何为同一变量的多个服务器提供不同的值

时间:2019-04-24 23:25:07

标签: ansible

我有一本剧本,用于安装IIS,配置apppools,网站和部署应用程序。现在我有一个独特的要求。从某种意义上说,它是独一无二的,我仍然对如何做到这一点一无所知:-)。要求是将回收团队设置为在4台服务器的群集中间隔15分钟。即第一台服务器的回收时间为10:00 PM,第二台服务器的回收时间为10:15 PM,依此类推...

关于如何实现的任何指针...

我已经使用以下设置设置了应用程序池

- 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 PM,第二台服务器上的10:15 PM,第三台服务器上的10:30 PM等...

1 个答案:

答案 0 :(得分:0)

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文档的“ Variables”部分中了解更多信息。