Рубрики
Uncategorized

Разверните виртуальную машину Windows для Azure с помощью Anbible

Введение Ansible — это инструмент управления конфигурацией, используемый для управления и применения конфигурации … Помечено с Azure, Anisible, Devops.

Anisible — это инструмент управления конфигурацией, используемый для контроля и применения изменений конфигурации в инфраструктуру. Однако, прежде чем вы сможете применить изменения в инфраструктуре, сначала должна существовать. Anisible имеет несколько модулей Azure, которые позволяют развертывать ресурсы в Azure. Этот учебник будет проходить вас через развертывание виртуальной машины Windows для Azure с помощью Anisible PlayBook. К концу учебного пособия вы поймете, как использовать несколько азаронных модулей Azure для развертывания рабочих нагрузок для Azure.

Оглавление

  • Предварительные условия
  • Шаг 1 — Создайте группу ресурсов
  • Шаг 2 — Создать виртуальную сеть
  • Шаг 3 — Создать публичный IP
  • Шаг 4 — Создайте группу безопасности сети
  • Шаг 5 — Создать виртуальную сетевую карту
  • Шаг 6 — Создать виртуальную машину
  • Шаг 7 — Развернуть виртуальную машину Azure Windows
  • Вывод

Предварительные условия

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

  • Anisible установлен
    • Anisible [Azure] упакован установлен
  • Подключиться к Azure с помощью Anisible

Обязательные модули, необходимые для развертывания виртуальной машины Azure

Создание виртуальной машины в Azure требует нескольких разных Azure Resources; Группа ресурсов, виртуальная сеть, подсеть, общедоступный IP-адрес, группа сетевых безопасности, карта сетевого интерфейса и сама виртуальная машина. Каждый из этих ресурсов Azure может управляться и модифицироваться с использованием любого модуля. Эти неизбежные модули позволяют вам кодифицировать свою инфраструктуру в файлах YAML в форме анабимых игровых книг. Ниже приведен список неблагоприятных модулей, которые используются в этом руководстве. Тем не менее, многие большие существующие модули существуют и можно найти в Аналогичный индекс модуля. Вам не нужно устанавливать все эти модули независимо, они включены в Anisible Azure Package.

Шаг 1 — Создайте группу ресурсов

Группы ресурсов Azure используются для логически групповых ресурсов. Группы ресурсов помогают организовать вашу облачную среду и также могут быть использованы для предоставления доступа к конкретным нагрузкам в рамках ресурсной группы. Они также требуются при создании других ресурсов Azure. Такие как виртуальные сети. Еще одним преимуществом ресурсных групп является легкой очисткой. Когда вы удалите группу ресурсов, все внутри него удаляется.

Для того, чтобы создать группу ресурсов Azure с помощью Anisible Use Azure_RM_Resourcegroup модуль. Требуется два параметра; Имя и место расположения . Параметр Name станет именем группы ресурсов, а местоположение — это зона Azure, встроенная группа ресурсов. Размещение группы ресурсов в одном регионе не означает, что вы можете использовать только этот регион для других ресурсов Azure внутри группы ресурсов. Это просто там, где расположена метаданные группы ресурсов.

- name: Create resource group
    azure_rm_resourcegroup:
    name: rg-cs-ansible
    location: eastus

Шаг 2 — Создать виртуальную сеть

Виртуальные сети позволяют создавать вашу частную сеть в пределах Azure. Виртуальные сети используются для подключения ресурсов, работающих в рамках центра обработки данных Azure. Хотя они виртуальные и существуют в недоступном для вас. Те же самые сетевые принципы применяются. Виртуальная сеть требует двух основных частей; адресное пространство и подсеть или подсети.

Для развертывания виртуальной сети в Azure с помощью Anisible вам понадобится воспользоваться двумя анамическими модулями; Azure_rm_virtualnetwork и Azure_RM_SUBNET. . Модуль подсети зависит от сетевого модуля и по этой причине сетевой модуль будет определен первым. Anisible — это процедурный, а порядок задач очень важен.

Задача Создать виртуальную сеть требует трех параметров; Resource_Group , Имя и Address_prefixes Отказ Resource_Group — это имя, приведенное к предыдущим задачам, которые создали группу ресурсов. VNet-CS-Web Имя приведено для виртуального сетевого ресурса и будет использоваться при создании подсети. Адрес префиксов 10.0.0.0.0/16 Определяет адресное пространство виртуальной сети.

- name: Create virtual network
    azure_rm_virtualnetwork:
    resource_group: rg-cs-ansible
    name: vnet-cs-web
    address_prefixes: "10.0.0.0/16"

Добавить подсеть Это следующие задачи, которые используются для добавления диапазона подсети в виртуальную сеть. Подсеть — это логическое подразделение IP-сети, и в этом примере используется для вышки раздела IP-адресов для веб-машин в этой сети. Задача использует Azure_RM_SUBNET Ошибный модуль. Подсеть дана имя Снеп-CS-Web сопровождается префиксом адреса подсети 10.0.1.0/24 И он указывает виртуальную сеть, где будет создана подсеть, которая является VNet-CS-Web Отказ

- name: Add subnet
    azure_rm_subnet:
    resource_group: rg-cs-ansible
    name: snet-cs-web
    address_prefix: "10.0.1.0/24"
    virtual_network: vnet-cs-web

Шаг 3 — Создать публичный IP

Хотя виртуальная сеть, созданная ранее, назначает частного IP-адреса на виртуальную машину, публичный IP-адрес назначает публичный IP-адрес виртуальной машине. Без публичного IP-адреса вы не сможете общаться с виртуальной машиной без VPN или других средств. Чтобы создать Azure Public IP-адрес, используя Anbible, вы будете использовать Azure_RM_PUBLICIPADDRESS модуль.

Чтобы создать Azure Public IP-адрес, вам необходимо определить следующие параметры; Группа ресурсов, метод выделения и имя. Указание группы ресурсов RG-CS-Anisible размещает публичный IP-адрес в том же месте, что и остальные ресурсы уже созданные. Метод выделения определяет, когда IP-адрес назначен ресурсу и когда IP-адрес выпущен. Существует два варианта метода выделения, статического и динамического и динамического и ресурса SKU определяет, что из них можно выбрать. Чтобы узнать больше об этих вариантах, проверьте Типы IP-адресов и методы выделения в Azure Отказ Имя ресурса Pip-CS-Web Отказ

Возможно, вы хотите вернуть публичный IP-адрес, назначенный сразу после создания ресурса. Вы можете выполнить это, используя Anisible Command Command Регистрация Отказ Регистрация позволяет заполнять переменные на основе выхода анабимых задач. В этом примере выход задачи создает публичный IP-адрес, назначается переменной с именем emput_ip_address_ Отказ Регистрация переменной не выводится информации. Который является то, что команда Debug делает в Выходные публичные IP задача. Поскольку вывод из задач находится в JSON, вы можете проанализировать результаты для отображения того, что вы хотите. В этом примере вариабельная вывод_ip_address проанализирована для отображения только IP-адреса и ничего другого.

- name: Create public IP address
    azure_rm_publicipaddress:
    resource_group: rg-cs-ansible
    allocation_method: Static
    name: pip-cs-web
    register: output_ip_address

- name: Output public IP
    debug:
    msg: "The public IP is {{ output_ip_address.state.ip_address }}"

Шаг 4 — Создайте группу безопасности сети

Группы безопасности сети Azure — это то, какой фильтр сетевой трафик на основе определенного набора правил. Вы можете думать о них как о похожих на сетевой брандмауэр. Без группы сетевой безопасности, позволяющая трафик, вы не сможете подключиться к вашей виртуальной машине в пределах Azure. По этой причине необходимо использовать Azure_RM_SecurityGroup Модуль для создания одного, а также определить некоторые правила, позволяющие трафику в.

В этом примере вы захотите подключиться к виртуальной машине, используя три разных протокола; RDP, HTTP, HTTPS и WIMRM. Каждый из них использует разные входящие порты для связи. RDP использует 3389, HTTP использует 80, HTTPS использует 443, а WinRM использует 5985 и 5986. Каждый из этих протоколов потребует набора правил, связанных с группой безопасности сети, позволяющую входящему трафику. Чтобы создать группу безопасности сети Azure, вам нужно только две детали информации. Группа ресурсов для его ассоциирования и названием группы безопасности сети. Тем не менее, вам понадобится дополнительная информация для создания правил, связанных с ней.

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

- name: Create Network Security Group
    azure_rm_securitygroup:
    resource_group: rg-cs-ansible
    name: nsg-cs-web
    rules:
        - name: 'allow_rdp'
        protocol: Tcp
        destination_port_range: 3389
        access: Allow
        priority: 1001
        direction: Inbound
        - name: 'allow_web_traffic'
        protocol: Tcp
        destination_port_range:
            - 80
            - 443
        access: Allow
        priority: 1002
        direction: Inbound
        - name: 'allow_powershell_remoting'
        protocol: Tcp
        destination_port_range:
            - 5985
            - 5986

Шаг 5 — Создать виртуальную сетевую карту

Каждый компьютер виртуальный или не требует некоторой формы карты сетевой интерфейсной карты для связи с компьютерами вне себя. Именно здесь приходит карта интерфейса виртуальной сети Azure. Прежде всего, вы создали несколько виртуальных сетевых компонентов; Виртуальная сеть, подсеть, публичный IP-адрес и группа безопасности сети. Все эти ресурсы будут назначаться на карту виртуальной сетевой интерфейсной карты, предоставляющей виртуальную машину Azure Parture и доступ в общественном доступе.

Ошибный модуль для создания интерфейса виртуальной сети Azure — Azure_RM_NETWorkInterface Отказ Чтобы правильно настроить интерфейс, вы должны связать его с виртуальной сетью, подсетью, сетевой безопасностью и для доступа к виртуальной машине из Интернета общедоступный IP-адрес.

- name: Create a network interface
    azure_rm_networkinterface:
    name: nic-cs-web
    resource_group: rg-cs-ansible
    virtual_network: vnet-cs-web
    subnet_name: snet-cs-web
    security_group: nsg-cs-web
    ip_configurations:
        - name: default
        public_ip_address_name: pip-cs-web
        primary: True

Шаг 6 — Создать виртуальную машину

Все до этого момента, как подготовленные среды Azure для вас для развертывания виртуальной машины. У вас есть много вариантов, когда речь идет о развертывании виртуальной машины в Azure. Однако в этом руководстве вы будете развертывать стандартную виртуальную машину Windows Windows Server 2019 DS1 V2 Windows. Обязательный модуль, используемый для развертывания виртуальных машин Azure, является Azure_RM_VIRTUALMACHINE. .

Как и в случае каждого ресурса Azure, который вы создали до сих пор, виртуальная машина требует ресурсной группы и имя. Имя будет использоваться для ресурса Azure и имени хоста виртуальной машины. VM_SIZE Использование Azure A STANDAL_DS1_V2 экземпляр. Вы можете узнать больше о размерах экземпляров Azure здесь Отказ Виртуальные машины Windows также требуют указанного имени пользователя и пароль, когда вы создаете виртуальную машину. admin_username Установлено на Azureuser и будет локальная учетная запись пользователя, с которой вы войдете. admin_password установлен на "{{пароль}}" который является неизменной переменной. Чтобы избежать пароля, хранящегося в чистом тексте, вы подскажете этому входу в следующем разделе.

Nic-CS-Web Это единственный сетевой интерфейс, который вам нужно определить в это время. Он свяжет виртуальную машину к частным и публичным IP-адресам, которые вы определены при создании сетевых ресурсов. OS_TYPE Определяет, какая операционная система будет использоваться виртуальной машиной. Установка этого на Окна Изменяет поведение параметров по умолчанию, переданному в задачу. изображение Имеет несколько подпунктивных параметров, которые определяют изображение, используемое для создания виртуальной машины. При выборе изображения вы должны указать; Предложение (WindowsServer), издатель (MicrosoftWindowserver), SKU (2019-DataCenter) и версия (последняя).

- name: Create VM
    azure_rm_virtualmachine:
    resource_group: rg-cs-ansible
    name: vm-cs-web01
    vm_size: Standard_DS1_v2
    admin_username: azureuser
    admin_password: "{{ password }}"
    network_interfaces: nic-cs-web
    os_type: Windows
    image:
        offer: WindowsServer
        publisher: MicrosoftWindowsServer
        sku: 2019-Datacenter
        version: latest

Шаг 7 — Развернуть виртуальную машину Azure Windows

На протяжении всего этого учебника вы видели фрагменты неблагоприятных задач. При наличии этих задач в PlayBook вы должны добавить несколько дополнительных разделов. хозяева Используется для определения того, какие цели PlayBook будет выполнен против. Установка этого к Localhost запустится PlayBook на самом любом сервере.

var_prompts Используется для подсказывания неизменных переменных при выполнении PlayBook. Это простой выбор для заполнения переменных, которые содержат конфиденциальную информацию, которую вы не хотите хранить в файле PlayBook. Вы будете использовать его, чтобы запросить и заполнить пароль, используемый задачей, создавая виртуальную машину.

Задачи Определите последовательные задачи, выполненные для заполнения PlayBook. Порядок этих задач очень важен. Например, задача, создающая группу ресурсов, должна быть в верхней части. Без групп ресурсов все задачи после завершения не удаются, потому что ресурсная группа еще не существует.

Поскольку задачи, используемые в этом PlayBook, создают Azure Resources, соединение от Anbible для Azure должно быть установлено, прежде чем вы сможете выполнить PlayBook. У вас есть несколько вариантов, доступных для подключения Anbible для Azure. Вы можете определить переменные среды или создать неспособный файл учетных данных. Оба варианта объясняются в отделе в подключении к Azure с помощью Anbible.

Подключение к Azure с помощью Anisible

Джош Дофверх · 18 декабря 18 ’19 · 5 мин прочитаны

#deployWindowsAzureVirtualMachine.yaml
---
- hosts: localhost
  connection: local

  vars_prompt:
    - name: password
      prompt: "Enter local administrator password"

  tasks:
    - name: Create resource group
      azure_rm_resourcegroup:
        name: rg-cs-ansible
        location: eastus

    - name: Create virtual network
      azure_rm_virtualnetwork:
        resource_group: rg-cs-ansible
        name: vnet-cs-web
        address_prefixes: "10.0.0.0/16"

    - name: Add subnet
      azure_rm_subnet:
        resource_group: rg-cs-ansible
        name: snet-cs-web
        address_prefix: "10.0.1.0/24"
        virtual_network: vnet-cs-web

    - name: Create public IP address
      azure_rm_publicipaddress:
        resource_group: rg-cs-ansible
        allocation_method: Static
        name: pip-cs-web
      register: output_ip_address

    - name: Output public IP
      debug:
        msg: "The public IP is {{ output_ip_address.state.ip_address }}"

    - name: Create Network Security Group
      azure_rm_securitygroup:
        resource_group: rg-cs-ansible
        name: nsg-cs-web
        rules:
          - name: 'allow_rdp'
            protocol: Tcp
            destination_port_range: 3389
            access: Allow
            priority: 1001
            direction: Inbound
          - name: 'allow_web_traffic'
            protocol: Tcp
            destination_port_range:
              - 80
              - 443
            access: Allow
            priority: 1002
            direction: Inbound
          - name: 'allow_powershell_remoting'
            protocol: Tcp
            destination_port_range:
              - 5985
              - 5986
            access: Allow
            priority: 1003
            direction: Inbound

    - name: Create a network interface
      azure_rm_networkinterface:
        name: nic-cs-web
        resource_group: rg-cs-ansible
        virtual_network: vnet-cs-web
        subnet_name: snet-cs-web
        security_group: nsg-cs-web
        ip_configurations:
          - name: default
            public_ip_address_name: pip-cs-web
            primary: True


    - name: Create VM
      azure_rm_virtualmachine:
        resource_group: rg-cs-ansible
        name: vm-cs-web01
        vm_size: Standard_DS1_v2
        admin_username: azureuser
        admin_password: "{{ password }}"
        network_interfaces: nic-cs-web
        os_type: Windows
        image:
          offer: WindowsServer
          publisher: MicrosoftWindowsServer
          sku: 2019-Datacenter
          version: latest

Ansible-Playbook Это Anisible Command используется для выполнения PlayBooks. Поскольку PlayBook ориентирован на localhost, не требуется самого сервера, не требуется инвентарь или файл хоста. Все, что требуется, это название PlayBook для выполнения. Сохранить вышеупомянутое PlayBook AS deploywindowsazurevirtualmachine.yaml И запустите следующую команду для развертывания виртуальной машины Windows для Azure!

ansible-playbook deployWindowsAzureVirtualMachine.yaml

Вывод

Теперь вы развернули виртуальную машину Windows для Azure! На данный момент вам может быть интересно, каково преимущество использования Anbible является создание ресурсов в портале Azure или с помощью скрипта PowerShell. Преимущества использования Anisible являются;

  • Кодифицированная инфраструктура
  • Idempotent автоматизация
  • Управление конфигурацией

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

Оригинал: «https://dev.to/cloudskills/deploy-a-windows-vm-to-azure-with-ansible-2l9m»