Acest curs explorează utilizarea Ansible pentru gestionarea și automatizarea configurațiilor serverelor și infrastructurii.
Ansible este un instrument open-source pentru automatizarea infrastructurii, folosind fișiere YAML pentru definirea configurațiilor.
Ansible se poate instala pe Linux sau macOS cu:
sudo apt update && sudo apt install ansible -y
Pe macOS se poate instala cu Homebrew:
brew install ansible
Inventarul Ansible conține lista serverelor gestionate. Exemplu de fișier `hosts`:
[web]
server1 ansible_host=192.168.1.10 ansible_user=ubuntu ansible_ssh_private_key_file=~/.ssh/id_rsa
Comandă pentru verificarea conectivității:
ansible all -m ping -i hosts
Playbooks sunt fișiere YAML care definesc sarcini automatizate pentru unul sau mai multe servere.
Exemplu de playbook `setup-webserver.yml`:
- hosts: web
become: yes
tasks:
- name: Instalare Nginx
apt:
name: nginx
state: present
- name: Pornire Nginx
service:
name: nginx
state: started
Rularea unui playbook:
ansible-playbook -i hosts setup-webserver.yml
Ansible folosește module pentru a interacționa cu sistemele gestionate.
Exemple de module frecvent utilizate:
- `ping`: Testează conectivitatea - `apt`: Instalează pachete pe Debian/Ubuntu - `yum`: Instalează pachete pe RHEL/CentOS - `copy`: Copiază fișiere pe server - `template`: Creează fișiere din template-uri Jinja2
Exemplu de utilizare a modulului `copy` într-un playbook:
- hosts: web
tasks:
- name: Copiere fișier de configurare
copy:
src: config/nginx.conf
dest: /etc/nginx/nginx.conf
owner: root
group: root
mode: 0644
Ansible poate gestiona resurse AWS folosind modulul `ec2_instance`.
Exemplu de playbook pentru lansarea unei instanțe EC2:
- hosts: localhost
tasks:
- name: Creare instanță EC2
amazon.aws.ec2_instance:
name: "Ansible-Managed-EC2"
key_name: "my-aws-key"
instance_type: "t2.micro"
security_groups: ["default"]
image_id: "ami-0c55b159cbfafe1f0"
region: "us-east-1"
count: 1
Pentru utilizarea AWS cu Ansible, instalează dependențele necesare:
pip install boto3 botocore
Exemplu de playbook complet care instalează Docker și rulează un container Nginx:
- hosts: web
become: yes
tasks:
- name: Instalare Docker
apt:
name: docker.io
state: present
- name: Pornire Docker
service:
name: docker
state: started
- name: Rulare container Nginx
docker_container:
name: webserver
image: nginx
ports:
- "80:80"