Ansible:停止和禁用服务(如果存在)
Ansible: Stop and Disable services if they are present
我正在尝试停止和禁用已安装的服务列表。我正在调用 service_facts 模块生成 运行 服务列表并使用过滤器 "union"
- name: Include variables for Amazon Linux.
include_vars: ../vars/test.yml
- name: populate service facts
service_facts:
- name: start the service if it's enabled
service:
name: "{{ item }}"
enabled: no
state: stopped
loop: "{{ stop_services |union(services) }}"
when: stop_services is defined
我收到一个错误 ({{ stop_services |union(services) }} 发生意外的模板类型错误): 只能连接列表(不是 \"dict\") 列出
有没有其他方法可以停止和禁用已安装的服务列表。
错误消息准确描述了您的问题:stop_services
是一个列表,services
是一个字典。你不能把两者压在一起。您将需要构建一个服务名称列表并比较您的服务列表以停止该列表。
例如:
- hosts: localhost
gather_facts: false
vars:
stop_services:
- sshd.service
- avahi-daemon.service
tasks:
- service_facts:
- name: stop and disable a service
service:
name: "{{ item }}"
state: stopped
enabled: false
when: "item in service_names"
loop: "{{ stop_services }}"
vars:
service_names: "{{ services|dict2items|map(attribute='value.name')|list }}"
我正在尝试停止和禁用已安装的服务列表。我正在调用 service_facts 模块生成 运行 服务列表并使用过滤器 "union"
- name: Include variables for Amazon Linux.
include_vars: ../vars/test.yml
- name: populate service facts
service_facts:
- name: start the service if it's enabled
service:
name: "{{ item }}"
enabled: no
state: stopped
loop: "{{ stop_services |union(services) }}"
when: stop_services is defined
我收到一个错误 ({{ stop_services |union(services) }} 发生意外的模板类型错误): 只能连接列表(不是 \"dict\") 列出
有没有其他方法可以停止和禁用已安装的服务列表。
错误消息准确描述了您的问题:stop_services
是一个列表,services
是一个字典。你不能把两者压在一起。您将需要构建一个服务名称列表并比较您的服务列表以停止该列表。
例如:
- hosts: localhost
gather_facts: false
vars:
stop_services:
- sshd.service
- avahi-daemon.service
tasks:
- service_facts:
- name: stop and disable a service
service:
name: "{{ item }}"
state: stopped
enabled: false
when: "item in service_names"
loop: "{{ stop_services }}"
vars:
service_names: "{{ services|dict2items|map(attribute='value.name')|list }}"