GNU/Linux >> Linux Esercitazione >  >> Panels >> Docker

Distribuisci Nextcloud su Docker utilizzando Ansible

Panoramica

In questo articolo esamineremo i passaggi su come distribuire Nextcloud su Docker utilizzando Ansible. Lo scopo di questa procedura è automatizzare il processo di distribuzione di Nextcloud su Docker con il playbook Ansible.

Per distribuire nextcloud su docker utilizzando ansible correttamente, ci sono prima alcuni requisiti da configurare (elencati di seguito nei prerequisiti)

Prerequisiti

  • Docker installato e in esecuzione sul computer host di destinazione (l'installazione di Docker può anche essere automatizzata con Ansible – collegamento al POST)
  • Accesso SSH abilitato sugli host remoti con i parametri di accesso preimpostati nel file Ansible hosts
  • Ansible installato sulla macchina client (la tua macchina)
  • Modulo Docker Python e Python installato per Ansible sul computer di destinazione
  • Installato Python sul tuo computer locale

Installa il modulo Docker Python per Ansible

La maggior parte delle distribuzioni Linux ha Python3 preinstallato, ma per altre potrebbe mancare il modulo Python Docker utilizzato da Ansible. Saprai che è se ricevi un errore che indica che il modulo è mancante o non trovato. Esempio di immagine dell'errore sotto:

Il modulo menzionato è in realtà l'SDK Docker che Python utilizza per lavorare con Docker. Il modo più semplice per installare il modulo Python Docker è con lo strumento "pip". Se manca lo strumento "pip", puoi installarlo facilmente e poi con esso installare il modulo docker python:

Debian/Ubuntusudo apt install python3-pipFedorasudo dnf install python3-pipCentOS/RedHatsudo yum python3-pip

Dopo aver installato il pip, esegui il comando per installare il modulo docker:

docker di installazione pip3

Se per caso riscontri un errore in Ansible che non riesce a trovare il modulo Python, aggiungi una variabile dell'interprete Python nel tuo file hosts. Nella maggior parte dei casi si trova in "/usr/bin/python3""/usr/lib/python3" .

L'errore è simile a questo:

La variabile interprete nel file hosts è simile a questa:

ansible_python_interpreter=/usr/bin/python3

Annota gli host nel file hosts con i parametri di accesso

Primo passo:aggiungere i parametri necessari nel file hosts in modo che Ansible possa raggiungere, accedere e interagire con la nostra macchina:

sudo nano /etc/ansible/hosts

Nel file hosts, aggiungi i parametri per assomigliare a questo:

Dopo aver aggiunto i parametri necessari per il nostro host remoto, salva il file ed esci.

Playbook Ansible per l'implementazione di Nextcloud su Docker

Per questa distribuzione, utilizzeremo il seguente playbook:

---- host:docker vars:db_volume:mariadb nextcloud:nextcloud task:- nome:Distribuisci server MariaDB docker_container:immagine:mariadb nome:mariadb volumi:- "{{db_volume}}:/var/lib/mysql " env:MYSQL_ROOT_PASSWORD:somerootpassword MYSQL_PASSWORD:somemysqlpassword MYSQL_DATABASE:db MYSQL_USER:mysqluser - nome:Deploy Nextcloud docker_container:image:nextcloud nome:nextcloud restart_policy:sempre porte:- "8080:80" link:- "{{db_volume}}:/ var/lib/mysql" volumi:- "{{nextcloud}}:/var/www/html" env:MYSQL_PASSWORD:somemysqlpassword MYSQL_DATABASE:db MYSQL_USER:mysqluser MYSQL_HOST:mariadb

Sentiti libero di copiarlo.

Ripartizione del Playbook:

host:finestra mobile // variabile per indirizzare solo gli host macchina che si trovano nel gruppo Docker
varianti: volume_db:mariadb  nextcloud:nextcloud  // [FACOLTATIVO]  variabili definite per ogni contenitore. Questi vengono utilizzati per impostare i volumi sull'host e corrispondono ai nomi dei contenitori.
attività://  Definita un'attività che distribuirà un contenitore MariaDB (server di database MariaDB in forma di contenitore). L'attività estrarrà l'immagine Docker ufficiale di MariaDB dall'hub Docker, imposterà un nome contenitore "mariadb" e imposterà un volume persistente sulla macchina host per l'archiviazione del database.- name:Deploy MariaDB server //  Nome attivitàdocker_container://  Funzione Docker che Ansible utilizzeràimmagine:mariadb //  Immagine Docker da tirare giùnome:mariadb //  Specifica il nome del contenitorevolumi:- "{{db_volume}}:/var/lib/mysql" //  Specificare un volume sulla macchina host per l'archiviazione persistente
ambiente://  Variabili d'ambiente per definire parametri per il database come password root, password utente admin, nome del database e nome utente del nuovo utente sul server MariaDBMYSQL_ROOT_PASSWORD:somerootpassword // Password root MySQL MYSQL_PASSWORD:somemysqlpassword //  Password amministratore MySQL/utente standard che deve essere utilizzata da NextcloudMYSQL_DATABASE:db //  Nome del database MySQLMYSQL_USER:mysqluser //  Nome utente amministratore/utente standard che Nextcloud può utilizzare
// Questa è l'attività che distribuirà il contenitore Nextcloud Docker. Come per il contenitore MariaDB, Ansible estrarrà l'immagine ufficiale Nextcloud dall'hub Docker. Qui abbiamo anche specificato la politica di riavvio del contenitore (quando riavviare il contenitore) e anche impostato il numero di porte da esporre sul contenitore e associare all'host, in modo che il contenitore possa essere accessibile tramite browser e protocollo http.- nome :Distribuisci Nextcloud //  Nome attivitàdocker_container://  Funzione Docker che Ansible utilizzeràimage:nextcloud //  Immagine Docker da tirare giùnome:nextcloud //  Specifica il nome del contenitorerestart_policy:sempre //  Imposta l'attributo per il riavvio del contenitoreporte:- "8080:80" //  Specifica le porte da esporre sul container affinché sia ​​accessibile tramite browser weblinks:- "{{db_volume}}:/var/lib/mysql //  Variabile per specificare il collegamento al server MySQL in modo che Nextcloud possa connettersi al databasevolumi:- "{{nextcloud}}:/var/www/html" //  Specificare un volume sulla macchina host per l'archiviazione persistente
// Variabili di ambiente per il database MariaDB, da utilizzare per Nextcloud per connettersi al database e utilizzare il database per l'archiviazione dei dati.env:MYSQL_PASSWORD:somemysqlpassword //  Variabile per specificare MySQL per Nextcloud da utilizzareMYSQL_DATABASE:db //  Nome del database MySQL che Nextcloud si connetterà a MYSQL_USER:mysqluser //  Utente MySQL per Nextcloud da utilizzareMYSQL_HOST:mariadb //  Server di database MySQL a cui connettersi (nome del contenitore della finestra mobile impostato in precedenza)

Distribuisci Nextcloud su Docker utilizzando Ansible

Ora che abbiamo il nostro playbook, ora possiamo eseguirlo:

ansible-playbook nextcloud-ansible -l docker

Risultato previsto e verifica se i contenitori sono distribuiti e in esecuzione:

Verifica se Nextcloud è accessibile tramite browser:

Piccola nota sul possibile problema con il database:

È possibile che venga visualizzato il seguente messaggio di errore nella pagina di configurazione finale durante il tentativo di creare un account per Nextcloud:

"InnoDB rifiuta di scrivere tabelle con ROW_FORMAT=COMPRESSED o KEY_BLOCK_SIZE"

Questo ha iniziato ad accadere su Nextcloud versione 21 e successive. In sostanza, Nextcloud non supporta la compressione InnoDB sui database. La soluzione alternativa è semplicemente disabilitare la compressione InnoDB e, per farlo, aggiungere la seguente configurazione nel file Ansible .yaml nella configurazione di MariaDB e rieseguire la distribuzione:

“comando:–transaction-isolation=READ-COMMITTED –binlog-format=ROW –innodb-file-per-table=1 –skip-innodb-read-only-compressed”

La configurazione completa di MariaDB dovrebbe assomigliare a questa:

Dopo aver eseguito nuovamente questa configurazione, il problema dovrebbe essere risolto.

Riepilogo

Per riassumere l'articolo, siamo riusciti a distribuire con successo Nextcloud su Docker utilizzando Ansible e con ciò abbiamo automatizzato il processo di distribuzione di Nextcloud su Docker. Sebbene l'ambiente Ansible fosse necessario per la configurazione con il modulo Python e Python Docker affinché questo processo avesse successo. Successivamente abbiamo scritto ed eseguito il playbook Ansible che distribuisce Nextcloud con il database e ha anche la persistenza dei dati in modo che i dati e i file non siano archiviati nel contenitore Docker.

Grazie per il tuo tempo...


Docker
  1. Macchine virtuali multipass utilizzando Ansible

  2. Configura Nextcloud con Redis usando Docker

  3. Distribuisci WordPress su Docker usando Ansible

  4. Come installare Docker usando Ansible [Debian/Ubuntu]

  5. Come installare WordPress utilizzando Docker

Come installare Ansible su Ubuntu 20.04

Come distribuire Pi-Hole su Debian 11

Installa Navidrome usando Docker

Come installare Gitea su Ubuntu usando Docker

Distribuire un'installazione di MariaDB di Production Docker

Utilizzo di Docker Desktop per gestire un container