Files
phpipam_scan_agent/playbooks/tasks/server/ipaddress.yaml

113 lines
3.0 KiB
YAML

---
- name: Convert Scan Time to Local Time
ansible.builtin.set_fact:
scan_time: |-
{%- if inbound_data.scan.tz != ('%z' | strftime | string) -%}
{%- set adjust_time = scan_address.ipaddress.lastSeen -%}
{%- if ('%z' | strftime)[0:1] == '+' -%}
{{
'%Y-%m-%d %H:%M:%S' | strftime(
(adjust_time | to_datetime).strftime('%s') | int -
(
(inbound_data.scan.tz[1:3] | int * 3600) + (inbound_data.scan.tz[3:5] | int * 60)
) | int
)
}}
{%- else -%}
{{
'%Y-%m-%d %H:%M:%S' | strftime((adjust_time | to_datetime).strftime('%s') | int +
(
(inbound_data.scan.tz[1:3] | int * 3600) + (inbound_data.scan.tz[3:5] | int * 60)
) | int)
}}
{%- endif -%}
{%- else -%}
{{ scan_address.ipaddress.lastSeen }}
{%- endif %}
cacheable: false
- name: "Update IP Address' found - {{ scan_address.ipaddress.ip }}"
community.mysql.mysql_query:
login_host: "{{ nofusscomputing_phpipam_scan_server.mysql_host }}"
login_port: "{{ nofusscomputing_phpipam_scan_server.mysql_port | default(3306) | int }}"
login_user: "{{ nofusscomputing_phpipam_scan_server.mysql_user }}"
login_password: "{{ nofusscomputing_phpipam_scan_server.mysql_password }}"
login_db: 'phpipam'
query: |-
{% if
scan_address.rowcount[0] | int > 0
%}
UPDATE ipaddresses
SET
lastSeen = '{{ scan_time }}'
{% if scan_address.ipaddress.hostname | default('') != '' %},
hostname = '{{ scan_address.ipaddress.hostname }}'
{% endif %}
{% if scan_address.ipaddress.mac | default('') != '' %},
mac = '{{ scan_address.ipaddress.mac }}'
{% endif %}
WHERE
id = {{ scan_address.query_result[0][0].id | int }}
{% elif
scan_address.rowcount[0] | int == 0
%}
INSERT INTO ipaddresses
(
subnetId,
ip_addr,
description,
{% if scan_address.ipaddress.hostname | default('') != '' %}hostname,{% endif %}
{% if scan_address.ipaddress.mac | default('') != '' %}mac,{% endif %}
note,
lastSeen
)
VALUES
(
{{ scan_address.ipaddress.subnetId | int }},
'{{ scan_address.ipaddress.ip | ip2ipam }}',
'-- autodiscovered --',
{% if scan_address.ipaddress.hostname | default('') != '' %}
'{{ scan_address.ipaddress.hostname }}',
{% endif %}
{% if scan_address.ipaddress.mac | default('') != '' %}
'{{ scan_address.ipaddress.mac }}',
{% endif %}
'This host was autodiscovered on {{ scan_address.ipaddress.lastSeen }}',
'{{ scan_address.ipaddress.lastSeen }}'
)
{% endif %}
single_transaction: true
when: >
scan_address.ipaddress.subnetId | int in agent_subnets