Пять лучших вещей, которые должны знать разработчику Azure (5 серии деталей)
Итак, вы хотите быть лазурным Dev и универсальным мастером инфраструктуры? Давайте начнем с основ, виртуальных машин! В Предыдущая статья , общий вариант использования виртуальных машин — это мигрирующие приложения из выделенного оборудования. Вы хотите полного управления машиной для установки необходимого программного обеспечения для приложения или настройки хранения и сети.
Azure предоставляет много способов создания и настройки виртуальных машин от Azure CLI к Портал Azure Анкет В этой статье мы сначала создадим виртуальную машину, используя портал, чтобы понять требования и процесс; Тогда мы сделаем это с кодом, используя Нативный провайдер Pulumi’s Azure , который построен непосредственно из ASURE Resource Manager API.
Создание виртуальной машины с порталом Azure
При создании виртуальных машин вам следует рассмотреть операционную систему, требования к хранению и размер виртуальной машины в отношении соотношения ЦП и памяти. Azure предлагает Много размеров для виртуальных машин в зависимости от вашей рабочей нагрузки. Если вы мигрируете традиционное приложение N-уровня в облако, лучше всего начать с виртуальных машин, которые соответствуют вашей текущей конфигурации.
В этой статье используется простой пример для развертывания статического веб -приложения на виртуальной машине, чтобы проиллюстрировать процесс. Чтобы начать, войдите в Портал Azure Анкет
Шаг 1:
Под Azure Services
, выберите Виртуальные машины
Выберите Создать
> Виртуальная машина
Шаг 2: Создать ресурсную группу
Группа ресурсов — это логическая коллекция виртуальных машин, хранилища, виртуальных сетей, веб -приложений и баз данных. Пользователи обычно объединяют связанные с ней ресурсы приложения. Мы создадим myresourcegroup
для нашего приложения.
Шаг 3: Настройте виртуальную машину
Далее мы предоставим подробную информацию для виртуальной машины, дав ему имя, myvm
, установление Регион
и Варианты доступности
к Избыточность инфраструктуры не требуется
Анкет Мы используем изображение Ubuntu и установим размер виртуальной машины Standard_ds1_v2
Анкет
Шаг 4: Настройте учетную запись администратора
Виртуальные машины — это инфраструктура в качестве услуги, что означает, что вам придется выполнять обеспечение, обновления и обслуживание. Вам понадобится учетная запись администратора для выполнения этих задач. Чтобы сохранить этот пример простым, мы будем использовать пароль в качестве типа аутентификации, но на практике вы должны использовать Инфраструктура открытого ключа (PKI) Потому что это более безопасно, чем пароль, который может быть связан с грубым.
Шаг 5: Настройте входящие порты
Вы должны войти в свою виртуальную машину, а также разрешать входящие запросы на статический веб -сайт. Выберите оба Http (80)
а также SSH (22)
Затем нажмите на Обзор + Create
Анкет Обратите внимание, что вы также можете добавить хранилище, нажав на диски, но мы будем использовать значения по умолчанию для этого примера.
Если ваша конфигурация действительна, вы увидите следующий экран. Нажмите Создать
создать создание виртуальной машины.
Шаг 6: Наслаждайтесь вашим успехом
Вы можете пойти и проверить свою виртуальную машину, нажав на Перейти к ресурсу
Анкет
Что ж, это кажется простым и легким, но что, если вам пришлось развернуть несколько виртуальных машин для приложения, которое включает в себя веб -сервер, работник для обработки запросов, систему очереди сообщений и базу данных? Что, если в вашей текущей системе есть несколько веб -серверов и бэкэнд -работников за балансировщиком нагрузки? Вам придется создавать, развернуть и поддерживать каждую виртуальную машину, потому что это IAAS.
Существует лучший способ использования инфраструктуры в качестве методологий кода и облачной инженерии для создания автоматического процесса для создания, обеспечения и поддержания виртуальных машин.
Облачная инженерия на помощь!
Создание и обеспечение одной виртуальной машины не сложно, но мигрирование традиционного применения N-уровня часто требует нескольких виртуальных машин, в том числе тех, которые необходимы для горизонтального масштабирования. Именно здесь инфраструктура в качестве кода превосходит. С помощью Облачная инженерия , мы можем автоматизировать сборка , развернуть и Управление процесс для любой инфраструктуры или приложения.
Давайте посмотрим на пример развертывания веб -сервера с помощью виртуальной машины. Полный пример доступен в любом Питон или Машинопись . Мы рассмотрим код Python.
Мы используем нативного поставщика Azure, который реализует наилучшую возможную поддержку платформы Azure в Pulumi. Он подвергает всю поверхность API Azure разработчикам и операторам. Нативный провайдер поддерживает более 1000 типов ресурсов, причем больше добавлено, поскольку они выпускаются Azure.
Сценарий начинается с импорта нативных модулей SDK Pulumi Azure и получения параметров конфигурации, таких как имя пользователя и пароль, необходимые для входа на сервер для обеспечения. Это также создает ресурсную группу.
import base64 from pulumi import Config, Output, export import pulumi_azure_native.compute as compute import pulumi_azure_native.network as network import pulumi_azure_native.resources as resources config = Config() username = config.require("username") password = config.require("password") resource_group = resources.ResourceGroup("server")
Следующая часть создает сетевые ресурсы, в том числе динамически распределенный публичный IP -адрес для сервера.
net = network.VirtualNetwork( "server-network", resource_group_name=resource_group.name, address_space=network.AddressSpaceArgs( address_prefixes=["10.0.0.0/16"], ), subnets=[network.SubnetArgs( name="default", address_prefix="10.0.1.0/24", )]) public_ip = network.PublicIPAddress( "server-ip", resource_group_name=resource_group.name, public_ip_allocation_method=network.IPAllocationMethod.DYNAMIC) network_iface = network.NetworkInterface( "server-nic", resource_group_name=resource_group.name, ip_configurations=[network.NetworkInterfaceIPConfigurationArgs( name="webserveripcfg", subnet=network.SubnetArgs(id=net.subnets[0].id), private_ip_allocation_method=network.IPAllocationMethod.DYNAMIC, public_ip_address=network.PublicIPAddressArgs(id=public_ip.id), )])
А вот наша страница веб -сервера и индекса с использованием Python’s Simplehttpserver
Анкет
init_script = """#!/bin/bash echo "Hello, World!" > index.html nohup python -m SimpleHTTPServer 80 &"""
Наконец, вот как мы создаем виртуальную машину. Мы добавляем виртуальную машину в группу ресурсов и связываем network_profile
к Network_iface
что мы определили ранее. Мы устанавливаем vm_size
, настроить OS_PROFILE
с именем хоста, имени пользователя и паролем. В примере мы создаем Профиль хранения
и используйте Ubuntu для профиля изображения. Сценарий заканчивается экспортом публичного IP -адреса веб -сервера.
vm = compute.VirtualMachine( "server-vm", resource_group_name=resource_group.name, network_profile=compute.NetworkProfileArgs( network_interfaces=[ compute.NetworkInterfaceReferenceArgs(id=network_iface.id), ], ), hardware_profile=compute.HardwareProfileArgs( vm_size=compute.VirtualMachineSizeTypes.STANDARD_A0, ), os_profile=compute.OSProfileArgs( computer_name="hostname", admin_username=username, admin_password=password, custom_data=base64.b64encode(init_script.encode("ascii")).decode("ascii"), linux_configuration=compute.LinuxConfigurationArgs( disable_password_authentication=False, ), ), storage_profile=compute.StorageProfileArgs( os_disk=compute.OSDiskArgs( create_option=compute.DiskCreateOptionTypes.FROM_IMAGE, name="myosdisk1", ), image_reference=compute.ImageReferenceArgs( publisher="canonical", offer="UbuntuServer", sku="16.04-LTS", version="latest", ), )) combined_output = Output.all(vm.id, public_ip.name, resource_group.name) public_ip_addr = combined_output.apply( lambda lst: network.get_public_ip_address( public_ip_address_name=lst[1], resource_group_name=lst[2])) export("public_ip", public_ip_addr.ip_address)
На первый взгляд, это кажется более сложным, чем использование портала Azure. Критическая вещь, которую нужно помнить, заключается в том, что этот процесс воспроизводим, поэтому, если вам нужны дополнительные виртуальные машины, вы можете добавить цикл для создания необходимого количества виртуальных машин.
Но как насчет обеспечения? Поскольку это код, вы можете написать Подготовка скрипта Используя Пулуми динамический поставщик Это подключается к WebServer, копирует файлы и выполняет команды. Вот фрагмент кода динамического поставщика, который копирует файлы в вашу виртуальную машину, используя SCP
Анкет
# CopyFileProvider implements the resource lifecycle for the CopyFile resource type below. class CopyFileProvider(ProvisionerProvider): def on_create(self, inputs: Any) -> Any: ssh = connect(inputs['conn']) scp = ssh.open_sftp() try: scp.put(inputs['src'], inputs['dest']) finally: scp.close() ssh.close() return inputs # CopyFile is a provisioner step that can copy a file over an SSH connection. class CopyFile(dynamic.Resource): def __init__(self, name: str, conn: pulumi.Input[ConnectionArgs], src: str, dest: str, opts: Optional[pulumi.ResourceOptions] = None): self.conn = conn """conn contains information on how to connect to the destination, in addition to dependency information.""" self.src = src """ src is the source of the file or directory to copy. It can be specified as relative to the current working directory or as an absolute path. This cannot be specified if content is set. """ self.dest = dest """dest is required and specifies the absolute path on the target where the file will be copied to.""" super().__init__( CopyFileProvider(), name, { 'dep': conn, 'conn': conn, 'src': src, 'dest': dest, 'fileHash': sha256sum(src), }, opts, )
Резюме
Хотя относительно просто создавать виртуальные машины, используя портал Azure или CLI Azure, обеспечение и поддержание их вручную может быть сложным и подверженным ошибкам. Если мы используем код для создания, развертывания и управления виртуальными машинами и приложениями, мы можем автоматизировать процесс, внедряющий обновления и повторяемые процессы обслуживания и уменьшить ошибки. Мы можем снести существующие виртуальные машины и заменить их обновленными и предоставленными версиями, используя инфраструктуру в качестве кода. Это много информации, если вы начинаете свое облачное путешествие Azure, поэтому попробуйте что -нибудь веселое и разверните Minecraft on azure !
Пять лучших вещей, которые должны знать разработчику Azure (5 серии деталей)
Оригинал: «https://dev.to/pulumi/top-5-things-an-azure-developer-needs-to-know-vms-35g4»