GNU/Linux >> Belajar Linux >  >> Panels >> Docker

Terapkan Nextcloud di Docker menggunakan Ansible

Ringkasan

Pada artikel ini kita akan membahas langkah-langkah cara menerapkan Nextcloud di Docker menggunakan Ansible. Tujuan prosedur ini adalah untuk mengotomatiskan proses penerapan Nextcloud di Docker dengan playbook Ansible.

Untuk menerapkan nextcloud di docker menggunakan ansible dengan sukses, ada beberapa persyaratan yang harus dikonfigurasi terlebih dahulu (tercantum di bawah dalam prasyarat)

Prasyarat

  • Docker diinstal dan dijalankan pada mesin host target (instalasi Docker juga dapat diotomatisasi dengan Ansible – tautan ke POST)
  • Akses SSH diaktifkan pada host jarak jauh dengan parameter login yang telah ditetapkan di file host Ansible
  • Dapat diinstal pada mesin klien (mesin Anda)
  • Modul buruh pelabuhan Python dan Python yang diinstal untuk Ansible pada mesin target
  • Menginstal Python di mesin lokal Anda

Instal modul Python Docker untuk Ansible

Sebagian besar distro Linux memiliki Python3 yang sudah diinstal sebelumnya tetapi untuk yang lain modul Python Docker yang digunakan Ansible mungkin tidak ada. Anda akan tahu bahwa itu jika Anda mendapatkan kesalahan yang menyebutkan bahwa modul tersebut hilang atau tidak ditemukan. Contoh gambar kesalahan di bawah ini:

Modul yang disebutkan sebenarnya adalah Docker SDK yang digunakan Python untuk bekerja dengan Docker. Cara termudah untuk menginstal modul Python Docker adalah dengan alat "pip". Jika alat "pip" tidak ada, Anda dapat dengan mudah menginstal dan kemudian menginstal modul python docker:

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

Setelah Anda menginstal pip, kemudian jalankan perintah untuk menginstal modul docker:

pip3 menginstal buruh pelabuhan

Jika kebetulan, Anda menemukan kesalahan di Ansible yang tidak dapat menemukan modul Python, tambahkan variabel juru bahasa python di file host Anda. Biasanya terletak di “/usr/bin/python3” atau “/usr/lib/python3” .

Kesalahan terlihat seperti ini:

Variabel interpreter dalam file host terlihat seperti ini:

ansible_python_interpreter=/usr/bin/python3

Tuliskan host di file hosts dengan parameter login

Langkah pertama – Menambahkan parameter yang diperlukan dalam file host sehingga Ansible dapat menjangkau, login, dan berinteraksi dengan mesin kita:

sudo nano /etc/ansible/hosts

Di file host, tambahkan parameter agar terlihat seperti ini:

Setelah parameter yang diperlukan untuk host jarak jauh kami ditambahkan, simpan file dan keluar.

Playbook yang memungkinkan untuk penerapan Nextcloud di Docker

Untuk penerapan ini, kami akan menggunakan pedoman berikut:

---- host:docker vars:db_volume:mariadb nextcloud:tugas nextcloud:- nama:Deploy server MariaDB docker_container:gambar:mariadb nama:mariadb volume:- "{{db_volume}}:/var/lib/mysql " env:MYSQL_ROOT_PASSWORD:somerootpassword MYSQL_PASSWORD:somemysqlpassword MYSQL_DATABASE:db MYSQL_USER:mysqluser - nama:Deploy Nextcloud docker_container:image:nextcloud name:nextcloud restart_policy:selalu port:- "8080:{80" link:- "} var/lib/mysql" volume:- "{{nextcloud}}:/var/www/html" env:MYSQL_PASSWORD:somemysqlpassword MYSQL_DATABASE:db MYSQL_USER:mysqluser MYSQL_HOST:mariadb

Silakan salin saja.

Rincian Playbook:

host:buruh pelabuhan // variabel untuk menargetkan hanya host mesin yang ada di grup buruh pelabuhan
vars: db_volume:mariadb  nextcloud:nextcloud  // [OPSIONAL]  variabel yang ditentukan untuk setiap wadah. Ini digunakan untuk mengatur volume pada host dan mencocokkan nama container.
tugas://  Mendefinisikan tugas yang akan menyebarkan wadah MariaDB (server database MariaDB dalam bentuk wadah). Task akan menarik image Docker resmi MariaDB dari hub Docker, menetapkan nama container name "mariadb" dan mengatur volume tetap pada mesin host untuk penyimpanan database.- name:Deploy MariaDB server //  Nama tugasdocker_container://  Fungsi buruh pelabuhan yang Ansible akan gunakanimage:mariadb //  Gambar buruh pelabuhan untuk ditarik ke bawahnama:mariadb //  Tentukan nama penampungvolume:- "{{db_volume}}:/var/lib/mysql" //  Tentukan volume pada mesin host untuk penyimpanan persisten
env://  Variabel lingkungan untuk menentukan parameter untuk database seperti kata sandi root, kata sandi pengguna admin, nama database dan nama pengguna pengguna baru di server MariaDBMYSQL_ROOT_PASSWORD:somerootpassword // kata sandi root MySQL MYSQL_PASSWORD:beberapamysqlpassword //  Admin MySQL/sandi pengguna standar yang akan digunakan oleh NextcloudMYSQL_DATABASE:db //  Nama database MySQLMYSQL_USER:mysqluser //  Nama pengguna admin/pengguna standar untuk digunakan Nextcloud
// Ini tugas yang akan menyebarkan wadah Docker Nextcloud. Sama seperti untuk wadah MariaDB, Ansible akan menarik gambar Nextcloud resmi dari hub Docker. Di sini kami juga menentukan kebijakan restart container (kapan memulai ulang container) dan juga mengatur jumlah port untuk diekspos pada container dan mengikat ke host, sehingga container dapat diakses melalui browser dan protokol http.- name :Terapkan Nextcloud //  Nama tugasdocker_container://  Fungsi Docker yang Ansible akan gunakanimage:nextcloud //  Gambar buruh pelabuhan untuk ditarik ke bawahnama:nextcloud //  Tentukan nama penampungrestart_policy:always //  Setel atribut untuk kontainer restartports:- "8080:80" //  Tentukan port yang akan ditampilkan pada wadah agar dapat diakses melalui browser weblink:- "{{db_volume}}:/var/lib/mysql //  Variabel untuk menentukan link ke server MySQL agar Nextcloud dapat terhubung ke databasevolume:- "{{nextcloud}}:/var/www/html" //  Tentukan volume pada mesin host untuk penyimpanan persisten
// Variabel lingkungan untuk database MariaDB, untuk digunakan Nextcloud agar terhubung ke database dan menggunakan database untuk penyimpanan data.env:MYSQL_PASSWORD:somemysqlpassword //  Variabel untuk menentukan MySQL untuk Nextcloud untuk digunakanMYSQL_DATABASE:db //  Nama database MySQL yang akan disambungkan Nextcloud ke MYSQL_USER:mysqluser //  Pengguna MySQL untuk Nextcloud menggunakanMYSQL_HOST:mariadb //  Server database MySQL untuk terhubung (nama wadah buruh pelabuhan yang telah kami tetapkan sebelumnya)

Terapkan Nextcloud di Docker menggunakan Ansible

Sekarang kami memiliki buku pedoman kami, kami sekarang dapat menjalankannya:

ansible-playbook nextcloud-ansible -l docker

Hasil yang diharapkan dan periksa apakah container di-deploy dan dijalankan:

Periksa apakah Nextcloud dapat diakses melalui browser:

Catatan kecil tentang kemungkinan masalah dengan database:

Anda mungkin mendapatkan kesalahan berikut pada halaman penyiapan akhir saat mencoba membuat akun untuk Nextcloud:

“InnoDB menolak untuk menulis tabel dengan ROW_FORMAT=COMPRESSED atau KEY_BLOCK_SIZE”

Ini mulai terjadi pada Nextcloud versi 21 dan yang lebih baru. Pada dasarnya, Nextcloud tidak mendukung kompresi InnoDB pada database. Solusi untuk ini adalah dengan menonaktifkan kompresi InnoDB dan untuk melakukannya, tambahkan konfigurasi berikut di file Ansible .yaml di konfigurasi MariaDB dan jalankan kembali penerapan:

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

Konfigurasi MariaDB lengkap akan terlihat seperti ini:

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     volumes:      - "{{db_volume}}:/var/lib/mysql"     env:      MYSQL_ROOT_PASSWORD:somerootpassword       MYSQL_PASSWORD:MYSQL_ USER_PASSWORD:MYSQL_ user MY_ 

Setelah Anda menjalankan konfigurasi ini lagi, masalahnya akan teratasi.

Ringkasan

Untuk meringkas artikel – kami berhasil menerapkan Nextcloud di Docker menggunakan Ansible dan dengan itu kami telah mengotomatiskan proses penerapan Nextcloud di Docker. Meskipun lingkungan Ansible diperlukan untuk setup dengan modul Python dan Python Docker agar proses ini berhasil. Setelah itu kami menulis dan menjalankan buku pedoman Ansible yang menyebarkan Nextcloud dengan database dan juga memiliki persistensi data sehingga data dan file tidak disimpan dalam wadah Docker.

Terima kasih atas waktunya…


Docker
  1. Mesin Virtual Multipass dengan menggunakan Ansible

  2. Cara Menyebarkan PostgreSQL sebagai Wadah Docker

  3. Cara Menginstal Docker di CentOS

  1. Siapkan Nextcloud dengan Redis menggunakan Docker

  2. Terapkan WordPress di Docker menggunakan Ansible

  3. Cara Menginstal Docker menggunakan Ansible [Debian/Ubuntu]

  1. Cara menginstal WordPress menggunakan Docker

  2. Cara Menyebarkan Layanan Mikro dengan Docker

  3. Cara Menyebarkan Aplikasi dengan Rancher