Упражнение. Создание скрипта cloud-init для использования с Azure CycleCloud

Завершено

При подготовке узлов для кластера может потребоваться выполнить пользовательские задачи конфигурации в ходе загрузки операционной системы, прежде чем какие-либо изменения, управляемые планировщиком, вступят в силу. Эти задачи могут включать, например, обновление переменных среды пути, настройку параметров разрешения имен доменных имен (DNS) или привязку узлов к домену доменных служб Microsoft Entra (AD DS).

Чтобы реализовать эту функцию, вы решили изучить использование cloud-init в кластерах Azure CycleCloud и протестировать его с помощью простого скрипта Bash, который изменяет содержимое локального файла на каждом узле. Вы намерены проверить результат, подключившись к узлам кластера и просмотрев содержимое измененных файлов.

Заметка

При создании скриптов cloud-init можно использовать любой метод сценариев или конфигурации, который операционная система, запущенная на целевых узлах, может распознавать и обрабатывать, включая традиционные скрипты оболочки, Python и YAML.

В этом упражнении вы выполните следующие задачи:

  • Задача 1. Настройка проверки подлинности на основе SSH на узлах кластера Azure CycleCloud
  • Задача 2. Добавление скрипта cloud-init в узлы кластера
  • Задача 3. Проверка функциональности cloud-init на узле планировщика
  • Задача 4. Проверка функциональности cloud-init на вычислительных узлах
  • Задача 5. Очистка среды упражнений

Заметка

Перед началом этого упражнения убедитесь, что вы успешно выполнили предыдущее упражнение.

Задача 1. Настройка проверки подлинности на основе SSH на узлах кластера Azure CycleCloud

Чтобы проверить выполнение скриптов cloud-init, подключитесь к узлам кластера с помощью Azure CycleCloud CLI из Azure Cloud Shell. Это подключение основано на проверке подлинности на основе ключей SSH, поэтому необходимо передать закрытый ключ, соответствующий открытому ключу, распределенном по узлам кластера, в домашний каталог Azure Cloud Shell.

  1. Перейдите на портал Azure и, когда появится запрос, авторизуйтесь с помощью учетной записи Майкрософт или учетной записи Microsoft Entra, обладающей ролью участника или владельца в подписке на Azure, которую вы используете в этом модуле.

  2. На портале Azure откройте Cloud Shell, выбрав значок на панели инструментов рядом с полем поиска и убедитесь, что вы выполняете сеанс Bash.

  3. В области Azure Cloud Shell на панели инструментов выберите четвертый значок, отображающий страницу с парой вертикальных стрелок, указывающих в противоположных направлениях. Затем в раскрывающемся меню выберите Загрузить.

  4. В диалоговом окне Open перейдите к расположению файла .pem, содержащего закрытый ключ, и выберите Open.

  5. Выполните следующие команды в Cloud Shell, чтобы переместить загруженный .pem файл в нужное место и настроить нужные права доступа к файлам (замените заполнитель <private_key.pem> на имя файла .pem):

    mkdir -p ~/.ssh
    mv private_key.pem ~/.ssh
    chmod 600 ~/.ssh/cc-ssh-keys.pem
    

Задача 2. Добавление скрипта cloud-init в узлы кластера

Параметр добавления скриптов к узлам кластера доступен непосредственно из графического интерфейса Azure CycleCloud. Вы будете использовать его для назначения того же скрипта cloud-init планировщику и вычислительным узлам и проверки его функциональности. Скрипт добавляет запись 10.10.10.10 cc.contoso.com в файл /etc/hosts.

  1. Если вы еще не подключены к веб-приложению Azure CycleCloud, откройте другое окно браузера и перейдите по URL-адресу https://<IP_address>. Если появится запрос, убедитесь, что вы хотите продолжить.

  2. Если вам будет предложено пройти проверку подлинности, войдите, указав учетные данные учетной записи пользователя приложения Azure CycleCloud с ролью администратора.

  3. В графическом интерфейсе Azure CycleCloud откройте страницу "Кластеры" . В списке кластеров выберите запись contoso-custom-slurm-lab-cluster, а затем выберите Изменить.

  4. Во всплывающем окне Edit contoso-custom-slurm-lab-cluster выберите запись Cloud-init и на вкладке планировщик в разделе конфигурации Cloud-init введите следующий сценарий:

    #!/bin/bash
    echo "10.10.10.10 www.contoso.com" >> /etc/hosts
    

    Снимок экрана: вкладка Cloud-init во всплывающем окне

  5. В том же всплывающем окне с выбранным элементом Cloud-init выберите каждую из оставшихся вкладок (включая cuda, hpcи htc) и введите тот же сценарий. Выберите Сохранить.

Задача 3. Проверка функциональности cloud-init на узле планировщика

Чтобы проверить функциональность cloud-init на узле планировщика, необходимо запустить кластер. Это приведет к активации развертывания узла диспетчера задач. После запуска узла вы сможете подключиться к нему из Azure Cloud Shell и убедиться, что /etc/hosts файл содержит запись 10.10.10.10.10 www.contoso.com.

  1. В окне браузера, отображающем веб-приложение Azure CycleCloud, выберите ссылку "Пуск" на странице contoso-custom-slurm-lab-cluster. При появлении запроса на подтверждение нажмите кнопку ОК.

    Заметка

    Если кластер уже запущен, необходимо завершить работу и перезапустить его, чтобы применить обновленную конфигурацию, в противном случае конфигурация не будет отображаться в последующих шагах.

  2. В списке узлов выберите запись планировщика и отслеживайте её состояние на панели сведений , ожидая, пока оно не изменится с получения на Готово.

    Заметка

    Это может занять около трех минут.

  3. В панели сведений выберите Подключиться. Во всплывающем окне Подключение к узлу: планировщик, в разделе Использование CycleCloud CLI, выберите запись, содержащую команду, которая позволяет подключиться к узлу планировщика, и выберите Закрыть:

    Снимок экрана всплывающего окна

    Заметка

    Команда должна иметь формат cyclecloud connect scheduler -c contoso-custom-slurm-lab-cluster

  4. Перейдите в окно веб-браузера с помощью панели Cloud Shell и выполните команду, скопированную на предыдущем шаге.

    Заметка

    Команда должна создать выходные данные в следующем формате:

    m@Azure:~$ cyclecloud connect scheduler -c contoso-custom-slurm-lab-cluster
    Connecting to cc-admin@40.87.52.25 (contoso-custom-slurm-lab-cluster scheduler) using SSH
    [cc-admin@ip-0A000304 ~]$
    
  5. При подключении к узлу планировщика выполните следующую команду, чтобы убедиться, что файл /etc/hosts содержит запись 10.10.10.10 www.contoso.com:

    grep "10.10.10.10 www.contoso.com" /etc/hosts
    

    Заметка

    Команда должна создать выходные данные в следующем формате:

    [cc-admin@ip-0A000304 ~]$ grep "10.10.10.10 www.contoso.com" /etc/hosts
    10.10.10.10 www.contoso.com
    

Задача 4. Проверка функциональности cloud-init на вычислительных узлах

Теперь вы повторите эквивалентную последовательность шагов, чтобы проверить функциональность cloud-init на вычислительных узлах.

Важный

Прежде чем применить эквивалентную процедуру для проверки функциональности cloud-init на вычислительных узлах, необходимо удалить и перераспределить соответствующий масштабируемый набор виртуальных машин. Этот шаг относится к кластерам на основе Slurm, так как в этом случае интеграция автомасштабирования планировщика требует, чтобы Azure CycleCloud предварительно заполнял вычислительные узлы. В результате конфигурация cloud-init, примененная ранее в этом упражнении, не влияет на уже существующие узлы.

  1. При подключении к узлу планировщика выполните следующие команды в Cloud Shell, чтобы удалить и перераспределить вычислительные узлы в кластере Azure CycleCloud и завершить подключение к узлу планировщика:

    sudo -i
    cd /opt/cycle/jetpack/system/bootstrap/slurm
    ./cyclecloud_slurm.sh remove_nodes
    ./cyclecloud_slurm.sh scale
    exit
    exit
    

    Заметка

    Вы увидите сообщения, что выполняется попытка удалить следующие узлы, а затем завершено повторное масштабирование кластера, после завершения этого шага.

  2. На вашем компьютере откройте окно веб-браузера, на котором отображается страница contoso-custom-slurm-lab-cluster веб-приложения Azure CycleCloud. На вкладке "Узлы" выберите строку htc, и на панели "Сведения" выберите запись htc-1, а затем выберите вкладку "Действия". В раскрывающемся меню выберите Пуски нажмите кнопку ОК при появлении запроса на подтверждение.

    Снимок экрана меню

  3. На панели сведений отслеживайте только что запущенный узел и дождитесь изменения состояния получения на Ready.

    Заметка

    Это может занять около трех минут.

  4. В панели сведений выберите Подключиться. В окне Подключение к узлу: htc-1 всплывающее окно выберите запись в разделе Using the CycleCloud CLI, содержащий команду, которая позволяет подключиться к узлу планировщика и выбрать Закрыть:

    снимок экрана всплывающего окна подключения к узлу: htc-1 в веб-приложении Azure CycleCloud.

    Заметка

    Команда должна иметь формат cyclecloud connect htc-1 -c contoso-custom-slurm-lab-cluster.

  5. Перейдите на панель Cloud Shell и выполните команду, скопированную на предыдущем шаге.

    Заметка

    Команда должна создать выходные данные в следующем формате:

    m@Azure:~$ cyclecloud connect htc-1 -c contoso-custom-slurm-lab-cluster
    Connecting to cc-admin@10.0.3.5 (contoso-custom-slurm-lab-cluster htc-1) through SSH bastion at cc-admin@40.87.52.25
    [cc-admin@ip-0A000305 ~]$
    
  6. При подключении к узлу htc-1 выполните следующую команду, чтобы убедиться, что /etc/hosts файл содержит запись 10.10.10.10.10 www.contoso.com:

    cat /etc/hosts | grep "10.10.10.10 www.contoso.com"
    

    Заметка

    После достижения этой точки необходимо удалить все ресурсы, развернутые в этом и предыдущих упражнениях этого модуля. Это позволяет избежать расходов, связанных с обслуживанием этих ресурсов в подписке Azure.

Задача 5. Очистка лабораторной среды

Тестирование настройки кластера с помощью приложения Azure CycleCloud завершено. Чтобы избежать ненужных затрат, связанных с использованием ресурсов Azure, теперь вы завершите кластер и удалите все ресурсы, подготовленные на протяжении упражнений этого модуля.

  1. В веб-браузере, отображающем графический интерфейс веб-приложения Azure CycleCloud, выберите ссылку "Завершить" на странице contoso-custom-slurm-lab-cluster и при появлении запроса на подтверждение нажмите кнопку ОК.

  2. Контролируйте процесс завершения.

    Заметка

    Процесс включает отмену предоставления виртуальной машины Azure, которая выполняет роль головного узла кластера. Это может занять около пяти минут.

    Заметка

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

  3. На портале Azure перейдите в колонку группы ресурсов, в которой размещаются ресурсы кластера, выберите Удалить группу ресурсов на панели инструментов. В поле Введите имя группы ресурсов, чтобы подтвердить удаление текстовое поле, введите имя группы ресурсов и выберите Удалить. Выберите Удалить еще раз, чтобы подтвердить удаление.

    Заметка

    С ресурсами Slurm могут быть связаны дополнительные группы ресурсов. Чтобы избежать дополнительных расходов, обязательно удалите все эти группы ресурсов, связанные с Slurm, и их ресурсы.

Поздравляю! Вы успешно завершили третье и окончательное упражнение этого модуля. В этом упражнении вы изучили использование cloud-init в кластерах Azure CycleCloud и проверили его с помощью простого скрипта Bash, который изменил содержимое локального файла на каждом узле. Вы подтвердили результат, подключившись к узлам кластера и просмотрев содержимое измененных файлов. После этого вы завершили кластер и удалили все ресурсы кластера, используемые в этом модуле, чтобы избежать ненужных затрат.