10 сценариев автоматизации для управления инфраструктурой с использованием Ansible
В этой статье будем автоматизировать. Каждый скрипт сопровождается примером кода и пояснениями. Всё для максимальной пользы.
1. Подготовка сервера
Подготовка серверов обычно является первым шагом в настройке инфраструктуры. Этот плейбук автоматизирует установку необходимых пакетов и инструментов на новых серверах.
---
- name: Provision servers with essential packages
hosts: all
tasks:
- name: Update apt cache
apt:
update_cache: yes
- name: Install essential packages
apt:
name:
- vim
- curl
- git
state: present- Плейбук обновляет список пакетов и устанавливает основные пакеты, такие как vim, curl и git.
- Идеально подходит для инициализации новой серверной среды со стандартными инструментами.
2. Автоматизация создания учетных записей пользователей
Управление пользователями необходимо для контроля доступа в многопользовательских средах. Этот плейбук создает пользователей и настраивает доступ по SSH.
---
- name: Create users and configure SSH access
hosts: all
vars:
users:
- username: "devops"
ssh_key: "ssh-rsa AAAAB3Nza..."
- username: "admin"
ssh_key: "ssh-rsa AAAAB3Nza..."
tasks:
- name: Create users
user:
name: "{{ item.username }}"
state: present
loop: "{{ users }}"
- name: Set up SSH authorized keys
authorized_key:
user: "{{ item.username }}"
key: "{{ item.ssh_key }}"
state: present
loop: "{{ users }}" - Определяет пользователей в переменных и выполняет итерации по ним для создания учетных записей и настройки ключей SSH.
- Помогает автоматизировать безопасное и последовательное добавление пользователей.
3. Автоматическая настройка брандмауэра
Настройка брандмауэра играет решающую роль в безопасности. Этот плейбук настраивает ufw для разрешения только необходимых портов.
---
- name: Configure firewall with UFW
hosts: all
tasks:
- name: Install UFW
apt:
name: ufw
state: present
- name: Allow SSH
ufw:
rule: allow
port: '22'
- name: Allow HTTP and HTTPS
ufw:
rule: allow
port: "{{ item }}"
loop:
- '80'
- '443'
- name: Enable UFW
ufw:
state: enabled - Устанавливает и настраивает UFW для разрешения трафика SSH, HTTP и HTTPS.
- Автоматически применяет согласованные настройки брандмауэра на всех серверах.
4. Обновления и исправления системы
Этот сценарий автоматизирует обновления системы на всех серверах.
---
- name: Update and upgrade packages
hosts: all
tasks:
- name: Update apt cache
apt:
update_cache: yes
- name: Upgrade all packages
apt:
upgrade: dist - Обновляет кэш пакетов и обновляет все установленные пакеты.
- Автоматизирует регулярное обновление для поддержания безопасности системы.
5. Автоматизация настройки Nginx
Этот плейбук автоматизирует установку и настройку Nginx.
---
- name: Install and configure Nginx
hosts: web_servers
tasks:
- name: Install Nginx
apt:
name: nginx
state: present
- name: Start and enable Nginx service
service:
name: nginx
state: started
enabled: yes - Устанавливает Nginx, запускает службу и настраивает автозапуск при загрузке.
- Упрощает процесс настройки веб-серверов со стандартными конфигурациями.
6. Настройка сервера базы данных (MySQL)
Этот плейбук устанавливает MySQL и безопасно настраивает БД.
---
- name: Install and secure MySQL
hosts: db_servers
tasks:
- name: Install MySQL
apt:
name: mysql-server
state: present
- name: Secure MySQL installation
mysql_secure_installation:
login_password: ""
root_password: "new_password"
change_root_password: yes
remove_anonymous_users: yes
disallow_root_login_remotely: yes
remove_test_db: yes- Устанавливает MySQL и выполняет первоначальную настройку безопасности, включая установку пароля root и удаление тестовых баз данных.
- Автоматизирует развертывание защищенных серверов MySQL.
7. Автоматическая настройка резервного копирования
Этот плейбук настраивает автоматическое резервное копирование с использованием rsync для синхронизации данных с сервером резервного копирования.
---
- name: Set up automated backups
hosts: all
vars:
backup_server: "backup.example.com"
backup_path: "/backup"
src_path: "/data"
tasks:
- name: Install rsync
apt:
name: rsync
state: present
- name: Sync data to backup server
command: "rsync -avz {{ src_path }} {{ backup_server }}:{{ backup_path }}"- Устанавливает rsync и настраивает задание по синхронизации данных с удаленным сервером резервного копирования.
- Автоматизирует регулярное резервное копирование данных для обеспечения избыточности.
8. Конфигурация балансировщика нагрузки (HAProxy)
Балансировщики нагрузки распределяют трафик по серверам для обеспечения надежности. Этот плейбук устанавливает и настраивает HAProxy.
---
- name: Set up HAProxy as a load balancer
hosts: lb_servers
tasks:
- name: Install HAProxy
apt:
name: haproxy
state: present
- name: Configure HAProxy
template:
src: haproxy.cfg.j2
dest: /etc/haproxy/haproxy.cfg
- name: Restart HAProxy
service:
name: haproxy
state: restarted- Устанавливает HAProxy и использует файл шаблона для конфигурации.
- Автоматизирует настройку балансировщика нагрузки для улучшения управления трафиком между серверами.
9. Установка и настройка Docker
Этот плейбук автоматизирует установку Docker и базовую настройку на серверах.
---
- name: Install Docker
hosts: all
tasks:
- name: Install Docker dependencies
apt:
name: "{{ item }}"
state: present
loop:
- apt-transport-https
- ca-certificates
- curl
- software-properties-common
- name: Add Docker GPG key
apt_key:
url: https://download.docker.com/linux/ubuntu/gpg
state: present
- name: Add Docker repository
apt_repository:
repo: deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable
state: present
- name: Install Docker
apt:
name: docker-ce
state: present- Настраивает Docker, устанавливая необходимые зависимости и добавляет официальный репозиторий Docker.
- Автоматизирует процесс развертывания Docker на новых серверах.
10. Мониторинг с помощью Prometheus Node Exporter
Этот плейбук устанавливает и настраивает Prometheus Node Exporter.
---
- name: Install Prometheus Node Exporter
hosts: all
tasks:
- name: Download Node Exporter
get_url:
url: https://github.com/prometheus/node_exporter/releases/download/v1.3.1/node_exporter-1.3.1.linux-amd64.tar.gz
dest: /tmp/node_exporter.tar.gz
- name: Extract Node Exporter
unarchive:
src: /tmp/node_exporter.tar.gz
dest: /opt
remote_src: yes
- name: Create Node Exporter service
copy:
dest: /etc/systemd/system/node_exporter.service
content: |
[Unit]
Description=Prometheus Node Exporter
[Service]
ExecStart=/opt/node_exporter-1.3.1.linux-amd64/node_exporter
[Install]
WantedBy=default.target
- name: Start and enable Node Exporter
service:
name: node_exporter
state: started
enabled: yes - Загружает, устанавливает и настраивает Node Exporter для мониторинга системных показателей.
- Автоматизирует настройку мониторинга, обеспечивая постоянный обзор производительности сервера.
Эти скрипты помогут сократить количество ручных операций и при этом обеспечить надежную и безопасную инфраструктуру.
На этом все! Спасибо за внимание! Если статья была интересна, подпишитесь на телеграм-канал usr_bin, где будет еще больше полезной информации.