#azure #ansible
Вопрос:
У меня есть доступная роль для подготовки виртуальной машины в облаке Azure. Сценарий работает нормально, но создает виртуальную машину со случайной частью в имени.
azure_rm_virtualmachine:
resource_group: "{{resource_group_name}}"
location: "{{resource_group_location}}"
name: "vm-{{env}}-sql-{{resource_odd_string}}-{{'x'|format(item)}}"
vm_size: "{{resource_odd_vmsizetype}}"
network_interfaces: "nic-{{env}}-sql-{{resource_agg_string}}-{{'x'|format(item)}}"
image:
offer: UbuntuServer
publisher: Canonical
sku: '18.04-LTS'
data_disks:
- lun: "{{resource_odd_data_disk_lun}}"
disk_size_gb: "{{resource_odd_data_disk_size}}"
tags:
env: "vm-{{env}}-sql-{{resource_odd_string}}"
loop: "{{ range(resource_odd_countstart|int, resource_odd_countend|int 1, 1)|list }}"
tags:
- sql_odd
И моя переменная yaml содержит следующие переменные
resource_group_name: ""
resource_group_location: "East US"
resource_odd_subnet: "sqlsubnet"
resource_odd_countstart: "101"
resource_odd_countend: "102"
resource_odd_string: "mine"
resource_odd_data_disk_lun: "0"
resource_odd_data_disk_size: "512"
resource_odd_data_disk_type: "Premium_LRS"
Когда я выполняю этот сценарий, он успешно запускает виртуальную машину, но ее имя может содержать случайный суффикс.
Ожидаемый результат: vm-stage-sql-mine-101
, vm-stage-sql-mine-102
Но я получаю такие имена, как vm-stage-sql-mine-65
или vm-stage-sql-mine-c9
и т. Д. То же самое относится и к именам сетевых карт.
Комментарии:
1. У вас есть шаблон шестнадцатеричного форматирования (
x
), и вы удивлены, что в вашем суффиксе есть шестнадцатеричные цифры?$ printf 'x' 101
отпечатки65
на моем панцире2. Еще один лайнер, чтобы определить вашу проблему:
ansible localhost -m debug -a "msg="Hexa: {{'x' | format(value|int) }} - Decimal: {{ 'd' | format(value|int) }}"" -e value=255
. Обратите внимание, что если вы пройдете только ints,%d
то получите тот же результат. И пока вы этим занимаетесь, вы, вероятно, можете просто отказаться от форматирования и использовать{{ item | int }}
напрямую.