#ansible
#ansible
Вопрос:
Я хочу, чтобы имя хоста было увеличено на 1. например, если мое имя хоста равно abc-0001, тогда оно должно сгенерировать следующее имя хоста, например abc-0002.
по сути, я пытаюсь получить список виртуальных машин из vcenter и увеличить имя хоста на 1 от последнего имени хоста. затем я буду использовать это имя хоста для нового развертывания. изначально я разделяю имя сервера на 2 части. первая часть — abc, а server_list — вторая часть, используемая для увеличения значения на 1.
когда я запускаю playbook, я получаю следующее имя сервера в abc-2 вместо abc-0002
- set_fact:
new_vm_name: "{{ firstpart }}-{{ (((server_list | sort | max).split('-'))[1]| int) 1 }}"
Ответ №1:
Простой способ справиться с этим — использовать форматирование строк python.
В Jinja2 / ansible это делается с %
помощью оператора:
$ ansible localhost -m debug -a msg="{{ 'd' % 1 }}"
localhost | SUCCESS => {
"msg": "0001"
}
В вашем конкретном случае должно сработать следующее:
next_vm_number: "{{ (server_list | sort | max).split('-')[1] | int 1 }}"
new_vm_name: "{{ '%s-d' % (firstpart, next_vm_number | int) }}"