GNU/Linux >> Linux の 問題 >  >> Panels >> Docker

Ansibleを使用してDockerにWordPressをデプロイする

概要

次の記事では、Ansibleを使用してDockerにWordPressをデプロイする方法について説明します。この手順の目的は、Ansibleプレイブックを使用してDockerでのWordPressのデプロイプロセスを自動化することです。

ansibleを使用してWordPressをDockerにデプロイするには、最初に構成する必要のある要件がいくつかあります(前提条件に以下にリストされています)

前提条件

  • Dockerがターゲットホストマシンにインストールされて実行されている(DockerのインストールはAnsibleで自動化することもできます– POSTへのリンク)
  • Ansiblehostsファイルに事前設定されたログインパラメータを使用してリモートホストでSSHアクセスを有効にする
  • Ansibleがクライアントマシン(お使いのマシン)にインストールされています
  • ターゲットマシンにAnsible用のPythonおよびPythondockerモジュールをインストールしました
  • ローカルマシンにPythonをインストールしました

Ansible用のPythonDockerモジュールをインストールする

ほとんどのLinuxディストリビューションにはPython3がプリインストールされていますが、他のディストリビューションでは、Ansibleが使用するPythonDockerモジュールが欠落している可能性があります。モジュールが見つからないか見つからないというエラーが表示された場合にわかります。以下のエラーの画像例:

上記のモジュールは、実際にはPythonがDockerと連携するために使用するDockerSDKです。 Python Dockerモジュールをインストールする最も簡単な方法は、「pip」ツールを使用することです。 「pip」ツールがない場合は、簡単にインストールしてから、PythonDockerモジュールをインストールできます。

Debian/Ubuntu

sudo apt install python3-pip

Fedora

sudo dnf install python3-pip

CentOS/RedHat

sudo yum python3-pip

pipをインストールしたら、コマンドを実行してdockermoduleをインストールします。

pip3 install docker

万が一、AnsibleでPythonモジュールが見つからないというエラーが発生した場合は、hostsファイルにpythonインタープリター変数を追加してください。ほとんどの場合、「/ usr / bin/python3」のいずれかにあります。 または「/usr/ lib /python3」

エラーは次のようになります:

hostsファイルのインタプリタ変数は次のようになります。

ansible_python_interpreter=/usr/bin/python3

ログインパラメータを使用してhostsファイルにhostsを書き留めます

最初のステップ– Ansibleがマシンに到達し、ログインして対話できるように、hostsファイルに必要なパラメーターを追加します。

sudo nano /etc/ansible/hosts

hostsファイルで、次のようなパラメータを追加します。

リモートホストに必要なパラメータを追加したら、ファイルを保存して終了します。

DockerにWordPressをデプロイするためのAnsibleプレイブック

この導入では、次のプレイブックを使用します。

---
- 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

コピーしてください。

プレイブックの内訳:

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)

Ansibleを使用してDockerにWordPressをデプロイする

Ansibleプレイブックを入手したら、プレイブックを実行します:

docker deploy-wordpress.yml -l docker

期待される結果:

コンテナが実行されているかどうか、およびブラウザからWordPressにアクセスできるかどうかを確認します。

概要

記事を要約すると、Ansibleを使用してDockerにWordPressを正常にデプロイでき、それによってDockerにWordPressをデプロイするプロセスが自動化されました。ただし、このプロセスを成功させるには、PythonおよびPythonDockerモジュールを使用してセットアップするためにAnsible環境が必要でした。その後、WordPressをデータベースとともにデプロイし、データとファイルがDockerコンテナー内に保存されないようにデータを永続化する、Ansibleプレイブックを作成して実行しました。

お時間をいただきありがとうございます…


Docker
  1. Dockerを使用してマイクロサービスをデプロイする方法

  2. ランチャーでアプリをデプロイする方法

  3. DockerComposeを使用するためのクイックガイド

  1. Ansibleを使用したマルチパス仮想マシン

  2. Dockerを使用してRedisでNextcloudをセットアップする

  3. UbuntuにDockerとWordPressをインストールする

  1. Ansibleを使用してDockerにWordPressをデプロイする

  2. Ansibleを使用してDockerにNextcloudをデプロイする

  3. Ansibleを使用してDockerをインストールする方法[Debian/Ubuntu]