
inventory-manager
by armanzeroeight
๐ A collection of Claude subagents, skills, rules, guides, and blueprints for Developers, Engineers, and Creators. | Covering programming languages, DevOps, Cloud, and beyond.
SKILL.md
name: inventory-manager description: Organizes Ansible inventory files, manages host groups, and configures dynamic inventory. Use when organizing Ansible inventory, managing host groups, or setting up dynamic inventory sources.
Inventory Manager
Quick Start
Organize Ansible inventory with proper host groups, variables, and dynamic inventory sources.
Instructions
Step 1: Create static inventory
INI format:
# inventory/production
[webservers]
web1 ansible_host=192.168.1.10
web2 ansible_host=192.168.1.11
[databases]
db1 ansible_host=192.168.1.20
db2 ansible_host=192.168.1.21
[loadbalancers]
lb1 ansible_host=192.168.1.30
[production:children]
webservers
databases
loadbalancers
[production:vars]
ansible_user=deploy
ansible_python_interpreter=/usr/bin/python3
environment=production
YAML format:
# inventory/production.yml
all:
children:
production:
children:
webservers:
hosts:
web1:
ansible_host: 192.168.1.10
web2:
ansible_host: 192.168.1.11
databases:
hosts:
db1:
ansible_host: 192.168.1.20
db2:
ansible_host: 192.168.1.21
loadbalancers:
hosts:
lb1:
ansible_host: 192.168.1.30
vars:
ansible_user: deploy
environment: production
Step 2: Organize group variables
Directory structure:
inventory/
โโโ production
โโโ staging
โโโ group_vars/
โ โโโ all.yml
โ โโโ webservers.yml
โ โโโ databases.yml
โ โโโ production.yml
โโโ host_vars/
โโโ web1.yml
โโโ db1.yml
group_vars/all.yml:
---
# Variables for all hosts
ansible_python_interpreter: /usr/bin/python3
ntp_servers:
- 0.pool.ntp.org
- 1.pool.ntp.org
group_vars/webservers.yml:
---
# Variables for webservers group
nginx_port: 80
nginx_worker_processes: 4
app_directory: /var/www/app
group_vars/production.yml:
---
# Variables for production environment
environment: production
backup_enabled: true
monitoring_enabled: true
Step 3: Configure host-specific variables
host_vars/web1.yml:
---
nginx_worker_connections: 1024
server_id: 1
Step 4: Use inventory in playbooks
# Run playbook with specific inventory
ansible-playbook -i inventory/production site.yml
# Target specific group
ansible-playbook -i inventory/production site.yml --limit webservers
# Target specific host
ansible-playbook -i inventory/production site.yml --limit web1
Dynamic Inventory
AWS EC2 Plugin
inventory/aws_ec2.yml:
---
plugin: amazon.aws.aws_ec2
regions:
- us-east-1
- us-west-2
filters:
tag:Environment: production
instance-state-name: running
keyed_groups:
- key: tags.Role
prefix: role
- key: tags.Environment
prefix: env
- key: placement.availability_zone
prefix: az
hostnames:
- tag:Name
- private-ip-address
compose:
ansible_host: private_ip_address
Azure Plugin
inventory/azure_rm.yml:
---
plugin: azure.azcollection.azure_rm
include_vm_resource_groups:
- production-rg
keyed_groups:
- key: tags.role
prefix: role
- key: tags.environment
prefix: env
conditional_groups:
webservers: "'web' in tags.role"
databases: "'db' in tags.role"
Custom Script
inventory/custom.py:
#!/usr/bin/env python3
import json
inventory = {
"webservers": {
"hosts": ["web1", "web2"],
"vars": {
"nginx_port": 80
}
},
"databases": {
"hosts": ["db1", "db2"]
},
"_meta": {
"hostvars": {
"web1": {"ansible_host": "192.168.1.10"},
"web2": {"ansible_host": "192.168.1.11"},
"db1": {"ansible_host": "192.168.1.20"},
"db2": {"ansible_host": "192.168.1.21"}
}
}
}
print(json.dumps(inventory))
Inventory Patterns
All hosts:
ansible all -i inventory/production -m ping
Specific group:
ansible webservers -i inventory/production -m ping
Multiple groups:
ansible 'webservers:databases' -i inventory/production -m ping
Exclude group:
ansible 'all:!databases' -i inventory/production -m ping
Intersection:
ansible 'webservers:&production' -i inventory/production -m ping
Regex:
ansible '~web.*' -i inventory/production -m ping
Multi-Environment Setup
inventory/
โโโ production/
โ โโโ hosts
โ โโโ group_vars/
โ โ โโโ all.yml
โ โ โโโ webservers.yml
โ โโโ host_vars/
โโโ staging/
โ โโโ hosts
โ โโโ group_vars/
โ โ โโโ all.yml
โ โ โโโ webservers.yml
โ โโโ host_vars/
โโโ development/
โโโ hosts
โโโ group_vars/
โโโ all.yml
Usage:
# Production
ansible-playbook -i inventory/production site.yml
# Staging
ansible-playbook -i inventory/staging site.yml
# Development
ansible-playbook -i inventory/development site.yml
Best Practices
- Organize inventory by environment
- Use group_vars for shared configuration
- Use host_vars for host-specific settings
- Document inventory structure
- Use dynamic inventory for cloud resources
- Keep sensitive data in Ansible Vault
- Use meaningful group names
- Implement proper variable precedence
Score
Total Score
Based on repository quality metrics
SKILL.mdใใกใคใซใๅซใพใใฆใใ
ใฉใคใปใณในใ่จญๅฎใใใฆใใ
100ๆๅญไปฅไธใฎ่ชฌๆใใใ
GitHub Stars 100ไปฅไธ
1ใถๆไปฅๅ ใซๆดๆฐ
10ๅไปฅไธใใฉใผใฏใใใฆใใ
ใชใผใใณIssueใ50ๆชๆบ
ใใญใฐใฉใใณใฐ่จ่ชใ่จญๅฎใใใฆใใ
1ใคไปฅไธใฎใฟใฐใ่จญๅฎใใใฆใใ
Reviews
Reviews coming soon
