Я хочу, чтобы имя хоста было увеличено на 1. Например, если мое имя хоста abc-0001, оно должно сгенерировать следующее имя хоста, например abc-0002.

В основном, я пытаюсь получить список виртуальных машин из vcenter и увеличить имя хоста на 1 от последнего имени хоста. тогда я буду использовать это имя хоста для нового развертывания. Изначально я разделяю имя сервера на 2 части. firstpart - это abc, а server_list - вторая часть, используется для увеличения значения на 1.

Когда я запускаю playbook, я получаю следующее имя сервера в abc-2 вместо abc-0002


- set_fact:
    new_vm_name: "{{ firstpart }}-{{ (((server_list | sort | max).split('-'))[1]| int) + 1 }}"
0
ghpradeep 29 Сен 2020 в 12:55

1 ответ

Лучший ответ

Простой способ справиться с этим - использовать форматирование строки Python. .

В Jinja2 / ansible это делается с помощью оператора %:

$ ansible localhost -m debug -a msg="{{ '%04d' % 1 }}"
localhost | SUCCESS => {
    "msg": "0001"
}

В вашем конкретном случае следующее должно помочь:

next_vm_number: "{{ (server_list | sort | max).split('-')[1] | int + 1 }}"
new_vm_name: "{{ '%s-%04d' % (firstpart, next_vm_number | int) }}"
0
Zeitounator 29 Сен 2020 в 12:16