๏ธ Ansible

If you like this project, consider supporting me on Buy Me a Coffee โ˜•๏ธ


tags:

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

Basic Connectivity

# Ping all hosts
ansible all -m ping -i <INVENTORY_FILE>

Module Execution

# Shell command
ansible all -m shell -a "uptime" -i hosts

# Copy file
ansible web -m copy -a "src=/etc/hosts dest=/tmp/hosts"

# Install package (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)
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

# Install Role
ansible-galaxy install geerlingguy.nginx

# Init new role structure
ansible-galaxy init <ROLE_NAME>

4. 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
ansible-playbook site.yml --ask-vault-pass

# Use vault password file
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

sysadmin Ansible Cheatsheet ๐Ÿ“š Table of Contents 1. Ad-Hoc Commands Basic Connectivity Module Execution 2. Playbooks Running Playbooks Example Playbook 3. Ansible Galaxy 4. Ansible Vault 5. Configuration Sysadmin Basics Default Paths Default Ports Useful Diagnostic Commands Logrotate Configuration Official Documentation