Системный Администратор (Сисадмин) sysadmin серверы сети Linux Windows IT инфраструктура администрирование серверов системное администрирование настройка серверов безопасность мониторинг поддержка IT

@sysadminof
☁️ KVM + Cloud-Init: Настройка сервера «без рук» В продолжение поста. Мы научились поднимать "железо" через Terraform. Но что толку от запущенной VM, если в нее нужно заходить через VNC-консоль, вручную создавать пользователя, прописывать пароли и ставить nginx? Это медленно и небезопасно. Решение Cloud-Init. Это стандарт де-факто для инициализации облачных инстансов (AWS, Azure, DigitalOcean), который прекрасно работает и на локальном KVM. 🎯 Задача При команде terraform apply: 1. Создать VM. 2. Автоматически создать пользователя admin. 3. Закинуть туда ваш публичный SSH-ключ (чтобы заходить без пароля). 4. Установить Nginx и Docker. 📝 Шаг 1. Пишем конфиг (cloud_init.cfg) Создайте файл cloud_init.cfg. Это обычный YAML, который описывает, что нужно сделать внутри ОС при первом старте. #cloud-config hostname: my-web-server fqdn: my-web-server.local manage_etc_hosts: true users: - name: admin sudo: ALL=(ALL) NOPASSWD:ALL shell: /bin/bash ssh_authorized_keys: - ssh-rsa AAAAB3Nza... (ваш публичный ключ id_rsa.pub) packages: - nginx - htop - git runcmd: - [ systemctl, enable, nginx ] - [ systemctl, start, nginx ] - [ echo, "Hello from Cloud-Init!", >, /var/www/html/index.html ] 🔗 Шаг 2. Подключаем к Terraform В наш файл main.tf (из прошлого поста) добавляем ресурс диска Cloud-Init. Terraform создаст маленький ISO-образ с нашим конфигом и подключит его как CD-ROM к виртуалке. # 1. Читаем конфиг data "template_file" "user_data" { template = file("${path.module}/cloud_init.cfg") } # 2. Создаем диск с настройками resource "libvirt_cloudinit_disk" "commoninit" { name = "commoninit.iso" user_data = data.template_file.user_data.rendered } # 3. Цепляем к машине resource "libvirt_domain" "vm" { # ... остальные настройки ... # Самая важная строчка: cloudinit = libvirt_cloudinit_disk.commoninit.id # ... } 🚀 Результат: Вы запускаете terraform apply. Через 30 секунд у вас есть поднятый сервер с установленным Nginx. Вы просто пишете: ssh admin@<ip-address> ...и сразу попадаете внутрь. Никаких паролей, никаких ручных установок. 💡 Важный нюанс: Cloud-Init работает только на специальных Cloud Images (например, Ubuntu Cloud, CentOS GenericCloud, Debian Cloud). Если вы попытаетесь скормить ему обычный установочный ISO (Desktop/Server installer), магии не произойдет, там нет демона cloud-init, который читает конфиг при загрузке. #sysadmin #cloudinit #terraform #kvm #devops #automation #linux 👉 @sysadminof
Если у вас установлено приложение,
вы можете сразу перейти в канал