GNU/Linux >> Znalost Linux >  >> Panels >> Docker

Nasaďte Nextcloud na Docker pomocí Ansible

Přehled

V tomto článku si projdeme kroky, jak nasadit Nextcloud na Docker pomocí Ansible. Účelem tohoto postupu je automatizovat proces nasazení Nextcloud na Docker pomocí příručky Ansible.

Aby bylo možné nasadit nextcloud na docker pomocí ansible úspěšně, musíte nejprve nakonfigurovat některé požadavky (uvedené níže v předpokladech)

Předpoklady

  • Docker nainstalován a spuštěn na cílovém hostitelském počítači (Instalaci Dockeru lze také automatizovat pomocí Ansible – odkaz na POST)
  • Přístup SSH povolen na vzdálených hostitelích s přihlašovacími parametry přednastavenými v souboru Ansible hosts
  • Ansible nainstalovaný na klientském počítači (váš počítač)
  • Nainstalovaný modul Python a Python docker pro Ansible na cílovém počítači
  • Na vašem místním počítači nainstalovaný Python

Nainstalujte modul Python Docker pro Ansible

Většina linuxových distribucí má Python3 předinstalovaný, ale u jiných může chybět modul Python Docker, který Ansible používá. Poznáte to, pokud se zobrazí chyba, že modul chybí nebo nebyl nalezen. Obrázek níže uvedené chyby:

Zmíněný modul je vlastně Docker SDK, který Python používá pro práci s Dockerem. Nejjednodušší způsob instalace modulu Python Docker je pomocí nástroje „pip“. Pokud nástroj „pip“ chybí, můžete snadno nainstalovat a poté s ním nainstalovat modul python docker:

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

Po instalaci modulu pip spusťte příkaz k instalaci modulu docker:

pip3 install docker

Pokud náhodou narazíte v Ansible na chybu, že nemůže najít modul Python, přidejte proměnnou interpretu pythonu do svého souboru hosts. Ve většině případů se nachází buď v „/usr/bin/python3“ nebo „/usr/lib/python3“ .

Chyba vypadá asi takto:

Proměnná interpret v souboru hosts vypadá asi takto:

ansible_python_interpreter=/usr/bin/python3

Zapište si hostitele do souboru hostitelů s parametry přihlášení

První krok – Přidání nezbytných parametrů do souboru hostitelů, aby se Ansible mohl dostat, přihlásit se a komunikovat s naším strojem:

sudo nano /etc/ansible/hosts

V souboru hosts přidejte parametry, aby vypadaly nějak takto:

Po přidání nezbytných parametrů pro našeho vzdáleného hostitele soubor uložte a ukončete.

Příručka Ansible pro nasazení Nextcloud na Docker

Pro toto nasazení budeme používat následující příručku:

---- hostitelé:docker vars:db_volume:mariadb nextcloud:nextcloud úkoly:- název:Nasazení serveru MariaDB docker_container:obrázek:název mariadb:svazky mariadb:- "{{db_volume}}:/var/lib/mysql " env:MYSQL_ROOT_PASSWORD:somerootpassword MYSQL_PASSWORD:somemysqlpassword MYSQL_DATABASE:db MYSQL_USER:mysqluser - name:Nasadit Nextcloud docker_container:image:nextcloud name:nextcloud restart_policy:8:vždy db/vol:- "}{080vols:- "}{080vols:- "} var/lib/mysql" volumes:- "{{nextcloud}}:/var/www/html" env:MYSQL_PASSWORD:somemysqlpassword MYSQL_DATABASE:db MYSQL_USER:mysqluser MYSQL_HOST:mariadb

Klidně si to zkopírujte.

Rozdělení příručky:

hostitelé:docker // proměnná pro cílení pouze na hostitele počítače, kteří jsou ve skupině dockerů
vars: db_volume:mariadb  nextcloud:nextcloud  // [VOLITELNÉ]  definované proměnné pro každý kontejner. Ty se používají k nastavení svazků na hostiteli a odpovídají názvům kontejnerů.
úkoly://  Definovala úlohu, která nasadí kontejner MariaDB (databázový server MariaDB ve formě kontejneru). Task stáhne oficiální Docker image MariaDB z centra Docker, nastaví název kontejneru „mariadb“ a na hostitelském počítači nastaví trvalý svazek pro úložiště databáze.- název:Nasazení serveru MariaDB //  Název úlohydocker_container://  Funkce Docker, kterou bude Ansible používatimage:mariadb //  Obrázek dockeru ke staženínázev:mariadb //  Zadejte název kontejneruvolume:- "{{db_volume}}:/var/lib/mysql" //  Zadejte svazek na hostitelském počítači pro trvalé úložiště
env://  Proměnné prostředí pro definování parametrů databáze, jako je heslo uživatele root, heslo uživatele správce, název databáze a uživatelské jméno nového uživatele na serveru MariaDBMYSQL_ROOT_PASSWORD:somerootpassword // heslo uživatele MySQL MYSQL_PASSWORD:somemysqlpassword //  Heslo správce MySQL/standardní uživatelské heslo, které bude používat NextcloudMYSQL_DATABASE:db //  Název databáze MySQLMYSQL_USER:mysqluser //  Uživatelské jméno správce / standardní uživatelské jméno pro Nextcloud, které má používat
// Toto je úloha, která nasadí kontejner Nextcloud Docker. Stejně jako u kontejneru MariaDB Ansible stáhne oficiální obraz Nextcloud z centra Docker. Zde jsme také specifikovali zásady restartování kontejneru (kdy restartovat kontejner) a také jsme nastavili počet portů, které se mají na kontejneru vystavit a navázat na hostitele, aby byl kontejner přístupný přes prohlížeč a protokol http.- název :Nasazení Nextcloud //  Název úlohydocker_container://  Funkce Docker, kterou Ansible použijeimage:nextcloud //  Obrázek dockeru ke staženínázev:nextcloud //  Zadejte název kontejnerurestart_policy:always //  Nastavit atribut pro restart kontejneruporty:- "8080:80" //  Zadejte porty, které se mají na kontejneru zobrazit, aby byly přístupné prostřednictvím odkazů webového prohlížeče:- "{{db_volume}}:/var/lib/mysql //  Proměnná k určení odkazu na server MySQL, aby se Nextcloud mohl připojit k databázivolumes:- "{{nextcloud}}:/var/www/html" //  Zadejte svazek na hostitelském počítači pro trvalé úložiště
// Proměnné prostředí pro databázi MariaDB, které má Nextcloud použít za účelem připojení k databázi a použití databáze pro ukládání dat.env:MYSQL_PASSWORD:somemysqlpassword //  Proměnná k určení MySQL pro použití NextcloudMYSQL_DATABASE:db //  Název databáze MySQL, který se Nextcloud připojí k MYSQL_USER:mysqluser //  Uživatel MySQL pro Nextcloud k použitíMYSQL_HOST:mariadb //  Databázový server MySQL, ke kterému se chcete připojit (název kontejneru dockeru, který jsme dříve nastavili)

Nasaďte Nextcloud na Docker pomocí Ansible

Nyní, když máme naši příručku, můžeme ji spustit:

ansible-playbook nextcloud-ansible -l docker

Očekávaný výsledek a kontrola, zda jsou kontejnery nasazeny a spuštěny:

Zkontrolujte, zda je Nextcloud přístupný prostřednictvím prohlížeče:

Malá poznámka k možnému problému s databází:

Při pokusu o vytvoření účtu pro Nextcloud se na stránce dokončení nastavení může zobrazit následující chyba:

„InnoDB odmítá zapisovat tabulky s ROW_FORMAT=COMPRESSED nebo KEY_BLOCK_SIZE“

To se začalo dít na Nextcloud verze 21 a novější. Nextcloud v podstatě nepodporuje kompresi InnoDB v databázích. Řešením je jednoduše zakázat kompresi InnoDB a provést to přidáním následující konfigurace do souboru Ansible .yaml v konfiguraci MariaDB a znovu spuštěním nasazení:

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

Úplná konfigurace MariaDB by měla vypadat takto:

tasks:- name:Deploy MariaDB server   docker_container:    image:mariadb     name:mariadb     command:--transaction-isolation=READ-COMMITTED --binlog-format=ROW --innodb-file-per-table=1 -- skip-innodb-read-only-compressed     svazky:      - "{{db_volume}}:/var/lib/mysql"     env:      MYSQL_ROOT_PASSWORD:somerootpassword       MYSQL_PASSWORD MYSQL MYSQL_PASSWORD USER:MYSQL MYSQL Myqlus presl. 

Po opětovném spuštění této konfigurace by měl být problém vyřešen.

Shrnutí

Abychom článek shrnuli – podařilo se nám úspěšně nasadit Nextcloud na Docker pomocí Ansible a tím jsme zautomatizovali proces nasazení Nextcloud na Docker. Aby byl tento proces úspěšný, bylo nutné prostředí Ansible nastavit pomocí modulu Python a Python Docker. Poté jsme napsali a spustili Ansible playbook, který nasazuje Nextcloud s databází a má také perzistenci dat, takže data a soubory nejsou uloženy v kontejneru Docker.

Děkuji za váš čas…


Docker
  1. Víceprůchodové virtuální stroje pomocí Ansible

  2. Nastavte Nextcloud s Redis pomocí Dockeru

  3. Nasaďte WordPress na Docker pomocí Ansible

  1. Jak nainstalovat Docker pomocí Ansible [Debian/Ubuntu]

  2. Jak nainstalovat WordPress pomocí Docker

  3. Jak nasadit aplikace s Rancherem

  1. Jak nasadit mikroslužby s Dockerem

  2. Rychlý průvodce používáním Docker Compose

  3. Proč všichni používají Docker?