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, где будет еще больше полезной информации.