56 lines
2.3 KiB
YAML
56 lines
2.3 KiB
YAML
- name: Services | Validate selections
|
|
ansible.builtin.assert:
|
|
that:
|
|
- maintenance_service_include is sequence
|
|
- maintenance_service_include is not string
|
|
- maintenance_service_exclude is sequence
|
|
- maintenance_service_exclude is not string
|
|
- (maintenance_service_fail_on_error) is boolean or (maintenance_service_fail_on_error | string |
|
|
lower) in ['true', 'false']
|
|
fail_msg: Service selections must be lists of internal names; failure policy must be boolean.
|
|
quiet: true
|
|
- name: Services | Read current state
|
|
ansible.windows.win_service_info: {}
|
|
register: _aim_services
|
|
- name: Services | Start eligible stopped services
|
|
ansible.windows.win_service:
|
|
name: '{{ item.name }}'
|
|
state: started
|
|
loop: '{{ _aim_services.services }}'
|
|
loop_control:
|
|
label: '{{ item.name }}'
|
|
when:
|
|
- item.state == 'stopped'
|
|
- item.start_mode in ['auto', 'delayed']
|
|
- maintenance_service_include | length == 0 or item.name in maintenance_service_include
|
|
- item.name not in maintenance_service_exclude
|
|
register: _aim_service_starts
|
|
ignore_errors: true
|
|
- name: Services | Observe states after start attempts
|
|
ansible.windows.win_service_info: {}
|
|
register: _aim_services_after
|
|
- name: Services | Build before and after report
|
|
ansible.builtin.set_fact:
|
|
_aim_service_report: '{{ _aim_services.services | aim_report_services(_aim_service_starts.results | default([]),
|
|
_aim_services_after.services, maintenance_service_include, maintenance_service_exclude, ansible_check_mode)
|
|
}}'
|
|
- name: Services | Summary
|
|
ansible.builtin.debug:
|
|
msg: '{{ _aim_service_report }}'
|
|
- name: AIM | Publish operation result
|
|
ansible.builtin.set_stats:
|
|
per_host: true
|
|
aggregate: false
|
|
data:
|
|
aim_output:
|
|
protocol: aim_output_v1
|
|
schema: service_start_summary_v1
|
|
data: '{{ _aim_service_report }}'
|
|
- name: Services | Report partial failure
|
|
ansible.builtin.fail:
|
|
msg: One or more attempted services are not running. See failed_to_start in the structured report.
|
|
when:
|
|
- maintenance_service_fail_on_error | bool
|
|
- _aim_service_report.failed_count | int > 0
|
|
- not ansible_check_mode
|