Torna al blog

Installazione e configurazione di LAMP su Ubuntu 20.04 con Ansible

Installazione e configurazione di LAMP su Ubuntu 20.04 con Ansible

L’automazione dei server è un processo sicuro e affidabile per gestire e monitorare i server in modo efficace e tecnologicamente avanzato. A differenza dello stile tradizionale di gestione dei server nei data center controllati da un team dedicato di esperti, tutti i server vengono gestiti tramite l’automazione. Di conseguenza, gli errori umani sono ridotti al minimo.

Strumenti di gestione della configurazione come Ansible, Puppet, Terraform, solo per citarne alcuni, vengono tipicamente utilizzati per automatizzare i server. Questi strumenti configurano i server tramite l’automazione stabilendo procedure standard per i nuovi server ed eliminando i potenziali errori derivanti dalla configurazione manuale.

Ansible è un robusto progetto open-source. È flessibile, facile da usare e ha un’architettura estremamente semplificata. Non è richiesta alcuna competenza di programmazione per utilizzare i playbook di Ansible e non richiede l’installazione di software sui nodi. Soprattutto, è dotato di eccellenti funzionalità che consentono di scrivere script e ottimizzare l’automazione.

In questa guida, ti guideremo passo dopo passo nell’installazione e nella configurazione di LAMP su Ubuntu 20.04 con Ansible.

Prerequisiti

Per seguire questo tutorial, avrai bisogno di:

Qual è lo scopo del playbook Ansible?

Questo playbook Ansible è un modo alternativo per eseguire la procedura descritta nella nostra guida Configurazione dello stack LAMP Linux Apache MySQL PHP.

L’esecuzione del playbook Ansible comporterà le seguenti azioni sui tuoi host Ansible:

  • Installare aptitude, un’alternativa al gestore di pacchetti apt preferito da Ansible.

  • Installare tutti i pacchetti LAMP necessari.

  • Creare un nuovo VirtualHost di Apache e configurare una document root dedicata.

  • Impostare su ATTIVO il nuovo VirtualHost.

  • Impostare su DISATTIVO il sito web predefinito di Apache, ovvero impostare la variabile disable_default su true.

  • Scegliere una password per l’utente root di MySQL.

  • Rimuovere gli account MySQL anonimi e il database di test.

  • Configurare UFW per consentire il traffico HTTP sulla porta configurata, dove il valore predefinito è 80.

  • Configurare uno script PHP di test.

Al termine dell’esecuzione del playbook Ansible, vedrai un ambiente web PHP in esecuzione su Apache in base alle configurazioni impostate.

Utilizzo del playbook Ansible

Innanzitutto, ottieni il playbook LAMP e le sue dipendenze dal repository do-community/ansible-playbooks. Successivamente, clona il repository con il playbook LAMP in una cartella locale all’interno del nodo di controllo Ansible.

Esegui il comando git pull per assicurarti di avere accesso al contenuto corretto che utilizzeremo in questo tutorial:

Se stai utilizzando il repository do-community/ansible-playbooks per la prima volta, considera di clonare il repository nella tua cartella home:

Vai alla cartella lamp_ubuntu2004 e vedrai la struttura:

Ecco una panoramica del significato di questi file:

  • files/info.php.j2: Questo è un file modello (template) in cui puoi configurare una pagina di test PHP nella root del server web.

  • files/apache.conf.j2: Un altro file modello utilizzato per configurare il VirtualHost di Apache.

  • vars/default.yml: È un file di variabili per personalizzare le impostazioni del playbook.

  • playbook.yml: Questo file contiene tutti i contenuti delle attività (task) da eseguire sul/i server remoto/i.

  • readme.md: Un file di lettura contenente le informazioni su questo playbook.

Personalizziamo le configurazioni di MySQL e Apache apportando modifiche al file delle variabili del playbook. Naviga nella directory lamp_ubuntu2004 e apri il file vars/default.yml utilizzando l'editor nano:

All'apertura del file vars/default.yml, ci sarà un elenco di variabili che devono essere modificate:

Vediamo in dettaglio ciascuna delle variabili:

  • mysql_root_password: Memorizza la password per l'account MySQL root.

  • app_user: È un utente remoto non root sull'host Ansible che funge da proprietario dei file dell'applicazione.

  • http_host: Mostra il tuo nome di dominio.

  • http_conf: Mostra il nome del file di configurazione creato all'interno di Apache.

  • http_port: È la porta HTTP per questo host virtuale, e 80 è quella predefinita.

  • disable_default: Utilizzato per annullare le opzioni predefinite fornite con Apache.

Quindi, salva e chiudi il file vars/default.yml.

Una volta completata la configurazione, siamo pronti per eseguire questo playbook sui server. Per impostazione predefinita, la maggior parte dei server nei playbook è configurata per essere eseguita su ogni server negli inventari. Utilizziamo il flag -l per influire solo su un singolo server o su un sottoinsieme di gruppi selezionato interessato dal playbook. In alternativa, possiamo utilizzare il flag -u per ottenere una visualizzazione dettagliata di quale server remoto si sta connettendo ed eseguendo sugli host remoti.

Eseguiamo il playbook su un server server1 e connettiamolo con un utente come justin:

Otterrai un output simile a questo:

Una volta completata l'esecuzione del playbook, apri il browser web e accedi all'host del server. Non dimenticare di aggiungere /info.php alla fine dell'IP:

Cliccando su questo URL, vedrai una pagina come questa:

Attenzione: La pagina visualizzata contiene informazioni sensibili sul tuo ambiente PHP. Pertanto, si consiglia di rimuovere le informazioni personali dal server utilizzando il seguente comando:

rm -f /var/www/info.php

Cosa c'è nel Playbook?

Successivamente, cerchiamo di capire il significato e l'importanza dei file utilizzati nel ansible-playbook contenuto:

  • vars/default.yml

Il default.yml file di variabili contiene il nome di dominio e la password dell'account MySQL root . Questi sono i valori predefiniti utilizzati nei ansible-playbook task:

  • files/apache.conf.j2

Il apache.conf.j2 file è un Jinja 2 file di template utilizzato per configurare un nuovo VirtualHost Apache. Le variabili utilizzate all'interno di questo template devono essere definite nel vars/default.yml file di variabili:

  • files/info.php.j2

Simile a files/apache.conf.j2, il info.php.j2 file è anch'esso un template Jinja. Utilizziamo questo file per configurare uno script PHP di test nella document root di un server LAMP appena configurato:

  • playbook.yml

Il playbook.yml file è il luogo in cui sono definite tutte le attività di questa configurazione. In questo file vengono configurati tutti gli stack LAMP. Inizia con la definizione del gruppo di server di destinazione ed è impostato su all. Inoltre, accetta il become valore come true ( become: true), e definisce tutte le attività che devono essere eseguite. Successivamente, il yaml file ha il file predefinito, che è il vars/default.yml file di variabili, per caricare le opzioni di configurazione:

Puoi modificare questi file in base alle esigenze e ai requisiti del tuo progetto.

Conclusione

In questo tutorial, abbiamo esaminato i passaggi per installare e configurare LAMP su un server remoto con Ansible. Ci sono molte altre opzioni di personalizzazione con cui puoi sperimentare. Ad esempio, l'utilizzo della documentazione ufficiale di Ansible e l'utilizzo dei casi di mysql_user dal modulo Ansible è un ottimo modo per salire di livello. Inoltre, segui i passaggi descritti in questa guida per fare pratica con l'automazione utilizzando altri strumenti di gestione della configurazione e sistemi operativi per aumentare il livello di difficoltà.

Sei nuovo dello stack LAMP e vuoi approfondire questo argomento? Esplora i seguenti tutorial sul nostro blog:

Buon computing!

author

Hark Labs

Autore · CloudSigma

Preslav Dobrev è un designer creativo presso CloudSigma, con un focus su un'identità aziendale coerente attraverso l'uso di canali di marketing tradizionali e innovativi. È abile nel fondere la visione artistica con il marketing strategico per creare narrazioni di brand di grande impatto.

Commenti

Ancora nessun commento. Scrivi il primo.