Ansible - 如何循环遍历库存文件中存在的服务

Ansible - 如何循环遍历库存文件中存在的服务

winapp.example.com您好,我有一个清单文件,其中包含 Windows 应用程序服务器、Web 服务器以及仅需要停止或重新启动的相应服务。要求是仅应停止主机组的特定服务。例如,对于 appservers 主机应该使用服务在 appservers:vars 下

感谢你的帮助 !!!

Inventory\hosts.ini 文件包含

[appservers]
winapp1.example.com
winapp2.example.com

[appservers:vars]
  services:
    - WorkflowService
    - ConfigurationService
    - SyncService
    - ParentConfigurationService

[slaveappservers]
winslvapp1.example.com
winslvapp2.example.com

[slaveappservers:vars]
  services:
    - SyncService
    - ParentConfigurationService

[webservers] 
webser1.ent.wfb.bank.corp

[webservers:vars]
  services:
    - WorkflowService
    - SyncService
    - ParentConfigurationService

[allservers:children]
appservers
slaveappservers
webservers

服务停止.yml

---
- name:  SHRP service stop Demo
  hosts: all
  gather_facts: false

  tasks:
  - name: Pause a service
    win_service:
      name: "{{ item }}"
      state: stopped
    loop: 
      - "{{ services }}"

答案1

您已经有一个解决方案。定义一个具有相同名称但分组特定值的变量。在可以在两个组上运行的游戏中使用该变量名称。

存在几种语法来获取特定于组的值。

  • 为组定义库存中的变量
  • 在与剧本或库存相邻的 group_vars 文件中。
  • 按组名索引的查找表达式或字典。

你的例子就是第一个例子。

相关内容