Ansible - это инструмент для управления конфигурацией, автоматизации развёртывания и управления инфраструктурой. Простота использования, отсутствие необходимости в агентах и возможность масштабирования делают его идеальным выбором как для небольших команд, так и для крупных организаций.
В этой статье разберём, как начать работу с Ansible, автоматизировать задачи и повысить эффективность управления серверами.
Что такое Ansible? Ansible - это инструмент, основанный на архитектуре "push", который использует SSH для взаимодействия с серверами.
Основные преимущества:
Лёгкость установки и настройки.
YAML-формат для описания задач (Playbooks).
Модульная структура.
Поддержка сотен модулей для работы с различными системами.
1. Установка на управляющей машине
Для Ubuntu:
sudo apt update
sudo apt install ansible -y
Для CentOS:
sudo yum install epel-release -y
sudo yum install ansible -y
2. Настройка SSH-доступа к серверам. Ansible использует SSH для подключения к узлам. Настройте безпарольный доступ:
ssh-keygen -t rsa
ssh-copy-id user@remote_server
3. Настройка инвентаря. Ansible использует файл инвентаря для описания узлов. По умолчанию это /etc/ansible/hosts.
Пример файла:
[web_servers]
192.168.1.101
192.168.1.102
[db_servers]
192.168.1.201
192.168.1.202
Вы можете создавать группы узлов и применять конфигурации ко всем серверам в группе.
4. Написание Playbook. Playbook - это файл в формате YAML, который описывает, что нужно сделать на целевых узлах.
Пример: Установка Apache на веб-серверах
- name: Установка Apache
hosts: web_servers
become: true # Повышение привилегий до root
tasks:
- name: Убедиться, что Apache установлен
apt:
name: apache2
state: present
- name: Запустить и включить Apache
service:
name: apache2
state: started
enabled: true
Запуск Playbook:
ansible-playbook install_apache.yml
---
Автоматизация задач
1. Обновление пакетов на всех серверах
- name: Обновление всех пакетов
hosts: all
become: true
tasks:
- name: Обновить пакеты
apt:
update_cache: yes
upgrade: dist
2. Создание пользователей
- name: Создание пользователя devops
hosts: all
become: true
tasks:
- name: Создать пользователя
user:
name: devops
state: present
groups: sudo
3. Копирование конфигурационных файлов
- name: Копирование файла конфигурации
hosts: web_servers
become: true
tasks:
- name: Копировать конфигурацию Nginx
copy:
src: /path/to/nginx.conf
dest: /etc/nginx/nginx.conf
mode: '0644'
Проверка состояния серверов. Для быстрого выполнения команды на узлах используйте модуль ping:
ansible all -m ping
Пример выполнения команды
uptime на всех узлах:
ansible all -m command -a "uptime"
---
Дополнительные советы
Используйте переменные:
Вы можете задавать переменные в Playbook, инвентаре или через командную строку.
vars:
nginx_port: 8080
Шифруйте секреты: Ansible Vault позволяет хранить конфиденциальные данные.
ansible-vault encrypt secret.yml
Интеграция с CI/CD: Ansible легко интегрируется с Jenkins, GitLab CI и другими системами.
Используйте Ansible для настройки серверов, развертывания приложений, управления конфигурациями и многого другого. Овладев этим инструментом, вы сможете автоматизировать рутинные задачи.
BashTex 📱 #linux #utils