blob: 2933a168bbe9a8b2aec860a0cc23f1f2cd7e6362 [file] [log] [blame]
---
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
#
# These Ansible tasks only run on the client machine where Muchos runs
# At a high level, the various sections in this file do the following:
# 1. Create (if not already existing): an Azure resource group, virtual network / subnet
# 2. Optionally (if the user specified) create a VM and related resources to use as a proxy host
# 3. Create the Azure VMSS to support the nodes for use with Muchos
# 4. Automatically populate the hosts file and associated [nodes] section in muchos.props
#
# SECTION 2: Optionally create a VM with a public IP which can act as a proxy host
#
- name: Create public IP address
azure_rm_publicipaddress:
resource_group: "{{ resource_group }}"
allocation_method: Static
name: "{{ azure_proxy_host }}-ip"
register: azure_proxy_public_ip
when: azure_proxy_host is defined and azure_proxy_host and azure_proxy_host != None
- name: Create Network Security Group that allows SSH
azure_rm_securitygroup:
resource_group: "{{ resource_group }}"
name: "{{ azure_proxy_host }}-nsg"
rules:
- name: SSH
protocol: Tcp
destination_port_range: 22
access: Allow
priority: 1001
direction: Inbound
when: azure_proxy_host is defined and azure_proxy_host and azure_proxy_host != None
- name: Create NIC
azure_rm_networkinterface:
resource_group: "{{ resource_group }}"
name: "{{ azure_proxy_host }}-nic"
virtual_network: "{{ vnet }}"
subnet_name: "{{ subnet }}"
ip_configurations:
- name: default
public_ip_address_name: "{{ azure_proxy_host }}-ip"
primary: True
security_group: "{{ azure_proxy_host }}-nsg"
enable_accelerated_networking: "{{ True if azure_proxy_host_vm_sku in accnet_capable_skus else False }}"
when: azure_proxy_host is defined and azure_proxy_host and azure_proxy_host != None
- name: Create azure proxy virtual machine
azure_rm_virtualmachine:
resource_group: "{{ resource_group }}"
name: "{{ azure_proxy_host }}"
network_interface_names:
- "{{ azure_proxy_host }}-nic"
vm_size: "{{ azure_proxy_host_vm_sku }}"
admin_username: "{{ cluster_user }}"
ssh_password_enabled: false
ssh_public_keys:
- path: /home/{{ cluster_user }}/.ssh/authorized_keys
key_data: "{{ lookup('file', '~/.ssh/id_rsa.pub') }}"
os_disk_caching: ReadWrite
image:
offer: "{{ image_offer if image_offer else omit }}"
publisher: "{{ image_publisher if image_publisher else omit }}"
sku: "{{ image_sku if image_sku else omit }}"
version: "{{ image_version if image_version else omit }}"
managed_disk_type: "{{ osdisk_sku }}"
data_disks:
- lun: 0
disk_size_gb: 64
managed_disk_type: "{{ data_disk_sku }}"
vars:
- image_offer: "{{ azure_proxy_image_reference.split('|')[0] }}"
- image_publisher: "{{ azure_proxy_image_reference.split('|')[1] }}"
- image_sku: "{{ azure_proxy_image_reference.split('|')[2] }}"
- image_version: "{{ azure_proxy_image_reference.split('|')[3] }}"
- osdisk_sku: "{{ 'Premium_LRS' if azure_proxy_host_vm_sku in premiumio_capable_skus else 'Standard_LRS' }}"
when: azure_proxy_host is defined and azure_proxy_host and azure_proxy_host != None