️ 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 / Содержание

  1. Ad-Hoc Commands
  2. Playbooks
  3. Ansible Galaxy
  4. Ansible Vault
  5. Configuration
  6. Sysadmin Basics
  7. 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-file pointing 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_path in ansible.cfg: log_path = /var/log/ansible/ansible.log Ansible не логирует по умолчанию. Включите логирование через log_path в ansible.cfg.


Official Documentation / Официальная документация

On this page

Ansible Cheatsheet 📚 Table of Contents / Содержание 1. Ad-Hoc Commands / Ad-Hoc Команды Basic Connectivity / Пинг Module Execution / Заполнение модулей 2. Playbooks / Плейбуки Running Playbooks / Запуск плейбуков Example Playbook / Пример плейбука 3. Ansible Galaxy / Ansible Galaxy 4. Ansible Vault / Ansible Vault (Шифрование) 5. Configuration / Конфигурация Sysadmin Basics Default Paths / Стандартные пути Default Ports / Стандартные порты Useful Diagnostic Commands / Полезные команды диагностики Logrotate Configuration Official Documentation / Официальная документация