Задача:

  • Project 2 – Добавление A записи на DNS сервере
    • Проект должен быть выполнен средствами Ansible
    • Используйте папку project_2
    • В качестве плейбука используйте файл playbook_2.yml в каталоге project_2
    • Проект должен включать в себя все необходимые действия по добавлении записи на DNS сервере для разрешения доменного имени сайта
      • Используйте DNS сервер настроенный в 1 день
      • Для указания имени сайта и его адрес используйте внешние переменные

Вариант реализации:

ANS:

  • Из под пользователя user переходим в директорию /opt/ansible:
cd /opt/ansible
  • Создаём первый playbook_2.yml в директории project_2:
vim project_2/playbook_2.yml
    • Содержимое playbook_2.yml:
      • данный playbook - выполняет следующее:
        • определяются внешние переменные dns_record_name и dns_record_address - которые необходимо определить при запуске playbook-сценария с ключом -e или --extra-vars;
        • приведён пример каким образом необходимо передавать значение внешних переменных при запуске playbook-сценария;
        • добавляется строка в файл в которой содердатся все остальные записи для зоны прямого просмотра;
        • в случае если данная строка добавляется первый раз (changed) - тогда производится перезапуск службы named, а если эта строка уже присутствовала (ok) - тогда перезапуск службы named - не происходит
---
- name: Project 2 – Adding A record to the DNS server
  hosts: Router
  become: true

  vars:
    # Extra vars, examples: -e "dns_record_name=web dns_record_address=192.168.100.10"
    dns_record_name: ""
    dns_record_address: ""

  tasks:
    - name: Adding records on the DNS server
      lineinfile:
        path: /opt/dns/company.prof.db
        line: "{{ dns_record_name }} IN A {{ dns_record_address }}"
        state: present
      notify:
        - Restarted named

  handlers:
    - name: Restarted named
      service:
        name: named
        state: restarted

Можно посмотреть в сторону модуля nsupdate

  • Выполняем запуск playbook-сценария с указанием внешних переменных и их значений:
ansible-playbook project_2/playbook_2.yml -e "dns_record_name=web dns_record_address=192.168.100.10"
    • Результат:

ansible-playbook project_2/playbook_2.yml -e "dns_record_name=site dns_record_address=192.168.100.20"
    • Результат:

  • Проверяем:

Последнее изменение: среда, 3 июля 2024, 15:48