---
# ============================================================================
# Configure DHCP Servers
# ============================================================================
- name: Get current DHCP server configuration from firewall
ansible.builtin.uri:
url: "https://{{ sophos_mgmt_host }}:{{ sophos_mgmt_port }}/webconsole/APIController?reqxml={{ sophos_api_username }}{{ sophos_api_password }}"
method: POST
validate_certs: "{{ sophos_validate_certs }}"
headers:
Content-Type: "application/x-www-form-urlencoded"
return_content: true
status_code: [200]
register: current_dhcp_servers
no_log: "{{ sophos_no_log_sensitive }}"
tags: ['dhcp']
- name: Parse current DHCP server names
ansible.builtin.set_fact:
existing_dhcp_servers: "{{ current_dhcp_servers.content | regex_findall('(.*?)') }}"
tags: ['dhcp']
- name: Display existing DHCP servers
ansible.builtin.debug:
msg: "Found {{ existing_dhcp_servers | length }} existing DHCP servers: {{ existing_dhcp_servers | join(', ') }}"
tags: ['dhcp']
# Loop through each DHCP server and configure it
- name: Configure DHCP server {{ item.name }}
ansible.builtin.uri:
url: "https://{{ sophos_mgmt_host }}:{{ sophos_mgmt_port }}/webconsole/APIController"
method: POST
validate_certs: "{{ sophos_validate_certs }}"
headers:
Content-Type: "application/x-www-form-urlencoded"
body: "reqxml={{ lookup('template', 'dhcp_server.json.j2') | urlencode }}"
status_code: [200, 201]
timeout: "{{ sophos_api_timeout }}"
loop: "{{ sophos_dhcp_servers }}"
loop_control:
label: "{{ item.name }} ({{ item.interface }})"
register: dhcp_result
no_log: "{{ sophos_no_log_sensitive }}"
changed_when: "'successful' in dhcp_result.content | lower or '200' in dhcp_result.content"
failed_when: "'error' in dhcp_result.content | lower"
tags: ['dhcp']
- name: Display DHCP server configuration results
ansible.builtin.debug:
msg: "Configured {{ sophos_dhcp_servers | length }} DHCP servers successfully"
tags: ['dhcp']