Ringkasan
Artikel berikut akan membahas langkah-langkah cara men-deploy WordPress di Docker menggunakan Ansible. Tujuan dari prosedur ini adalah untuk mengotomatiskan proses penyebaran WordPress di Docker dengan playbook Ansible.
Untuk men-deploy wordpress di docker menggunakan mungkin berhasil, ada beberapa persyaratan yang harus dikonfigurasi terlebih dahulu (tercantum di bawah dalam prasyarat)
Prasyarat
- Docker terinstal dan berjalan di mesin host target (Instalasi Docker juga dapat diotomatiskan dengan Ansible – link 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/Ubuntu sudo apt install python3-pip Fedora sudo dnf install python3-pip CentOS/RedHat sudo yum python3-pip
Setelah Anda menginstal pip, kemudian jalankan perintah untuk menginstal modul docker:
pip3 install docker
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 WordPress di Docker
Untuk penerapan ini, kami akan menggunakan pedoman berikut:
--- - hosts: docker vars: db_volume: mariadb wordpress: wordpress tasks: - name: Deploy MariaDB server docker_container: image: mariadb name: mariadb volumes: - "{{db_volume}}:/var/lib/mysql" env: MYSQL_ROOT_PASSWORD: somerootpassword MYSQL_PASSWORD: somemysqlpassword MYSQL_DATABASE: db MYSQL_USER: mysqluser - name: Deploy WordPress docker_container: image: wordpress name: wordpress restart_policy: always ports: - "8080:80" links: - "{{db_volume}}:/var/lib/mysql" volumes: - "{{wordpress}}:/var/www/html" env: MYSQL_PASSWORD: somemysqlpassword MYSQL_DATABASE: db MYSQL_USER: mysqluser MYSQL_HOST: mariadb
Silakan salin saja.
Rincian Playbook:
hosts: docker // variable to target only machine hosts that are in the docker group
vars: db_volume: mariadb wordpress: wordpress // [OPTIONAL] defined variables for each container. These are used for setting volumes on the host and are matching the container names.
tasks: // Defined a task which will deploy a MariaDB container(MariaDB database server in container form). Task will pull down the official Docker image of MariaDB from the Docker hub, set a name container name "mariadb" and set a persistent volume on the host machine for the database storage. - name: Deploy MariaDB server // Task name docker_container: // Docker function that Ansible will use image: mariadb // Docker image to pull down name: mariadb // Specify the container name volumes: - "{{db_volume}}:/var/lib/mysql" // Specify a volume on the host machine for persistent storage
env: // Environment variables to define parameters for the database such as the root password, admin user password, name of the database and the user name of the new user on the MariaDB server MYSQL_ROOT_PASSWORD: somerootpassword // MySQL root password MYSQL_PASSWORD: somemysqlpassword // MySQL admin/standard user password to be used by WordPress MYSQL_DATABASE: db // MySQL database name MYSQL_USER: mysqluser // Admin/standard user username for WordPress to use
// This the task that will deploy the WordPress Docker container. Same just like for the MariaDB container, Ansible will pull down the official WordPress image from the Docker hub. Here we also specified the container restart policy(when to restart the container) and also set number of ports to expose on the container and bind to the host, so that the container can be accessible via browser and http protocol. - name: Deploy WordPress // Task name docker_container: // Docker function that Ansible will use image: wordpress // Docker image to pull down name: wordpress // Specify the container name restart_policy: always // Set attribute for container restart ports: - "8080:80" // Specify ports to expose on the container to be accessible via web browser links: - "{{db_volume}}:/var/lib/mysql // Variable to specify the link to the MySQL server so that WordPress can connect to the database volumes: - "{{wordpress}}:/var/www/html" // Specify a volume on the host machine for persistent storage
// Environment variables for the MariaDB database, for WordPress to use in order to connect to the database and use the database for data storage. env: MYSQL_PASSWORD: somemysqlpassword // Variable to specify MySQL for WordPress to use MYSQL_DATABASE: db // MySQL database name which will WordPress connect to MYSQL_USER: mysqluser // MySQL user for WordPress to use MYSQL_HOST: mariadb // MySQL database server to connect to(docker container name we previously set)
Terapkan WordPress di Docker menggunakan Ansible
Setelah kami memiliki buku pedoman Ansible, jalankan buku pedoman:
docker deploy-wordpress.yml -l docker
Hasil yang diharapkan:
Periksa apakah container berjalan dan WordPress dapat diakses melalui browser:
Ringkasan
Untuk meringkas artikel – kami berhasil menerapkan WordPress di Docker menggunakan Ansible dan dengan itu kami telah mengotomatiskan proses penerapan WordPress di Docker. Meskipun lingkungan Ansible diperlukan untuk mengatur dengan modul Python dan Python Docker agar proses ini berhasil. Setelah itu kami menulis dan menjalankan playbook Ansible yang menyebarkan WordPress dengan database dan juga memiliki persistensi data sehingga data dan file tidak disimpan dalam wadah Docker.
Terima kasih atas waktunya…