#Ansible

Agentless automation for configuration management.


#Installation

bash
pip install ansible

#Inventory

ini
1# inventory.ini
2[webservers]
3web1.example.com
4web2.example.com
5
6[databases]
7db1.example.com
8
9[all:vars]
10ansible_user=ubuntu

#Playbook Example

yaml
1# playbook.yml
2- name: Configure web servers
3  hosts: webservers
4  become: yes
5  
6  tasks:
7    - name: Install nginx
8      apt:
9        name: nginx
10        state: present
11        update_cache: yes
12    
13    - name: Start nginx
14      service:
15        name: nginx
16        state: started
17        enabled: yes
18    
19    - name: Copy config
20      template:
21        src: nginx.conf.j2
22        dest: /etc/nginx/nginx.conf
23      notify: Restart nginx
24  
25  handlers:
26    - name: Restart nginx
27      service:
28        name: nginx
29        state: restarted

#Commands

bash
1# Run playbook
2ansible-playbook -i inventory.ini playbook.yml
3
4# Check mode (dry run)
5ansible-playbook -i inventory.ini playbook.yml --check
6
7# Ad-hoc commands
8ansible webservers -i inventory.ini -m ping
9ansible webservers -i inventory.ini -a "uptime"

[!TIP] Pro Tip: Use Ansible roles for reusable, shareable configurations!