Контроллер домена ALD Pro#

Развертывание контроллера домена ALD Pro с использованием коллекции astra.ald_pro из реестра Astra Automation Hub позволяет автоматизировать большую часть рутинных операций.

Описание сценария#

Роль astra.ald_pro.controller из реестра коллекций Astra Automation Hub позволяет за несколько минут в автоматическом режиме развернуть контроллер домена ALD Pro.

Процесс развертывания контроллера домена ALD Pro состоит из следующих этапов:

  1. Создание стенда.

    В качестве стенда в этом руководстве используется ВМ VirtualBox, созданная с помощью Vagrant.

    Она обладает следующими характеристиками:

    • количество ядер CPU – 4;

    • объем RAM, ГБ – 4;

    • объем хранилища, ГБ – 30;

    • операционная система – Astra Linux Special Edition 1.7.3 без графического интерфейса;

    • уровень защищенности ОС – максимальный («Смоленск»);

    • выключено разрешение имен с помощью служб хостовой машины.

  2. Подготовка файлов Ansible:

    • requirements.yml – зависимости;

    • ansible.cfg – настройки Ansible;

    • inventory – инвентарь;

    • playbook.yml – playbook, содержащий сценарии настройки управляемого узла;

    • vars.yml – значения переменных.

  3. Настройка стенда с помощью Ansible.

    Для запуска Ansible используется образ, описанный в документе Среда исполнения.

Развертываемый контроллер домена ALD Pro обладает следующими характеристиками:

  • Имя домена – aldpro.example.com.

  • FQDN контроллера домена – dc01.aldpro.example.com.

  • Учетные данные администратора домена:

    • название учетной записи пользователя – admin;

    • пароль – p@ssW0а!.

Для подключения к стенду используется протокол SSH.

Подготовка к работе#

Подготовьте рабочее окружение:

  1. Изучите описание коллекции astra.ald_pro. Обратите внимание на обязательные и опциональные переменные роли astra.ald_pro.controller.

  2. Подготовьте управляющий узел к работе с реестром Astra Automation Hub и стендом согласно инструкции.

  3. Установите Vagrant и его расширение для работы с образами Astra Linux согласно инструкции.

  4. Создайте каталог для хранения файлов проекта, например:

    mkdir ~/aa-ald-pro/
    

    Примечание

    Далее этот каталог называется каталогом проекта. Все упомянутые ниже файлы следует создавать в этом каталоге, если явно не указано иное.

  5. Согласно инструкции создайте пару ключей SSH, которая будет использоваться для подключения к ВМ.

Развертывание ВМ#

Для подготовки ВМ выполните следующие действия:

  1. Создайте файл Vagrantfile со следующим содержимым:

    # frozen_string_literal: true
    
    Vagrant.configure('2') do |config|
      config.vm.box = 'alse-vanilla-max/1.7.3' # Имя бокса
    
      # Ссылка на образ
      config.vm.box_url = 'https://dl.astralinux.ru/vagrant/alse-vanilla-max%2F1.7.3'
    
      config.vm.provision 'file',
                          source: '~/.ssh/deployment.pub',
                          destination: '/home/vagrant/.ssh/deployment.pub'
    
      config.vm.provision 'shell',
                          inline: 'cat /home/vagrant/.ssh/deployment.pub >> /home/vagrant/.ssh/authorized_keys'
    
      # Настройка параметров ВМ
      config.vm.define 'dc01' do |node|
        node.vm.hostname = 'dc01' # Короткое имя хоста
    
        # Настройки, специфичные для VirtualBox
        node.vm.provider 'virtualbox' do |vb|
          vb.cpus = 4 # Кол-во ядер CPU
          vb.memory = 4296 # Объем RAM, МБ
          vb.auto_nat_dns_proxy = false # Не использовать DNS-прокси
    
          vb.customize ['modifyvm', :id, '--natdnshostresolver1', 'off']
          vb.customize ['modifyvm', :id, '--natdnsproxy1', 'off']
        end
    
        # Параметры сети
        node.vm.network 'private_network',
                        ip: '192.168.56.11', # Статический IP-адрес
                        netmask: '255.255.255.0', # Маска подсети
                        dhcp_enabled: false # Запрет использования DHCP
    
        node.vm.provision 'shell', inline: <<~SCRIPT
          cat <<EOF > /etc/dhcp/dhclient-enter-hooks.d/resolv
          make_resolv_conf () {
            true
          }
          EOF
        SCRIPT
      end
    end
    

    В ALD Pro используется собственный DNS-сервер, поэтому необходимо:

    1. Отключить разрешение имен через проксирование DNS-запросов в хостовую ОС:

      vb.customize ['modifyvm', :id, '--natdnshostresolver1', 'off']
      vb.customize ['modifyvm', :id, '--natdnsproxy1', 'off']
      
    2. Изменить настройки клиента DHCP таким образом, чтобы он не вносил изменений в конфигурационный файл /etc/resolv.conf.

      С этой целью в конце настройки ВМ выполняется сценарий, создающий в каталоге /etc/dhcp/dhclient-enter-hooks.d/ файл resolv. В этом файле содержится функция, выполняемая при формировании конфигурационного файла /etc/resolv.conf. В данном случае она возвращает значение true, не выполняя никаких дополнительных действий.

      node.vm.provision 'shell', inline: <<~SCRIPT
        cat <<EOF > /etc/dhcp/dhclient-enter-hooks.d/resolv
        make_resolv_conf () {
          true
        }
        EOF
      SCRIPT
      
  2. Для создания и запуска ВМ с помощью Vagrant в каталоге проекта выполните команду:

    vagrant up
    

Подготовка Ansible#

Подготовьте ресурсы, необходимые для использования Ansible.

  1. Создайте файл ansible.cfg, содержащий настройки Ansible для проекта:

    [defaults]
    collections_path = collections
    host_key_checking = false
    ansible_python_interpreter = /usr/bin/python3
    inventory = inventory
    

    где

    • collections_path – путь к каталогу с файлами коллекций.

    • host_key_checking – проверка ключей SSH при подключении к управляемым узлам. В данном случае она отключена, так как playbook будет запускаться внутри контейнера.

    • ansible_python_interpreter – версия Python, которую следует использовать на управляемых узлах.

    • inventory – путь к файлу инвентаря.

  2. Создайте файл инвентаря inventory:

    [all]
    dc01 ansible_host=192.168.56.11 ansible_user=vagrant ansible_ssh_private_key_file=/root/.ssh/deployment
    

    В этом файле содержатся настройки подключения к управляемому узлу dc01:

    • Название учетной записи пользователя – vagrant.

    • IP-адрес – 192.168.56.11.

      Должен совпадать с IP-адресом, указанным в Vagrantfile.

    • Путь к файлу приватного ключа SSH, используемого для подключения к ВМ.

  3. Создайте файл vars.yml:

    ---
    aldpro_domain: aldpro.example.com
    aldpro_pdc_ip: 192.168.56.11
    aldpro_pdc_name: dc01
    aldpro_admin_password: p@ssW0rD!
    

    При развертывании контроллера ALD Pro обязательно должны быть заданы:

    • имя домена;

    • IP-адрес и FQDN контроллера домена;

    • пароль администратора домена.

    В файле vars.yml указанные параметры заданы через значения переменных роли astra.ald_pro.controller:

    • aldpro_domain – имя домена.

    • aldpro_pdc_ip – IP-адрес контроллера домена.

      Предупреждение

      IP-адрес контроллера домена должен совпадать с IP-адресом ВМ, указанным в Vagrantfile.

    • aldpro_pdc_name – сетевое имя контроллера домена (при выполнении playbook автоматически расширяется до FQDN путем присоединения имени домена).

    • aldpro_admin_password – пароль администратора домена.

  4. Создайте файл playbook playbook.yml:

    ---
    - name: Set up ALD Pro domain controller
      hosts: dc01
      become: true
      vars_files:
        - vars.yml
      roles:
        - role: astra.ald_pro.controller
    
  5. Создайте файл зависимостей Ansible requirements.yml:

    ---
    collections:
      - name: astra.ald_pro
        type: git
        version: 0.2.0
        source: ssh://git@hub.astra-automation.ru:2222/aa-gca/ARFA/ald_pro.git
    

    В этом файле указаны параметры подключаемой коллекции:

    • name – название коллекции из реестра Astra Automation Hub, в данном случае – astra.ald_pro.

    • type – способ установки. Для установки коллекций из реестра Astra Automation Hub используется Git.

    • version – версия используемой коллекции, 0.2.0.

    • source – ссылка на репозиторий Git, в котором хранится коллекция.

Запуск playbook#

Чтобы развернуть контроллер домена ALD Pro с параметрами, описанными в конфигурационном файле playbook.yml, выполните в каталоге проекта следующие действия:

  1. Запустите Docker-контейнер с EE:

    docker run \
       --rm \
       --interactive \
       --tty \
       --volume ~/.ssh/deployment:/root/.ssh/deployment \
       --volume ~/.ssh/hub.astra-automation.ru:/root/.ssh/id_rsa \
       --volume "$(pwd):/app" \
       registry.astralinux.ru/aa/aa-base-ee \
       bash -c 'ansible-galaxy install -r requirements.yml && `
               `ansible-playbook playbook.yml'
    

    Подробное описание EE см. в документе Среда исполнения.

  2. В терминал выводится сообщение о подключении к Astra Automation Hub:

    Cloning into '/root/.asible/tmp/ansible-local-******'...
    The authenticity of host '[hub.astra-automation.ru]:2222 ([84.201.175.30]:2222)' can't be established.
    ECDSA key fingerprint is SHA256:*******.
    Are you sure you want to continue connecting (yes/no)?
    

    Введите значение yes и нажмите Enter.

  3. Если приватный ключ SSH для доступа к реестру Astra Automation Hub защищен паролем, будет выведен запрос на его ввод:

    Enter passphrase for key '/root/.ssh/id_rsa':
    

    Введите пароль и нажмите Enter. Дождитесь выполнения playbook. По окончании выполнения в терминал выводится строка вида:

    dc01         : ok=30   changed=10   unreachable=0   failed=0   skipped=4   rescued=0   ignored=0
    

Проверка работоспособности развернутой инфраструктуры#

Чтобы проверить корректность развертывания контроллера домена ALD Pro, выполните следующие действия:

  1. Подключитесь к ВМ по SSH:

    vagrant ssh
    
  2. Проверьте статус служб контроллера домена:

    sudo ipactl status
    

    При успешном развертывании в терминал выводится сообщение вида:

    Directory Service: RUNNING
    krb5kdc Service: RUNNING
    kadmin Service: RUNNING
    named Service: RUNNING
    httpd Service: RUNNING
    ipa-custodia Service: RUNNING
    smb Service: RUNNING
    winbind Service: RUNNING
    ipa-otpd Service: RUNNING
    ipa-dnskeysyncd Service: RUNNING
    ipa: INFO: The ipactl command was successfull
    
  3. Для отключения от ВМ выполните команду:

    exit
    

Освобождение ресурсов#

Если созданная ВМ больше не нужна, для ее остановки и удаления в каталоге проекта выполните команду:

vagrant destroy --force

Особенности проекта#

Обратите внимание на следующие особенности проекта:

  • Опциональные и обязательные параметры роли astra.ald_pro.controller.

  • Описание переменных роли в отдельном файле.

Заключение#

В этом сценарии вы познакомились с основными шагами по развертыванию контроллера домена ALD Pro с использованием коллекции из реестра Astra Automation Hub. Из всей последовательности шагов, которые вы прошли, важно выделить следующие действия:

  • Подключение коллекции Ansible из реестра Astra Automation Hub.

  • Настройка параметров роли в отдельном файле и подключение его в playbook.