Развертывание нескольких виртуальных машин с помощью ansible

Я изучаю возможность создания виртуальных машин Linux на Azure, и я использовал этот образец учебника по этой ссылке (https://docs.microsoft.com/en-us/azure/developer/ansible/vm-configure?), чтобы создать одну виртуальную машину на Azure. Если я хочу развернуть 10 виртуальных машин именно так, с помощью ansible-playbook, как мне это сделать? Пожалуйста помоги. заранее спасибо

Обновление: я пробовал вот так, но скрипт не работает после создания двух общедоступных IP-адресов.

- name: Create Azure VM
  hosts: localhost
  connection: local
  tasks:
  - name: Create resource group to hold VM
    azure_rm_resourcegroup:
      name: TestingResource
      location: eastus
  - name: Create virtual network
    azure_rm_virtualnetwork:
      resource_group: TestingResource
      name: testingvnet
      address_prefixes: "10.0.0.0/16"
  - name: Add subnet
    azure_rm_subnet:
      resource_group: TestingResource
      name: testingsubnet
      address_prefix: "10.0.1.0/24"
      virtual_network: testingvnet
  - name: Create public IP address
    azure_rm_publicipaddress:
      resource_group: TestingResource
      allocation_method: Static
      name: "{{ item }}" #CHANGE HERE
    loop:
       - testingpublicIP2
       - testingpublicIP3  
    register: output_ip_address
  #- name: Dump public IP for VM which will be created
    #debug:
      #msg: "The public IP is {{ output_ip_address.state.ip_address }}."
  - name: Create Network Security Group that allows SSH
    azure_rm_securitygroup:
      resource_group: TestingResource
      name: TestingSecurityGroup
      rules:
        - name: SSH
          protocol: Tcp
          destination_port_range: 22
          access: Allow
          priority: 1001
          direction: Inbound
  - name: Create virtual network interface card
    azure_rm_networkinterface:
      resource_group: TestingResource
      name: "{{ item }}" #CHANGE HERE
      loop:
         - TestingNIC2
         - TestingNIC3
      virtual_network: testingvnet
      subnet: testingsubnet
      public_ip_name: "{{ item }}" #CHANGE HERE
      loop:
        - testingpublicIP2
        - testingpublicIP3
      security_group: TestingSecurityGroup
  - name: Create VM
    azure_rm_virtualmachine:
      resource_group: TestingResource
      name: "{{ item }}" #CHANGE HERE VM NAME
      loop:
        - TestingResource2
        - TestingResource3
      vm_size: Standard_B2s
      admin_username: admin
      admin_password: password@123 
      ssh_password_enabled: true
      network_interfaces: "{{ item }}" #CHANGE HERE
      loop: 
         - TestingNIC2
         - TestingNIC3
      image:
        offer: UbuntuServer
        publisher: Canonical
        sku: '18.04-LTS'
        version: latest

person Richard Phillips Roy    schedule 14.04.2021    source источник
comment
Пожалуйста, покажите нам, что вы уже пробовали   -  person toydarian    schedule 14.04.2021
comment
Вы можете использовать циклы, см. образец   -  person Nancy Xiong    schedule 14.04.2021
comment
Привет, @NancyXiong, в примере файла git playbook есть такие переменные, как это имя: {{resource_group}}, так где же playbook получает имя группы ресурсов? или мне нужно заменить то, что находится внутри этих скобок {{}}?   -  person Richard Phillips Roy    schedule 14.04.2021
comment
Привет, @toydarian, я включил пьесу, которую пробовал   -  person Richard Phillips Roy    schedule 14.04.2021
comment
Есть новости по этому вопросу? Решает ли это вашу проблему?   -  person Charles Xu    schedule 21.04.2021
comment
Привет, @CharlesXu, я перешел на terraform, так как это мне легко понять, и я смог очень быстро и легко развернуть виртуальные машины. Благодарность   -  person Richard Phillips Roy    schedule 25.04.2021
comment
Но вы задаете вопрос, и я трачу время, чтобы дать вам решение. Вы не можете игнорировать это, потому что вы решили использовать другой инструмент. Это невежливо.   -  person Charles Xu    schedule 26.04.2021


Ответы (2)


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

- hosts: localhost
  vars:
    resource_group: myResourceGroup
    ...
  tasks:
  - name: Create resource group to hold VM
    azure_rm_resourcegroup:
      name: "{{ resource_group }}"
      location: eastus
  ...

И переменная для цикла:

loop: "{{ var_list }}"
person Charles Xu    schedule 15.04.2021

Я обнаружил, что с помощью terraform довольно легко развернуть несколько виртуальных машин на лазурном сервере, просто изменив одну переменную в файле конфигурации. Вот файл конфигурации, который я использовал (https://github.com/RichardPhilipsRoy/terraform-azure-linuxVMs)

person Richard Phillips Roy    schedule 25.04.2021