Admin Guide

Admin Guide 

Linux и котики

54subscribers

85posts

goals3
0 of 100 paid subscribers
Нужно 100 платных подписчиков тарифа РД4+ чтобы я мог уделять больше времени контенту
$26.87 of $2 015 raised
На тестовый стенд для всяких штук фигурирующих в видеоуроках и сетевую хранилку для них же.
$0 of $20 150 raised
На новый ноутбук (:

16 - Terraform - Proxmox - Minecraft сервер с помощью Bash

О том как руками развернуть сервер Minecraft Java Edition написано тут: https://boosty.to/adminguide/posts/75af3293-ed31-4a00-be55-444d3f156a48?share=post_link
Но если вы играете на хардкоре, то возможно вам захочется разворачивать сервера на регулярной основе. Ну и в принципе, зачем разворачивать что-то руками. Поэтому в этой статье мы посмотрим несложный вариант раскатать 1 ВМ в Proxmox с помощью Terraform и установить на него Minecraft Java Edition с помощью bash скриптов.
О том как создавать ВМ с Proxmox с помощью Terraform написано тут: https://boosty.to/adminguide/posts/5d3972dc-0095-4d43-b142-5b8c4d2e16a5?share=post_link
Создаём ресурс minecraft_server, типа proxmox_vm_qemu. Имя сервера задаём как minecraft-srv01.
Имя пользователя который будет использоваться для подключения к серверу по SSH будет adminguide.
Незабываем подсунуть публичный ключ, по которому будем авторизовываться под пользователя adminguide.
Как и ранее, клонировать будем созданный ранее темплейт u22s-tpl.
IP адрес нашей вм будет задан статически.
В блоке connection будут указаны настройки подключения для последующей настройки нашей вм. В этом блоке необходимо указать IP адрес созданной ВМ, пользователя под которым будем подключаться и путь к файлу закрытого SSH ключа, хранящемуся на хосте терраформа.
После развёртывания ВМ, терраформ с помощью connection попытается подключиться к хосту и в случае успеха, запустит provisioner remote-exec.
Повторно описывать процесс установки сервера Minecraft Java Edition я не буду, но относительно использования remote-exec пару моментов стоит подсветить.
Мы не можем как при ручной настройке просто использовать crontab -e и открыть крон на редактирование. Поэтому мы записываем содержимое crontab, с помощью ключа -l в какой-нибудь файл, в нашем случае файл мы назовём minecraft-srv01_cron.С помощью echo мы допишем в этот файл строку с нужным нам правилом и далее импортируем этот файл в cron, после чего удалим.
У нас конечно ВМ только развёрнута и там нет никакого содержимого, потому первая строка не нужна, достаточно просто создать файл, но без экспорта пусть и не существующих кронов, логика примера будет не завершённой.
Так же мы не можем просто так взять и перезагрузить ВМ с помощью reboot -h now, хоть и можем выполнить эту команду удалённо. В случае если мы удалённо выполним эту команду, терраформ не сам отключится от ВМ завершив удалённую настройку, а ВМ выключится, сессия SSH будет разорвана и терраформ сочтёт что произошла какая-то ошибка. Решив что произошла ошибка - он пометит эту ВМ зашкваренной, и при первом же удобном случае, когда вы используете terraform apply, например добавив ещё 1 сервер в свою инфру, терраформ прикончит помеченную зашкваренной машину и пересоздат её. Ну и если мы не исправим подход к перезагрузке, несмотря на то что машина будет работающей и сервер Minecraft Java Edition после перезагрузки взлетит - терраформ опять пометит её косячной. Порочный круг.
Если мы просто создадим скрипт в который добавим паузу 5 сек и потом перезагрузку, то дёрнув этот скрипт, терраформ разорвёт SSH сессию, пометит машину нормально настроенной, но из-за разрыва сессии, скрипт не выполнится.
На помощь нам приходит всё тот же screen, который мы исполоьзуем для автозапуска майнкрафт сервера. Только в нашем случае мы запустим наш скрипт перезагружающий машину.
В папке /tmp создадим файл reboot.sh вписав в него 5 секундную паузу. Потом добавим строку с перезагрузкой. Накинем на файл права на запуск. После чего с помощью screen запустим в откреплённой сессии этот скрипт.
В этом случае терраформ спокойно завершит исполнение и разорвёт сессию пометив ВМ нормально настроенной. Скрипт в откреплённой сессии отсчитает 5 сек и перезагрузит ВМ уже без ведома терраформа. Как только ВМ загрузится на ней автоматом взлетит сервер Minecraft Java Edition на том айпишнике и с тем портом что мы настроили в tf файле. Терраформ  не будет пытаться пересоздать эту ВМ т.к. зафиксировал корректное завершение настройки.
tf
minecrafft-srv01.tf7.08 Kb
Subscription levels7

Общий Discord

$0.14 per month
+ Выделение цветом в Discord
+ chat

На кофе

$1.33 per month
+ Выделение цветом в Discord
+ chat

РД4

$5.4 per month
Доступ к преимуществам предыдущих уровней
+ Ранний доступ ко некоторым материалам минимум за 4 месяца до релиза
+ Выделение цветом в Discord
+ chat

РД6

$9.4 per month
Доступ к преимуществам предыдущих уровней
+ Доступ к прямым трансляциям
+ Доступ в закрытый канал Дискорд
+ Доступ к материалам раньше всех
+ chat

Платные консультации 1 час

$53 per month
Индивидуальные консультации касаемо мониторинга 1 час в месяц
+ chat

Платные консультации 2 часа

$106 per month
Индивидуальные консультации касаемо мониторинга 2 часа в месяц
+ chat

Индивидуальные занятия по Zabbix

$223 per month
- 4 занятия в месяц по 120 минут
- с нуля до начального уровня
Go up