Обновить playbooks/scan_inventory.yml

This commit is contained in:
2025-12-10 11:04:48 +00:00
parent f3a9275b29
commit 0f80c6d9ca

View File

@@ -8,35 +8,30 @@
# --- SEMAPHORE API --- # --- SEMAPHORE API ---
semaphore_url: "http://192.168.0.198:9999" semaphore_url: "http://192.168.0.198:9999"
semaphore_project_id: 1 semaphore_project_id: 1
#semaphore_key_id: 7
semaphore_api_token: "9ojexqiwt1xkemig7j1bd1pe-frh7hkre4reryk2occ=" semaphore_api_token: "9ojexqiwt1xkemig7j1bd1pe-frh7hkre4reryk2occ="
inventory_name: "Smart Network Scan"
# --- ID КЛЮЧЕЙ ДЛЯ БУДУЩИХ ПОДКЛЮЧЕНИЙ --- # --- ID КЛЮЧЕЙ ДЛЯ БУДУЩИХ ПОДКЛЮЧЕНИЙ ---
# Даже если мы нашли устройство по SNMP, для управления им позже нужен ключ.
# Если ключей нет, можно указать ID "пустого" ключа или любого существующего.
key_windows: 7 key_windows: 7
key_linux: 8 key_linux: 8
key_mikrotik: 9 key_mikrotik: 9
key_printers: 7 # Можно тот же, принтерами обычно ansible не управляет key_printers: 7
# --- СЕТИ --- # --- СЕТИ (ИСПРАВЛЕНО: Правильный формат списка YAML) ---
subnets: [ subnets:
"192.168.0.0/24" - "192.168.0.0/24"
"192.168.0.0/23" - "192.168.0.0/23"
"192.168.2.0/24" - "192.168.2.0/24"
"192.168.3.0/24" - "192.168.3.0/24"
"172.19.8.0/24" - "172.19.8.0/24"
"172.19.9.0/24" - "172.19.9.0/24"
"172.19.10.0/24" - "172.19.10.0/24"
"172.19.24.0/24" - "172.19.24.0/24"
"172.19.26.0/24" - "172.19.26.0/24"
"172.19.40.0/24" - "172.19.40.0/24"
"172.19.42.0/24" - "172.19.42.0/24"
"172.19.56.0/24" - "172.19.56.0/24"
"172.19.58.0/24" - "172.19.58.0/24"
"172.19.90.0/24" - "172.19.90.0/24"
]
# SNMP Community (пароль для чтения) # SNMP Community (пароль для чтения)
snmp_community: "public" snmp_community: "public"
@@ -58,8 +53,6 @@
# ---------------------------------------------------------------- # ----------------------------------------------------------------
# ШАГ 2: Опрос через SNMP + Проверка портов # ШАГ 2: Опрос через SNMP + Проверка портов
# -sU -p 161: Сканируем UDP порт SNMP
# --script snmp-sysdescr: Скрипт, который тянет описание ОС
# ---------------------------------------------------------------- # ----------------------------------------------------------------
- name: SNMP Discovery - name: SNMP Discovery
shell: | shell: |
@@ -81,11 +74,10 @@
out: "{{ item.stdout }}" out: "{{ item.stdout }}"
ip: "{{ item.item }}" ip: "{{ item.item }}"
# Пытаемся вытащить строку sysDescr из вывода Nmap # Пытаемся вытащить строку sysDescr
# Пример: "SNMPv2-MIB::sysDescr.0: RouterOS rb750..."
snmp_desc: "{{ out | regex_search('sysDescr\\.0: ([^\\n]+)', '\\1') | first | default('') }}" snmp_desc: "{{ out | regex_search('sysDescr\\.0: ([^\\n]+)', '\\1') | first | default('') }}"
# Определяем тип на основе SNMP ответа (или открытых портов, если SNMP молчит) # Определяем тип
detected_type: >- detected_type: >-
{% if 'Windows' in snmp_desc or '445/tcp open' in out %}windows {% if 'Windows' in snmp_desc or '445/tcp open' in out %}windows
{% elif 'RouterOS' in snmp_desc or 'MikroTik' in snmp_desc or '8291/tcp open' in out %}mikrotik {% elif 'RouterOS' in snmp_desc or 'MikroTik' in snmp_desc or '8291/tcp open' in out %}mikrotik
@@ -93,8 +85,6 @@
{% elif 'JetDirect' in snmp_desc or 'LaserJet' in snmp_desc or 'Samsung' in snmp_desc or 'Kyocera' in snmp_desc or '9100/tcp open' in out %}printer {% elif 'JetDirect' in snmp_desc or 'LaserJet' in snmp_desc or 'Samsung' in snmp_desc or 'Kyocera' in snmp_desc or '9100/tcp open' in out %}printer
{% else %}other{% endif %} {% else %}other{% endif %}
# Формируем имя: Либо берем из SNMP, либо генерируем host_IP
# Часто в SNMP имя есть в sysName, но для упрощения оставим генерацию или возьмем первое слово из описания
host_data: host_data:
ip: "{{ ip }}" ip: "{{ ip }}"
type: "{{ detected_type }}" type: "{{ detected_type }}"
@@ -185,7 +175,6 @@
# ---------------------------------------------------------------- # ----------------------------------------------------------------
# ШАГ 7: Отправка в Semaphore (Принтеры) # ШАГ 7: Отправка в Semaphore (Принтеры)
# Принтеры полезно видеть, но ansible ими обычно не управляет
# ---------------------------------------------------------------- # ----------------------------------------------------------------
- block: - block:
- set_fact: - set_fact: