️ Ansible
If you like this project, consider supporting me on Buy Me a Coffee ☕️
Ansible Cheatsheet
Description: Ansible is an open-source agentless automation tool for software provisioning, configuration management, and application deployment. It uses SSH and YAML-based playbooks — no agent installation required on target hosts. Created by Michael DeHaan (2012), now maintained by Red Hat. Ansible — это open-source безагентный инструмент автоматизации для провижининга ПО, управления конфигурацией и деплоя. Использует SSH и YAML-плейбуки — не требует установки агентов на целевых хостах.
Status: Actively maintained by Red Hat. Alternatives: SaltStack (agent-based, faster at scale), Puppet (agent-based, declarative), Chef (Ruby-based). Ansible Semaphore provides a modern web UI. Role: DevOps / Sysadmin Version: 2.9+
📚 Table of Contents / Содержание
- Ad-Hoc Commands
- Playbooks
- Ansible Galaxy
- Ansible Vault
- Configuration
- Sysadmin Basics
- Logrotate Configuration
1. Ad-Hoc Commands / Ad-Hoc Команды
Basic Connectivity / Пинг
# Ping all hosts / Пинг всех хостов
ansible all -m ping -i <INVENTORY_FILE>
Module Execution / Заполнение модулей
# Shell command / Команда shell
ansible all -m shell -a "uptime" -i hosts
# Copy file / Копирование файла
ansible web -m copy -a "src=/etc/hosts dest=/tmp/hosts"
# Install package (yum) / Установка пакета (yum)
ansible db -m yum -a "name=nc state=present" --become
2. Playbooks / Плейбуки
Running Playbooks / Запуск плейбуков
# Run / Запуск
ansible-playbook -i inventory site.yml
# Check mode (Dry Run) / Режим проверки (Dry Run)
ansible-playbook -i inventory site.yml --check
# Limit to specific hosts / Ограничить конкретными хостами
ansible-playbook -i inventory site.yml --limit web01
# Debug (Verbose) / Отладка (Подробно)
ansible-playbook site.yml -vvv
Example Playbook / Пример плейбука
---
- name: Install Nginx
hosts: webservers
become: yes
tasks:
- name: Ensure nginx is installed
yum:
name: nginx
state: present
- name: Start nginx service
service:
name: nginx
state: started
enabled: yes
3. Ansible Galaxy / Ansible Galaxy
# Install Role / Установить роль
ansible-galaxy install geerlingguy.nginx
# Init new role structure / Создать структуру новой роли
ansible-galaxy init <ROLE_NAME>
4. Ansible Vault / Ansible Vault (Шифрование)
# Encrypt file / Зашифровать файл
ansible-vault encrypt secrets.yml
# Edit encrypted file / Редактировать зашифрованный файл
ansible-vault edit secrets.yml
# Decrypt file / Расшифровать файл
ansible-vault decrypt secrets.yml
# Run playbook with vault / Запуск плейбука с vault
ansible-playbook site.yml --ask-vault-pass
# Use vault password file / Использовать файл с паролем vault
ansible-playbook site.yml --vault-password-file ~/.vault_pass
[!WARNING] Never commit vault passwords to version control. Use
--vault-password-filepointing to a file excluded in.gitignore. Никогда не коммитьте пароли vault в систему контроля версий.
5. Configuration / Конфигурация
/etc/ansible/ansible.cfg or ./ansible.cfg
[defaults]
inventory = ./hosts
remote_user = <USER>
host_key_checking = False
private_key_file = ~/.ssh/id_rsa
Sysadmin Basics
Default Paths / Стандартные пути
| Path | Description (EN / RU) |
|---|---|
/etc/ansible/ansible.cfg |
System-wide config / Глобальная конфигурация |
~/.ansible.cfg |
User config / Пользовательская конфигурация |
./ansible.cfg |
Project config (highest priority) / Проектная конфигурация (наивысший приоритет) |
/etc/ansible/hosts |
Default inventory / Инвентарь по умолчанию |
~/.ansible/ |
Cache, plugins, roles / Кэш, плагины, роли |
Default Ports / Стандартные порты
| Port | Protocol | Description (EN / RU) |
|---|---|---|
| 22 | SSH | Default connection method / Метод подключения по умолчанию |
| 5986 | WinRM (HTTPS) | Windows hosts / Хосты Windows |
Useful Diagnostic Commands / Полезные команды диагностики
ansible --version # Show version / Показать версию
ansible all -m setup -i hosts # Gather facts / Собрать факты
ansible all -m ping -i hosts # Connectivity check / Проверка связи
ansible-config dump --only-changed # Show changed config / Показать изменённую конфигурацию
Logrotate Configuration
/etc/logrotate.d/ansible
/var/log/ansible/*.log {
weekly
rotate 4
compress
delaycompress
missingok
notifempty
create 640 root root
}
[!NOTE] Ansible does not log by default. Enable logging by setting
log_pathinansible.cfg:log_path = /var/log/ansible/ansible.logAnsible не логирует по умолчанию. Включите логирование черезlog_pathвansible.cfg.
Official Documentation / Официальная документация
- Ansible: https://docs.ansible.com/
- Ansible Galaxy (Roles): https://galaxy.ansible.com/
- Ansible Vault: https://docs.ansible.com/ansible/latest/vault_guide/
- Ansible Semaphore (Web UI): https://semaphoreui.com/