Please enable JavaScript.
Coggle requires JavaScript to display documents.
Phase 6 - Variables (Data Management) - Coggle Diagram
Phase 6 - Variables (Data Management)
What are Variables?
Definition
Variables are named values used to store information.
They make playbooks reusable and dynamic.
Instead of hardcoding values, variables allow different servers to use different configurations.
Why Variables are Important
Avoid duplicate code.
Easy maintenance.
Separate data from automation logic.
Environment-specific configuration.
Secure sensitive information.
Improve scalability.
Enterprise Uses
Different package names for different operating systems.
Different IP addresses.
Different application ports.
Different database credentials.
Environment configuration (Development, Testing, Staging, Production).
Variable Precedence (Highest to Lowest)
Extra Variables
Task Variables
Block Variables
Role Variables
Include Variables
Set Fact Variables
Host Variables
Group Variables
Inventory Variables
Play Variables
Role Defaults
Variable Types
String
Example
username: bilal
server_name: web01.example.com
Integer
Example
port: 80
max_clients: 500
Boolean
Example
apache_enabled: true
firewall_enabled: false
List
Example
packages
httpd
git
vim
Dictionary
Example
webserver
package: httpd
service: httpd
port: 80
Nested Dictionary
Example
application
web
package: nginx
port: 80
database
package: mariadb
port: 3306
Variable Storage Locations
Playbook Variables
Location
Inside playbook
Syntax
vars:
package: httpd
Inventory Variables
inventory
hosts.ini
Group Variables
Path
group_vars/
Purpose
Variables shared by all hosts in a group.
Structure
group_vars/
all.yml
webservers.yml
dbservers.yml
appservers.yml
monitoring.yml
backup.yml
group_vars/all.yml
Applies to every managed host.
group_vars/webservers.yml
Applies only to web servers.
Enterprise Example
apache_package: httpd
apache_service: httpd
web_port: 80
Host Variables
Path
host_vars/
Purpose
Variables specific to one server.
Structure
host_vars/
web01.yml
web02.yml
db01.yml
app01.yml
Example
server_ip: 192.168.10.20
backup_enabled: true
Variable Files
vars/
common.yml
apache.yml
nginx.yml
mysql.yml
security.yml
Loading Variable Files
vars_files
Runtime Variables
Prompt Variables
Module
vars_prompt
Purpose
Ask user for input before playbook execution.
Enterprise Uses
Username
Password
Change Ticket Number
Maintenance Window
Environment Selection
Extra Variables
Command
ansible-playbook playbook.yml -e "package=httpd"
Multiple Variables
ansible-playbook playbook.yml -e "package=httpd service=httpd"
JSON Format
ansible-playbook playbook.yml -e '{"package":"httpd","service":"httpd"}'
YAML File
ansible-playbook playbook.yml -e
vars.yml
Enterprise Uses
Emergency Patching
Temporary Configuration
CI/CD Pipeline Variables
Register Variables
Purpose
Save module output into a variable.
Example
Register package installation result.
Register command output.
Register service status.
Register disk usage.
Register application health.
Access Values
stdout
stderr
rc
changed
failed
Set Fact
Module
set_fact
Purpose
Create variables during playbook execution.
Enterprise Uses
Dynamic calculations.
Store API responses.
Store generated paths.
Build configuration dynamically.
Magic Variables
Purpose
Built-in variables automatically provided by Ansible.
Common Magic Variables
inventory_hostname
Current inventory hostname.
inventory_hostname_short
Short hostname.
ansible_hostname
Remote hostname.
ansible_fqdn
Fully Qualified Domain Name.
ansible_user
Connected SSH user.
ansible_os_family
Operating system family.
ansible_distribution
Linux distribution.
ansible_distribution_version
Distribution version.
ansible_kernel
Running kernel.
ansible_architecture
CPU architecture.
ansible_default_ipv4.address
Primary IPv4 address.
ansible_all_ipv4_addresses
All IPv4 addresses.
ansible_processor
CPU information.
ansible_memory_mb
RAM information.
ansible_mounts
Mounted filesystems.
ansible_devices
Disk information.
group_names
Groups current host belongs to.
groups
Complete inventory groups.
play_hosts
Hosts participating in play.
ansible_play_hosts
Active hosts.
ansible_play_batch
Current batch during serial execution.
Facts
Module
setup
Command
ansible all -m setup
Filter Facts
ansible all -m setup -a "filter=ansible_hostname"
ansible all -m setup -a "filter=ansible_distribution"
ansible all -m setup -a "filter=ansible_default_ipv4"
Variable Naming Standards
Lowercase only
Use underscore
Meaningful names
Avoid spaces
Avoid reserved keywords
Enterprise Directory Structure
ansible/
inventory/
group_vars/
host_vars/
vars/
defaults/
roles/
playbooks/