Skip to content

fabio-rinaldo/ansible-template

Repository files navigation

ansible-template

This repository is a template for new Ansible projects. It also contains some useful commands.

Project Structure

ansible-template/
├── ansible.cfg                         # Main Ansible configuration
├── .gitignore                           
├── README.md                            
├── requirements.yml                    # Galaxy roles and collections dependencies
│
├── inventory/                          # One group per environment (dev, staging, prod)
│   ├── mygroup/
│   │   ├── hosts.yml                   # mygroup hosts
│   │   └── group_vars/all.yml          # mygroup variables
│   └─── hosts.yml                      # global hosts file
│
├── group_vars/
│   └── all.yml                         # Global variables for all environments
├── host_vars/                          # Host-specific variables
│   └── myhost/
│       ├── main.yml                    
│       └── secrets.yml                 
│
├── roles/
│   └── common/                         # Example role with complete structure
│       ├── tasks/main.yml              # Role tasks
│       ├── handlers/main.yml           # Service handlers
│       ├── templates/                  # Jinja2 templates
│       │   └── template.file.j2        
│       ├── files/                      # Static files
│       ├── vars/main.yml               # Role variables
│       ├── defaults/main.yml           # Default variables
│       ├── meta/main.yml               # Role metadata and dependencies
│       └── tests/                      # Role tests
│
├── playbooks/
│   └── playbook.yml
│
├── filter_plugins/                     # Custom Jinja2 filters
├── library/                            # Custom Ansible modules
└── files/                              # Global static files

Useful commands

Install Dependencies

# Install required collections and roles
ansible-galaxy install -r requirements.yml

# Install Python dependencies (if any)
pip install -r requirements.txt

Run Playbooks

# Run the main site playbook
ansible-playbook playbooks/playbook.yml

# Run with specific inventory
ansible-playbook -i inventory/mygroup/hosts.yml playbooks/playbook.yml

# Run with tags
ansible-playbook playbooks/playbook.yml --tags "webservers"

# Check mode (dry-run)
ansible-playbook playbooks/playbook.yml --check

# With verbose output
ansible-playbook playbooks/playbook.yml -vvv

Environment Management

Switch between environments by specifying the inventory:

ansible-playbook -i inventory/mygroup/hosts.yml playbooks/playbook.yml

Or use the default one spec'd in ansible.cfg:

ansible-playbook playbooks/playbook.yml

Testing

# Syntax check
ansible-playbook playbooks/playbook.yml --syntax-check

# List tasks
ansible-playbook playbooks/playbook.yml --list-tasks

# List hosts
ansible-playbook playbooks/playbook.yml --list-hosts

# Dry run
ansible-playbook playbooks/playbook.yml --check --diff

About

Ansible project template

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors