Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
В днешно време времето е най-ценният ресурс. Ако управлявате виртуални машини или сървъри ръчно, знаете колко време и усилия струва това. Добрата новина е, че има начини да автоматизирате почти всичко в ИТ инфраструктурата си.
📌 Конкретна полза: С Proxmox и Ansible можете да автоматизирате инсталации, обновявания и конфигурации на сървъри.
📌 Специфично съдържание: Ще видите реални примери и сценарии за използване.
📌 Измерима стойност: Спестявате до 80% от времето за рутинни задачи, което ви позволява да се фокусирате върху стратегическа работа.
Proxmox VE (Virtual Environment) е отворена платформа за виртуализация, базирана на Debian Linux. Тя комбинира KVM хипервайзор и LXC контейнери с уеб интерфейс и мощен REST API.
Ansible е инструмент за автоматизация с архитектура без агенти. Използва SSH за достъп до отдалечени машини и изпълнение на задачи.
Когато обединим Proxmox за виртуализация и Ansible за автоматизация, получаваме мощна платформа за управление на цели ИТ среди с минимални усилия.
🤝 Комбинацията осигурява:
Ръчно създаване на виртуална машина отнема време. Необходими са множество кликове в уеб интерфейса.
С Ansible можете да създадете LXC контейнер в Proxmox с един единствен playbook.
---
- name: Създаване на LXC контейнер в Proxmox
hosts: localhost
connection: local
gather_facts: no
vars:
proxmox_api_host: "{{ proxmox_host | default('proxmox.example.com') }}"
proxmox_api_user: "{{ proxmox_user | default('root@pam') }}"
proxmox_node: "{{ target_node | default('pve') }}"
ct_id: "{{ vmid | default(200) }}"
ct_hostname: "{{ hostname | default('test-lxc') }}"
ct_cores: "{{ cores | default(2) }}"
ct_memory: "{{ memory | default(1024) }}"
ct_disk_size: "{{ disk_size | default(8) }}"
ct_storage: "{{ storage | default('local-lvm') }}"
ct_template: "{{ ostemplate | default('local:vztmpl/ubuntu-20.04-standard_20.04-1_amd64.tar.gz') }}"
ct_password: "{{ root_password | default('changeme123') }}"
tasks:
- name: Създаване на LXC контейнер
community.general.proxmox:
api_user: "{{ proxmox_api_user }}"
api_password: "{{ proxmox_password }}"
api_host: "{{ proxmox_api_host }}"
node: "{{ proxmox_node }}"
vmid: "{{ ct_id }}"
hostname: "{{ ct_hostname }}"
cores: "{{ ct_cores }}"
memory: "{{ ct_memory }}"
swap: "{{ ct_memory // 2 }}"
disk: "{{ ct_disk_size }}"
storage: "{{ ct_storage }}"
ostemplate: "{{ ct_template }}"
password: "{{ ct_password }}"
# Мрежова конфигурация
netif:
net0: "name=eth0,bridge=vmbr0,ip=dhcp,type=veth"
# Функции
features:
- nesting=1 # Позволява Docker
# Автоматично стартиране
onboot: yes
# Непривилегирован контейнер (по-сигурен)
unprivileged: yes
state: present
register: lxc_creation
- name: Стартиране на контейнера
community.general.proxmox:
api_user: "{{ proxmox_api_user }}"
api_password: "{{ proxmox_password }}"
api_host: "{{ proxmox_api_host }}"
vmid: "{{ ct_id }}"
state: started
when: lxc_creation is succeeded
- name: Показване на информация за контейнера
debug:
msg: |
LXC контейнер създаден успешно!
ID: {{ ct_id }}
Hostname: {{ ct_hostname }}
Node: {{ proxmox_node }}
Ресурси: {{ ct_cores }} cores, {{ ct_memory }}MB RAM
Как да използвате подобрените playbooks:
# За VM с променливи
ansible-playbook proxmox-vm.yml -e "proxmox_password=your_password vmid=111 vm_name=web-server"
# За LXC с променливи
ansible-playbook proxmox-lxc.yml -e "proxmox_password=your_password vmid=201 hostname=app-container"
# Или създайте vars файл
ansible-playbook proxmox-vm.yml --extra-vars "@vars.yml"
Ръчното инсталиране на LAMP/LEMP стек отнема време и е податливо на грешки.
Ansible playbook, който прави това автоматично.
---
- name: Инсталиране и конфигуриране на LAMP стек
hosts: web
become: yes
vars:
mysql_root_password: "your_secure_password_here"
tasks:
- name: Обновяване на пакетите
apt:
update_cache: yes
- name: Инсталиране на Apache
apt:
name: apache2
state: present
- name: Инсталиране на PHP и необходими модули
apt:
name:
- php
- php-mysql
- php-cli
- php-curl
- php-gd
- php-mbstring
- php-xml
- libapache2-mod-php
state: present
- name: Инсталиране на MariaDB
apt:
name:
- mariadb-server
- mariadb-client
- python3-pymysql
state: present
- name: Стартиране и активиране на Apache
systemd:
name: apache2
state: started
enabled: yes
- name: Стартиране и активиране на MariaDB
systemd:
name: mariadb
state: started
enabled: yes
- name: Конфигуриране на MySQL root парола
mysql_user:
name: root
password: "{{ mysql_root_password }}"
login_unix_socket: /var/run/mysqld/mysqld.sock
- name: Премахване на анонимни MySQL потребители
mysql_user:
name: ''
host_all: yes
state: absent
login_user: root
login_password: "{{ mysql_root_password }}"
- name: Премахване на test базата данни
mysql_db:
name: test
state: absent
login_user: root
login_password: "{{ mysql_root_password }}"
- name: Създаване на основен PHP info файл
copy:
content: "<?php phpinfo(); ?>"
dest: /var/www/html/info.php
mode: '0644'
- name: Активиране на Apache rewrite модул
apache2_module:
name: rewrite
state: present
notify: restart apache
- name: Конфигуриране на firewall за HTTP и HTTPS
ufw:
rule: allow
port: "{{ item }}"
loop:
- '80'
- '443'
handlers:
- name: restart apache
systemd:
name: apache2
state: restarted
Обновяването на 10+ сървъра един по един е изтощително и рисковано.
С Ansible можете да обновите всички машини с една команда.
# Стратегия за production обновления
# 1. Staging обновяване първо
- name: Обновяване на staging сървъри
hosts: staging
become: yes
tasks:
- include: update-tasks.yml
# 2. Production обновяване на малки групи
- name: Обновяване на production (група 1)
hosts: production[0:2] # Първи 3 сървъра
become: yes
serial: 1
tasks:
- include: update-tasks.yml
- name: Изчакване и проверка
pause:
minutes: 5
prompt: "Провери дали всичко работи преди продължаване"
- name: Обновяване на production (група 2)
hosts: production[3:] # Останалите сървъри
become: yes
serial: "20%"
tasks:
- include: update-tasks.yml
Как да използвате playbook:
# Безопасно обновяване (препоръчително)
ansible-playbook update-servers.yml
# Само security обновления
ansible-playbook update-servers.yml -e "upgrade_type=security"
# Пълно обновяване (внимателно!)
ansible-playbook update-servers.yml -e "upgrade_type=full"
# С автоматичен рестарт (рисково!)
ansible-playbook update-servers.yml -e "auto_reboot=true"
# На по-малки групи сървъри
ansible-playbook update-servers.yml -e "batch_size=1"
# Само определени сървъри
ansible-playbook update-servers.yml -l "webservers"
✅ Полза: Сигурна и еднаква актуализация на всички системи.
🔢 Измерима стойност: Обновяване на 20 сървъра за под 5 минути.
Може да инсталирате Proxmox на стар компютър и да го използвате като тренировъчна платформа.
Когато използвате пароли и токени, криптирайте ги с ansible-vault
.
Ansible предлага dry-run с флага --check
. Полезно е преди да пуснете сериозни playbook-и.
[web]
192.168.1.10
192.168.1.11
[db]
192.168.1.12
Комбинацията от Proxmox + Ansible дава:
Независимо дали сте системен администратор, DevOps инженер или просто ентусиаст, автоматизацията е бъдещето. С Proxmox и Ansible вече можете да изградите стабилна и лесна за управление инфраструктура с малко усилие, но голям ефект.
🚀 Започнете днес с малки стъпки и ще усетите силата на автоматизацията още от първия playbook!
Благодарим ви за прочитането на статията! Ако намерихте информацията за полезна, можете да дарите посредством бутоните по-долу:
Donate ☕️ Дарете с PayPalDonate 💳 Дарете с Revolut