63
playbooks/server.yaml
Normal file
63
playbooks/server.yaml
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
---
|
||||||
|
- name: Agent Server
|
||||||
|
hosts: all
|
||||||
|
gather_facts: false
|
||||||
|
|
||||||
|
|
||||||
|
tasks:
|
||||||
|
|
||||||
|
|
||||||
|
- name: TRACE Inbound data Received
|
||||||
|
ansible.builtin.debug:
|
||||||
|
msg: "{{ inbound_data }}"
|
||||||
|
|
||||||
|
|
||||||
|
- name: Fetch Agent Details
|
||||||
|
community.mysql.mysql_query:
|
||||||
|
login_host: "{{ nfc_c_mysql_host }}"
|
||||||
|
login_port: "{{ nfc_c_mysql_port | default(3306) | int }}"
|
||||||
|
login_user: "{{ nfc_c_mysql_user }}"
|
||||||
|
login_password: "{{ nfc_c_mysql_password }}"
|
||||||
|
|
||||||
|
login_db: 'phpipam'
|
||||||
|
query: >
|
||||||
|
SELECT id, code FROM scanAgents WHERE code='{{ inbound_data.code }}'
|
||||||
|
single_transaction: true
|
||||||
|
register: mysql_query_agent_details
|
||||||
|
|
||||||
|
|
||||||
|
- name: Confirm Subnet Assignment
|
||||||
|
community.mysql.mysql_query:
|
||||||
|
login_host: "{{ nfc_c_mysql_host }}"
|
||||||
|
login_port: "{{ nfc_c_mysql_port | default(3306) | int }}"
|
||||||
|
login_user: "{{ nfc_c_mysql_user }}"
|
||||||
|
login_password: "{{ nfc_c_mysql_password }}"
|
||||||
|
|
||||||
|
login_db: 'phpipam'
|
||||||
|
query: >
|
||||||
|
SELECT id, subnet FROM subnets WHERE
|
||||||
|
scanAgent='{{ mysql_query_agent_details.query_result[0][0].id }}'
|
||||||
|
and
|
||||||
|
subnet='{{ inbound_data.scan[0].subnet | ip2ipam }}'
|
||||||
|
single_transaction: true
|
||||||
|
register: mysql_query_agent_subnets
|
||||||
|
|
||||||
|
|
||||||
|
- name: Arrange Subnets
|
||||||
|
ansible.builtin.set_fact:
|
||||||
|
agent_subnets: "{{ agent_subnets | default([]) + [ item.id ] }}"
|
||||||
|
|
||||||
|
loop: "{{ mysql_query_agent_subnets.query_result[0] }}"
|
||||||
|
|
||||||
|
|
||||||
|
- name: Process Scan results
|
||||||
|
ansible.builtin.include_tasks:
|
||||||
|
file: tasks/server/subnet_scan.yaml
|
||||||
|
loop: "{{ inbound_data.scan }}"
|
||||||
|
loop_control:
|
||||||
|
loop_var: scan_result
|
||||||
|
label: "{{ scan_result }}"
|
||||||
|
|
||||||
|
|
||||||
|
vars:
|
||||||
|
ansible_connection: local
|
53
playbooks/tasks/server/ipaddress.yaml
Normal file
53
playbooks/tasks/server/ipaddress.yaml
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
---
|
||||||
|
|
||||||
|
|
||||||
|
- name: Update IP Address' found
|
||||||
|
community.mysql.mysql_query:
|
||||||
|
login_host: "{{ nfc_c_mysql_host }}"
|
||||||
|
login_port: "{{ nfc_c_mysql_port | default(3306) | int }}"
|
||||||
|
login_user: "{{ nfc_c_mysql_user }}"
|
||||||
|
login_password: "{{ nfc_c_mysql_password }}"
|
||||||
|
|
||||||
|
login_db: 'phpipam'
|
||||||
|
query: |-
|
||||||
|
{% if
|
||||||
|
scan_address.rowcount[0] | int > 0
|
||||||
|
%}
|
||||||
|
|
||||||
|
UPDATE ipaddresses
|
||||||
|
SET
|
||||||
|
lastSeen = '{{ scan_address.ipaddress.lastSeen }}',
|
||||||
|
|
||||||
|
{% if scan_address.ipaddress.mac != '' %}
|
||||||
|
|
||||||
|
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
|
||||||
|
VALUES
|
||||||
|
subnetId = {{ scan_address.ipaddress.subnetId | int }},
|
||||||
|
ip_addr = '{{ scan_address.ipaddress.ip | ip2ipam }}',
|
||||||
|
description = '-- autodiscovered --',
|
||||||
|
|
||||||
|
{% if scan_address.ipaddress.mac != '' %}
|
||||||
|
|
||||||
|
mac = '{{ scan_address.ipaddress.mac }}',
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
note = 'This host was autodiscovered on {{ scan_address.ipaddress.lastSeen }}',
|
||||||
|
lastSeen = '{{ scan_address.ipaddress.lastSeen }}',
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
single_transaction: true
|
||||||
|
when: >
|
||||||
|
scan_address.ipaddress.subnetId | int in agent_subnets
|
33
playbooks/tasks/server/subnet_scan.yaml
Normal file
33
playbooks/tasks/server/subnet_scan.yaml
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
---
|
||||||
|
|
||||||
|
|
||||||
|
- name: Match Scan Addresses to DB Details
|
||||||
|
community.mysql.mysql_query:
|
||||||
|
login_host: "{{ nfc_c_mysql_host }}"
|
||||||
|
login_port: "{{ nfc_c_mysql_port | default(3306) | int }}"
|
||||||
|
login_user: "{{ nfc_c_mysql_user }}"
|
||||||
|
login_password: "{{ nfc_c_mysql_password }}"
|
||||||
|
|
||||||
|
login_db: 'phpipam'
|
||||||
|
query: |-
|
||||||
|
SELECT
|
||||||
|
id, description, state, note, lastSeen
|
||||||
|
FROM ipaddresses
|
||||||
|
WHERE
|
||||||
|
id='{{ ipaddress.id }}'
|
||||||
|
AND
|
||||||
|
ip_addr='{{ ipaddress.ip | ip2ipam }}'
|
||||||
|
single_transaction: true
|
||||||
|
register: mysql_query_find_ipaddress
|
||||||
|
loop: "{{ scan_result.results }}"
|
||||||
|
loop_control:
|
||||||
|
loop_var: ipaddress
|
||||||
|
|
||||||
|
|
||||||
|
- name: Update IP Addresses
|
||||||
|
ansible.builtin.include_tasks:
|
||||||
|
file: tasks/server/ipaddress.yaml
|
||||||
|
loop: "{{ mysql_query_find_ipaddress.results }}"
|
||||||
|
loop_control:
|
||||||
|
loop_var: scan_address
|
||||||
|
label: "{{ scan_address }}"
|
Reference in New Issue
Block a user