This is an automated email from the ASF dual-hosted git repository.

arvindsh pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/fluo-muchos.git


The following commit(s) were added to refs/heads/main by this push:
     new 935c78f  Allow specifying OS image on a per-Azure VMSS basis (#439)
935c78f is described below

commit 935c78f7e2420c8f7f77f8a4d0d477940fd78d42
Author: Arvind Shyamsundar <[email protected]>
AuthorDate: Mon Nov 27 10:07:58 2023 -0800

    Allow specifying OS image on a per-Azure VMSS basis (#439)
    
    Adds support for specifying the OS image to be used at an individual
    VMSS level for a multiple VMSS Azure cluster. This helps in testing some
    heterogenous cluster scenarios.
---
 ansible/roles/azure/tasks/create_multiple_vmss.yml | 28 +++++++++++-----------
 .../roles/azure/tasks/create_optional_proxy.yml    |  7 ++----
 ansible/roles/azure/tasks/create_vmss.yml          | 13 ++++------
 docs/azure-multiple-vmss.md                        |  3 +++
 4 files changed, 24 insertions(+), 27 deletions(-)

diff --git a/ansible/roles/azure/tasks/create_multiple_vmss.yml 
b/ansible/roles/azure/tasks/create_multiple_vmss.yml
index a84f9c6..28ccce8 100644
--- a/ansible/roles/azure/tasks/create_multiple_vmss.yml
+++ b/ansible/roles/azure/tasks/create_multiple_vmss.yml
@@ -30,21 +30,21 @@
     file: "{{ deploy_path }}/conf/azure_multiple_vmss_vars.yml"
     name: azure_multiple_vmss_vars
 
-- name: "Create image plan related facts"
-  set_fact:
-    azure_image_plan_name: "{{ azure_image_plan.split('|')[0] }}"
-    azure_image_plan_dict:
-      name: "{{ azure_image_plan.split('|')[0] }}"
-      product: "{{ azure_image_plan.split('|')[1] }}"
-      publisher: "{{ azure_image_plan.split('|')[2] }}"
-
 - name: Create Scale Set
   vars:
-    image_offer: "{{ azure_image_reference.split('|')[0] }}"
-    image_publisher: "{{ azure_image_reference.split('|')[1] }}"
-    image_sku: "{{ azure_image_reference.split('|')[2] }}"
-    image_version: "{{ azure_image_reference.split('|')[3] }}"
-    image_id: "{{ azure_image_reference.split('|')[4] }}"
+    item_image_plan: "{{ item.azure_image_plan | default(azure_image_plan) }}"
+    azure_image_plan_name: "{{ item_image_plan.split('|')[0] }}"
+    item_azure_image_reference: "{{ item.azure_image_reference | 
default(azure_image_reference) }}"
+    item_azure_image_cloud_init_file: "{{ item.azure_image_cloud_init_file | 
default(azure_image_cloud_init_file) }}"
+    azure_image_plan_dict:
+      name: "{{ item_image_plan.split('|')[0] }}"
+      product: "{{ item_image_plan.split('|')[1] }}"
+      publisher: "{{ item_image_plan.split('|')[2] }}"
+    image_offer: "{{ item_azure_image_reference.split('|')[0] }}"
+    image_publisher: "{{ item_azure_image_reference.split('|')[1] }}"
+    image_sku: "{{ item_azure_image_reference.split('|')[2] }}"
+    image_version: "{{ item_azure_image_reference.split('|')[3] }}"
+    image_id: "{{ item_azure_image_reference.split('|')[4] }}"
     accnet_capable: "{{ True if item.sku in accnet_capable_skus else False }}"
     osdisk_sku: "{{ 'Premium_LRS' if item.sku in premiumio_capable_skus else 
'Standard_LRS' }}"
   azure.azcollection.azure_rm_virtualmachinescaleset:
@@ -81,7 +81,7 @@
         {%- set _ = data_disks.append({'lun': lun, 'disk_size_gb': 
item.data_disk_size_gb, 'managed_disk_type': item.data_disk_sku, 'caching': 
item.data_disk_caching|default('ReadOnly') }) -%}
       {%- endfor -%}
       {{ data_disks }}
-    custom_data: "{{ lookup('file', azure_image_cloud_init_file) if 
azure_image_cloud_init_file }}"
+    custom_data: "{{ lookup('file', item_azure_image_cloud_init_file) if 
item_azure_image_cloud_init_file }}"
   with_items:
     - "{{ azure_multiple_vmss_vars.vars_list }}"
   register: _create_clusters
diff --git a/ansible/roles/azure/tasks/create_optional_proxy.yml 
b/ansible/roles/azure/tasks/create_optional_proxy.yml
index dae011b..090935d 100644
--- a/ansible/roles/azure/tasks/create_optional_proxy.yml
+++ b/ansible/roles/azure/tasks/create_optional_proxy.yml
@@ -60,16 +60,13 @@
     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 image plan related facts"
-  set_fact:
+- name: Create azure proxy virtual machine
+  vars:
     azure_proxy_image_plan_name: "{{ azure_proxy_image_plan.split('|')[0] }}"
     azure_proxy_image_plan_dict:
       name: "{{ azure_proxy_image_plan.split('|')[0] }}"
       product: "{{ azure_proxy_image_plan.split('|')[1] }}"
       publisher: "{{ azure_proxy_image_plan.split('|')[2] }}"
-
-- name: Create azure proxy virtual machine
-  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] }}"
diff --git a/ansible/roles/azure/tasks/create_vmss.yml 
b/ansible/roles/azure/tasks/create_vmss.yml
index e805377..3c1d9f4 100644
--- a/ansible/roles/azure/tasks/create_vmss.yml
+++ b/ansible/roles/azure/tasks/create_vmss.yml
@@ -33,14 +33,6 @@
     luns_dict: "{{ luns_dict | default ([]) + [{ 'lun': item, 'disk_size_gb': 
disk_size_gb, 'managed_disk_type': data_disk_sku, 'caching': data_disk_caching 
} ] }}"
   with_sequence: start=0 end={{ data_disk_count-1 if data_disk_count > 0 else 
0 }}
 
-- name: "Create image plan related facts"
-  set_fact:
-    azure_image_plan_name: "{{ azure_image_plan.split('|')[0] }}"
-    azure_image_plan_dict:
-      name: "{{ azure_image_plan.split('|')[0] }}"
-      product: "{{ azure_image_plan.split('|')[1] }}"
-      publisher: "{{ azure_image_plan.split('|')[2] }}"
-
 - name: Set single placement group to correct value
   set_fact:
     single_placement_group: False
@@ -48,6 +40,11 @@
 
 - name: Create Scale Set
   vars:
+    azure_image_plan_name: "{{ azure_image_plan.split('|')[0] }}"
+    azure_image_plan_dict:
+      name: "{{ azure_image_plan.split('|')[0] }}"
+      product: "{{ azure_image_plan.split('|')[1] }}"
+      publisher: "{{ azure_image_plan.split('|')[2] }}"
     image_offer: "{{ azure_image_reference.split('|')[0] }}"
     image_publisher: "{{ azure_image_reference.split('|')[1] }}"
     image_sku: "{{ azure_image_reference.split('|')[2] }}"
diff --git a/docs/azure-multiple-vmss.md b/docs/azure-multiple-vmss.md
index 7f9db02..22893b5 100644
--- a/docs/azure-multiple-vmss.md
+++ b/docs/azure-multiple-vmss.md
@@ -22,6 +22,9 @@ Muchos provides a [sample 
file](../conf/azure_multiple_vmss_vars.yml.example) wh
 |-----------|------------------------|---------|-------------|
 | `name_suffix` | Required | - | The name of each VMSS is constructed by 
concatenating the Muchos cluster name with this string. As an example, if your 
Muchos cluster is called `test`, and this field has a value of `ldr`, then the 
VMSS is created with a name `test-ldr`|
 | `sku` | Required | - | A string identifier specifying the Azure VM size. 
Refer to the [Azure 
documentation](https://docs.microsoft.com/en-us/azure/virtual-machines/dv3-dsv3-series)
 to lookup these strings. An example VM size is `Standard_D32s_v3` for a 
32-vCPU 
[Dsv3](https://docs.microsoft.com/en-us/azure/virtual-machines/dv3-dsv3-series#dsv3-series)
 VM|
+| `azure_image_reference` | Optional | - | If, for whatever reason, you need 
to use a different Azure VM image for a specific VMSS, please specify the image 
details in the same format as documented in [Azure image 
reference](./azure-image-reference.md) |
+| `azure_image_plan` | Optional | - | If, for whatever reason, you need to use 
a different Azure VM image for a specific VMSS, and if that image needs 
purchase plan information to be specified, please specify the plan information 
the same format as documented in [Azure image 
reference](./azure-image-reference.md) |
+| `azure_image_cloud_init_file` | Optional | - | If, for whatever reason, you 
need to use a different Azure VM image for a specific VMSS, and if that image 
needs a custom cloud init file, please specify the cloud init file name as 
documented in [Azure image reference](./azure-image-reference.md) |
 | `vmss_priority` | Optional | None | If this not specified at each VM level, 
the value for `vmss_priority` from the `azure` section in 
[muchos.props](../conf/muchos.props.example) is used | This can be set to 
`None`, for regular VMs, or `Spot` for [Spot 
VMs](https://docs.microsoft.com/en-us/azure/virtual-machines/windows/spot-vms).|
 | `perf_profile` | Required | - | A string identifying a corresponding 
performance profile configuration section in muchos.props which contains perf 
profile parameters |
 | `azure_disk_device_path`| Optional | If not specified, the corresponding 
`azure_disk_device_path` value from the `azure` section in 
[muchos.props](../conf/muchos.props.example) is used | This is a device path 
used to enumerate attached SCSI or NVME disks to use for persistent local 
storage |

Reply via email to