ansible_image_validation/vm-playbooks/create-new-hosts.yaml (51 lines of code) (raw):
###
# This Playbook creates VM from a given Azure image URN
###
---
- name: Debug input parameter
debug:
msg: "{{ item.split(':')[0] }} {{ item.split(':')[1] }} {{ item.split(':')[2] }} {{ item.split(':')[3] }}"
- name: Set image properties
set_fact:
publisher: "{{ item.split(':')[0] }}"
offer: "{{ item.split(':')[1] }}"
sku: "{{ item.split(':')[2] }}"
version: "{{ item.split(':')[3] }}"
ssh_pub_key: "{{ lookup('file', '~/.ssh/id_rsa.pub') }}"
resource_group: "{{ lookup('env', 'RESOURCE_GROUP') }}"
vnet_name: "{{ lookup('env', 'HOST_VNET_NAME') }}"
container_name: "{{ lookup('env', 'CONTAINER_NAME') }}"
admin_user_name: "{{ lookup('env', 'ADMIN_USER_NAME') }}"
admin_password: "{{ lookup('env', 'ADMIN_PASSWORD') }}"
- name: Set VM name variable
set_fact:
vmname: "{{ offer | replace('_','-') }}-{{ sku | replace('_','-') }}-{{ version }}"
- debug:
msg: "Creating VM - {{ vmname }}"
- name: Create VM
no_log: true
azure_rm_virtualmachine:
resource_group: "{{ resource_group }}"
name: "{{ vmname }}"
admin_username: "{{ admin_user_name }}"
admin_password: "{{ admin_password }}"
managed_disk_type: Standard_LRS
ssh_public_keys:
- path: "/home/{{ admin_user_name }}/.ssh/authorized_keys"
key_data: "{{ ssh_pub_key }}"
vm_size: Standard_B1ms
virtual_network_name: "{{ vnet_name }}"
image:
offer: "{{ offer }}"
publisher: "{{ publisher }}"
sku: "{{ sku }}"
version: "{{ version }}"
register: azurevm
ignore_errors: yes
- set_fact:
azurevm_privateip: "{{ azurevm.ansible_facts.azure_vm.properties.networkProfile.networkInterfaces[0].properties.ipConfigurations[0].properties.privateIPAddress }}"
when: azurevm.failed == false
ignore_errors: yes
- name: Add the new VM to in-memory inventory
add_host:
hostname: '{{ vmname }}'
groups: just_created
ansible_host: "{{ azurevm_privateip }}"
when: azurevm.failed == false