Поделиться через


Добавление пользователя на виртуальную машину Linux в Azure с помощью cloud-init

Область применения: ✔️ Виртуальные машины Linux ✔️ Гибкие масштабируемые наборы

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

Добавление пользователя в виртуальную машину с помощью cloud-init

Одна из первых задач, которую необходимо выполнить на любой из новых виртуальных машин Linux, — добавить дополнительного пользователя для себя, чтобы не использовать учетную запись root. Для безопасности и удобства мы рекомендуем применять ключи SSH. Их можно добавить в файл ~/.ssh/authorized_keys с помощью следующего скрипта cloud-init.

Чтобы добавить пользователя на виртуальную машину Linux, создайте файл в текущей оболочке с именем cloud_init_add_user.txt и вставьте в него следующую конфигурацию. Для этого примера создайте файл в Cloud Shell (не на локальном компьютере). Вы можете использовать любой редактор. Убедитесь, что весь файл cloud-init скопирован правильно, особенно первая строка. Необходимо указать открытый ключ (например, содержимое файла ~/.ssh/id_rsa.pub) в качестве значения ssh-authorized-keys: — здесь оно сокращено для упрощения примера.

#cloud-config
users:
  - default
  - name: myadminuser
    groups: sudo
    shell: /bin/bash
    sudo: ['ALL=(ALL) NOPASSWD:ALL']
    ssh-authorized-keys:
      - ssh-rsa AAAAB3<snip>

Примечание

Файл #cloud-config содержит параметр - default. Этот параметр позволяет добавить пользователя к существующему пользователю с правами администратора, созданному во время подготовки. Если создать пользователя без параметра - default, автоматически созданный платформой Azure администратор будет перезаписан.

Прежде чем развернуть этот образ, необходимо создать группу ресурсов с помощью команды az group create. Группа ресурсов Azure является логическим контейнером, в котором происходит развертывание ресурсов Azure и управление ими. В следующем примере создается группа ресурсов с именем myResourceGroup в расположении eastus.

az group create --name myResourceGroup --location eastus

Теперь создайте виртуальную машину с помощью команды az vm create и укажите файл cloud-init с помощью --custom-data cloud_init_add_user.txt, как показано ниже.

az vm create \
  --resource-group myResourceGroup \
  --name vmName \
  --image imageCIURN \
  --custom-data cloud_init_add_user.txt \
  --generate-ssh-keys

Примечание

Замените значения myResourceGroup, vmName и imageCIURN соответствующим образом. Убедитесь, что выбран образ с Cloud-init.

Подключитесь по протоколу SSH к общедоступному IP-адресу виртуальной машины, который указан в выходных данных предыдущей команды. Введите собственных пользователей и publicIpAddress следующим образом:

ssh <user>@<publicIpAddress>

Чтобы проверить, добавлен ли пользователь и правильное ли указаны группы на виртуальной машине, просмотрите содержимое файла /etc/groups, как показано ниже.

sudo cat /etc/group

В следующем примере выходных данных демонстрируется, что пользователь из файла cloud_init_add_user.txt был успешно создан на виртуальной машине и добавлен в соответствующую группу.

root:x:0:
<snip />
sudo:x:27:myadminuser
<snip />
myadminuser:x:1000:

Дальнейшие действия

Дополнительные примеры изменения конфигурации с помощью cloud-init см. в следующих статьях: