Задание №8: Инвентаризация рабочих мест через Ansible на BR-SRV
В данном задании на сервере управления BR-SRV настраивается автоматизированная инвентаризация сетевых узлов HQ-SRV и HQ-CLI с помощью инструмента автоматизации Ansible.
Плейбук get_hostname_address.yml копируется с диска Additional.iso (или создаётся в каталоге /etc/ansible/). При выполнении плейбук опрашивает целевые машины через сбор фактов gather_facts: true и сохраняет отчёты в формате .yml в каталог /etc/ansible/PC-INFO/ с именами компьютеров, фиксируя имя хоста (Hostname) и его сетевой IP-адрес (IP_Address).
Где выполнять
Все действия выполняются под пользователем root на сервере BR-SRV.
1. Пошаговая инструкция на сервере BR-SRV
Выполните следующие шаги на сервере BR-SRV:
Шаг 1. Монтирование диска Additional.iso и проверка
Проверяем точку монтирования /mnt/:
ls -l /mnt/Если команда возвращает
total 0(диск ещё не смонтирован), выполняем монтирование привода:bashmount -o loop /dev/sr0 /mnt/ -v
Шаг 2. Подготовка каталога и копирование плейбука
Копируем файл плейбука в директорию Ansible и создаём подкаталог для отчётов:
cp /mnt/playbook/get_hostname_address.yml /etc/ansible/
cd /etc/ansible/
mkdir -p PC-INFOШаг 3. Создание или проверка содержимого get_hostname_address.yml
Если файл необходимо создать или отредактировать вручную:
cat << "EOF" > get_hostname_address.yml
---
- name: "Get data from hosts"
gather_facts: true
hosts:
- HQ-SRV
- HQ-CLI
tasks:
- name: "Creating a data file"
copy:
dest: /etc/ansible/PC-INFO/{{ ansible_hostname }}.yml
content: |
Hostname: {{ ansible_hostname }}
IP_Address: {{ ansible_default_ipv4.address }}
delegate_to: localhost
EOFКак работает плейбук
gather_facts: true— запускает опрос системных переменных узлов (имя машины, IP-адрес интерфейса).hosts: HQ-SRV, HQ-CLI— список опрашиваемых целевых хостов (должны быть предварительно прописаны в/etc/ansible/hosts).dest: /etc/ansible/PC-INFO/.yml— сохраняет файл с именем инвентаризированного компьютера.delegate_to: localhost— указывает создавать файл локально на самом сервереBR-SRV, а не на удалённых узлах.
Шаг 4. Проверка синтаксиса плейбука
Перед запуском обязательно проверяем корректность структуры YAML:
ansible-playbook --syntax-check get_hostname_address.ymlШаг 5. Запуск инвентаризации
Выполняем плейбук:
ansible-playbook get_hostname_address.ymlПример успешного выполнения:
PLAY [Get data from hosts] **********************************************************
TASK [Gathering Facts] **************************************************************
ok: [HQ-SRV]
ok: [HQ-CLI]
TASK [Creating a data file] *********************************************************
changed: [HQ-SRV -> localhost]
changed: [HQ-CLI -> localhost]
PLAY RECAP **************************************************************************
HQ-CLI : ok=2 changed=1 unreachable=0 failed=0
HQ-SRV : ok=2 changed=1 unreachable=0 failed=02. Проверка сформированных отчётов
Проверяем наличие и содержимое файлов в каталоге PC-INFO:
Просмотр отчёта сервера HQ-SRV:
bashcat PC-INFO/hq-srv.ymlПример вывода:
yamlHostname: hq-srv IP_Address: 192.168.1.10Просмотр отчёта рабочей станции HQ-CLI:
bashcat PC-INFO/hq-cli.ymlПример вывода:
yamlHostname: hq-cli IP_Address: 192.168.2.10
Оба файла с расширением .yml успешно созданы в поддиректории /etc/ansible/PC-INFO/ и содержат требуемые данные!
