# Создание кластера через мой шаблон тофу

Для создания кластера копируем мой шаблон в рабочую директорию и переименовываем. Переходим в свежую копию и готовимся к развертыванию
ЧТо нам потребуется:
- Создать 3 мастер ноды
- Создать 3 воркер ноды
- Сгенерировать инвентарь для ансибл
- Установить кубспрей
- установить зависимости
- Запустить плейбук установки кубера
Действия для выполнения.
ТАк как надо создавать 2 вида вм то создадим 2 файла где опишем ресурсы и назовем их k8s-cp-node-01 и k8s-worker-node-01
Копируем в эти файлы содержимое темплейта и меняем название ресурса.
С переменными в данной ситуации все сложно.
Можно создать набор переменных для каждой установки, но тогда на потребуется указывать 2 набора переменных под каждый тип машин.
Можно использовать переменные из шаблона не вводя новые, но так как ресурса 2 разных мы столкнемся с проблемой что переменные пересекаются в ресурсах и мешают друг другу (например Id вм должно быть индивидуальным, но без колхозинга оно таким не является и падает в ошибку )

Я предпочел колхозинг второму набору, так как его немного. А так же не надо городить второй набор практических неизменных значений. (подумать над решением такой проблемы)

Меняем значения переменных в файле значений. СЛЕДИМ ЗА ID!!!!! Так можно убить инфру. По хорошему надо добавить автотест с отдельной ручкой на случай сушествования ВМ с таким айди.

Так как у нас добавился счетчик, то для подставления значений в имя, ip и тд, нам нужно экранировать переменные, а так же добавить простой текст для того, что бы не городить второй набор. Этот текст будет различать разные виды ресурса.
Переменные которые обязательно меняются:
vm_id
vm_hostname
ip_address
Значение для них записываются в виде :

    "${var.vm_hostname}-cp-${count.index + 1}"

    "${var.vm_id}1${count.index + 1}"

    "${var.ip_address}${count.index + 1}/24"

Мы добавляем кавычки так как внутри содержится просто текст. Текст мы добавляем для каждого ресурса свой.
Так как имя будет составное из переменной из файла и переменной счетчика то мы их экранируем друг от друга конструкцией ${}