Initial Draft
Common Ansible Commands
# Check Ansible version
ansible --version
# Ping all hosts in the inventory
ansible all -m ping -i inventory.ini
# Run a command on all hosts
ansible all -m command -a "uptime"
# Use the shell module (for pipes, variables, etc.)
ansible all -m shell -a "echo $PATH"
# Copy a file to remote hosts
ansible all -m copy -a "src=./file.txt dest=/tmp/file.txt"
# Install a package (Debian/Ubuntu)
ansible all -m apt -a "name=htop state=present"
# Reboot all hosts
ansible all -m reboot
# Run a playbook
ansible-playbook site.yml
# Specify a custom inventory
ansible-playbook -i inventory.ini site.yml
# Limit playbook to a host or group
ansible-playbook -l webservers site.yml
# Run only specific tags
ansible-playbook site.yml --tags "setup"
# Skip specific tags
ansible-playbook site.yml --skip-tags "debug"
# Show hosts targeted by a playbook
ansible-playbook site.yml --list-hosts
# List tasks in a playbook
ansible-playbook site.yml --list-tasks
# Syntax check a playbook
ansible-playbook site.yml --syntax-check
# Dry-run (check mode)
ansible-playbook site.yml --check
# Run with verbosity
ansible-playbook site.yml -v
ansible-playbook site.yml -vv
ansible-playbook site.yml -vvv
# Encrypt a file with Ansible Vault
ansible-vault encrypt secrets.yml
# Decrypt a vault file
ansible-vault decrypt secrets.yml
# Edit a vault-encrypted file
ansible-vault edit secrets.yml
# Run a playbook with vault password prompt
ansible-playbook site.yml --ask-vault-pass
# Create a new role
ansible-galaxy init roles/myrole
# Install roles from a requirements file
ansible-galaxy install -r requirements.yml
# Show inventory structure (graph)
ansible-inventory -i inventory.ini --graph
# Start at a specific task in a playbook
ansible-playbook site.yml --start-at-task="Install NGINX"
# Lint your playbooks
ansible-lint site.yml
Recommended Project Structure
site.yml
inventory.ini
group_vars/
│ ├── all.yml
│ └── webservers.yml
roles/
├── common/
│ └── tasks/main.yml
└── web/
└── tasks/main.yml