Ansible è uno strumento open source per la gestione della configurazione e la distribuzione delle applicazioni. Aiuta a ridurre le spese di gestione automatizzando l'implementazione dell'app e gestendo l'infrastruttura IT.
Utilizzo di ansible installeremo il server web apache2 in Ubuntu 20.04. Per questo abbiamo bisogno di creare una configurazione nella sintassi YAML chiamata Playbook Ansible .
Normalmente, c'è un nodo di controllo e nodi host. Ansible è installato nel nodo di controllo ed eseguirà il playbook da distribuire nei nodi host. In questo lab, lo installeremo e lo useremo in un singolo nodo.
Installazione di ansible su Ubuntu
Innanzitutto, aggiorna il tuo sistema. Il comando seguente recupera il pacchetto più recente:
$ sudo apt update
Ansible è disponibile nel repository di base di Ubuntu 20.04. Per installare ansible eseguire il seguente comando:
$ sudo apt install ansible -y
Quindi, controlla la versione ansible usando il comando,
$ ansible --version
Il file di configurazione dell'host è archiviato nel file /etc/ansible/hosts. Aggiungi l'IP del tuo server localhost al file con l'aiuto del comando seguente. Assicurati di avere un utente sudo. Nel nostro caso, "ubuntu" ha il privilegio sudo. Qui, ho indicato il mio nome come 'myserver' puoi fornire il tuo. Inoltre, ricorda che l'utente ubuntu è sudo user nel sistema.
$ echo "myserver ansible_host=127.0.0.1 ansible_user=ubuntu" >> /etc/ansible/host
Basta controllarlo usando il comando,
$ ansible myserver -m ping
Dovresti ottenere una risposta pong simile allo screenshot qui sotto.
Creazione di un Playbook
Ora, creiamo un playbook chiamato 'apache.yml' per installare ed eseguire l'ultimo server web apache.
$ vi apache.yml
Aggiungi il seguente contenuto al file
---
- hosts: myserver
become: true
vars:
- vars/default.yml
- tasks:
- name: Install latest version of Apache
apt: name=apache2 update_cache=yes state=latest
- name: Create document root for your domain
file:
path: "/var/www/{{ http_host }}"
state: directory
owner: "{{ app_user }}"
mode: '0755'
- name: Copy your index page
template:
src: "files/index.html.j2"
dest: "/var/www/{{ http_host }}/index.html"
- name: Set up virtuahHost
template:
src: "files/apache.conf.j2"
dest: "/etc/apache2/sites-available/{{ http_conf }}"
notify: restart-apache
- name: "UFW firewall allow HTTP on port {{ http_port }}"
ufw:
rule: allow
port: "{{ http_port }}"
proto: tcp
handlers:
- name: restart-apache
service:
name: apache2
state: restarted
Ecco,
- ospite :è il nome host che hai definito nel file /etc/ansible/hosts
- diventare:vero è l'escalation dei privilegi per essere sudo
- vari :per definire le variabili
- attività :vengono definiti quattro compiti. Installazione di apache, copia della pagina dell'indice, configurazione dell'host virtuale, abilitazione di http dal firewall UFW se già abilitato.
- gestori :per riavviare Apache se tutte le altre attività hanno esito positivo.
Insieme al playbook, dovresti definire altri tre file vars/default.yml, files/apache.conf.j2 e files/index.html.j2 . Creiamoli uno per uno.
vars/default.yml
Il file default.yml contiene il nome di dominio, il percorso del file di configurazione e la porta http. Crea il file e aggiungi quanto segue.
http_host: "mydomain.local"
http_conf: "my_domain.conf"
http_port: "80"
file/apache.conf.j2
Il modello di configurazione di Apache contiene la configurazione per l'host virtuale. La variabile è definita all'interno di {{ }} ed è ottenuta dal file vars definito sopra. Crea il file apache.conf.js e aggiungi il seguente contenuto.
<VirtualHost *:{{ http_port }}>
ServerAdmin webmaster@localhost
ServerName {{ http_host }}
ServerAlias www.{{ http_host }}
DocumentRoot /var/www/{{ http_host }}
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
file/indice.html.j2
Un altro modello è il tuo file di indice. Crea il file e aggiungi il seguente contenuto. Puoi modificare secondo le tue esigenze.
<html>
<head>
<title>{{ http_host }}</title>
</head>
<body>
<h1>Welcome to {{ http_host }}</h1>
</body>
</html>
Ora puoi eseguire ansible-playbook con il seguente comando.
$ ansible-playbook apache.yml --ask-become-pass
Ti verrà richiesto di inserire una password per l'utente sudo. Lo stato dovrebbe essere ok come mostrato di seguito.
Verrà eseguito anche Apache sulla porta 80 predefinita, puoi verificare la navigazione in localhost nel tuo browser preferito.
Conclusione
Ansible è uno strumento utile in quanto è senza agenti e la configurazione della scrittura è semplice. Puoi sfogliare più configurazioni dalla documentazione ufficiale di ansible. Si prega di commentare in caso di problemi durante la scrittura del playbook su ansible.