我沿着這些線路的實例資源:如何通過熱量在可用區域傳播實例數量?
masters:
type: OS::Heat::ResourceGroup
properties:
count: { get_param: num_masters }
resource_def:
type: heat_stack_server.yaml
properties:
name:
str_replace:
template: cluster_id-k8s_type-%index%
params:
cluster_id: { get_param: cluster_id }
k8s_type: master
cluster_env: { get_param: cluster_env }
cluster_id: { get_param: cluster_id }
type: master
image: { get_param: master_image }
flavor: { get_param: master_flavor }
key_name: { get_resource: keypair }
net: { get_resource: net }
subnet: { get_resource: subnet }
secgrp:
- { get_resource: master-secgrp }
- { get_resource: node-secgrp }
floating_network: { get_param: external_net }
net_name:
str_replace:
template: openshift-ansible-cluster_id-net
params:
cluster_id: { get_param: cluster_id }
depends_on:
- interface
它創建num_masters
。現在,我想保證這些主人將在不同的可用區域中創建(這樣當其中一個失敗時,另一個將繼續工作)。
說,我有3 AZ和num_masters == 5
。如何傳播它們,以便zone1包含節點1和4,區域2-2和5,等等?
Ansible有loop.cycle的東西,你可以一遍又一遍地傳遞選項列表。任何想法如何在操作系統中做到這一點?
如果熱支持一些基本的數學函數,如mod函數,則不需要重複AZ。相反,索引可以是當前的索引mod number_of_azs。 –
在這種情況下它可能更容易:你只需將你的區域名稱作爲模板並填入區域號碼作爲索引mod az_number''' – Undespairable