January 12

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