Я хочу, чтобы имя хоста было увеличено на 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 }}"
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) }}"
Похожие вопросы
Новые вопросы
ansible
Вопросы по теме касаются использования самого инструмента. Установка Ansible и предварительные условия, проблемы с подключением и т. д. не по теме. Red Hat Ansible — это управляемая моделью система управления конфигурацией, многоузлового развертывания/оркестрации и удаленного выполнения задач. По умолчанию он использует SSH, поэтому на узлах, которыми вы управляете, не нужно устанавливать специальное программное обеспечение. Ansible написан на Python, но может быть расширен на любом языке.