ansible/roles/azure/tasks/create_optional_proxy.yml (64 lines of code) (raw):

--- # # 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 }}" custom_data: "{{ lookup('file', 'cloud-init.yml') }}" 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