Ansible で Docker に LAMP環境を構築するハンズオンを作った

2020-01-12
linuxdockeransible
    

目次

概要

ansibleでdocker上にApache MariaDB PHP 環境を構築する方法を簡単に紹介します。

リポジトリ

利用するコードはこちらのリポジトリに登録しました。このリポジトリを例に説明します。

https://github.com/s-yoshiki/docker-ansible-handson

リポジトリ構成

docker-ansible-handson
├── README.md
├── docker-compose.yml   # docker構成
├── ansible
│   ├── Dockerfile
│   └── data   # ansible playbook を配置するディレクトリ
├── db
│   └── Dockerfile
└── web
    └── Dockerfile

Docker構成

今回利用するdocker-composeの構成がこちらです

version: '3'
services:
  ansible:
    container_name: ansible 
    build: ansible
    tty: true
    privileged: true
    working_dir: "/var/data"
    volumes:
      - ./ansible/data:/var/data  
    networks:
      - my-network1
  web-0:
    container_name: web
    build: web
    tty: true
    privileged: true
    ports:
      - 8080:80
      - 8443:443
    networks:
      - my-network1
    command: "/sbin/init"
  db-0:
    container_name: db
    build: db
    tty: true
    privileged: true
    networks:
      - my-network1
    command: "/sbin/init"

networks:
  my-network1:
  • ansibleコンテナ:ansibleを実行し各サーバのプロビジョニングを行う
  • web-0コンテナ:ベースはCentOS7。Apache PHPが設定されWebサーバとして振舞う
  • db-0コンテナ:ベースはCentOS7。MySQLサーバとして振舞う

Ansible role の構成

ansible の roll は playbook の内容を分割して定義する事で再利用性を高める事ができる機能です。構成は次のようにしました。

ansible/data
└── roles
    ├── apache2 # apacheの設定
    ├── common # 共通の設定
    ├── mariadb # mariadb基本設定
    ├── mariadb-cli # mariadb (cliのみ)
    ├── mariadb-user # mariadb (ユーザごと設定) 
    ├── php # phpの設定
    └── wordpress # WordPressの設定

プロビジョニングの実施

プロビジョニングはansibleコンテナにログインした上で、次のコマンドで行います。

docker-compose exec ansible /bin/bash # ansibleコンテナにログイン
ansible-playbook -i inventry.ini site-db.yml # dbサーバ プロビジョニング
ansible-playbook -i inventry.ini site-web.yml # webサーバ プロビジョニング
    
s-yoshiki
s-yoshiki
githubtwitterqiita
Web作ってますが、インタラクティブなプログラミングも好きです。
JavaScript / Vue / node.js / PHP / AWS / OpenCV

関連記事

ファイルの1行目を表示 Linuxコマンド head
head コマンド例 headコマンドでファイルの 1行目もしくは指定した行数だけ表示する方法。 head 利用できるオプション コマンド例 の 1行目だけを表示 の 5行目までを表示 カレントディレクトリ以下の全てのtxtファイルの1行目を表示

Amazon S3 と ローカルファイルのチェックサムの比較
s3apiでEtagを取得 検証 マルチアップロード時の注意点 Amazon S3 の Etagを使ってファイルの整合性チェックをする。 s3apiでEtagを取得 S3 APIを利用するとEtagを取得します。この値はmd5のハッシュ値になります。 検証 MD…

Macでも利用できるDBクライアント MySQL PostgreSQL Oracle など
デスクトップ系ツール TablePlus DBeaver MySQL Workbench Sequel pro Webアプリケーション phpMyAdmin Adminer 参考 Macで利用できるDB (MySQL PostgreSQL Oracle…

DockerでMySQL5.1.73を利用する。docker-composeから起動
Dockerのインストールから実行まで docker-compose から起動 詳細 Docker から MySQL 5.1.73 を利用する。 Dockerのインストールから実行まで docker imageの pull。 119MB…

phpMyAdminをDockerで起動する設定
docker-compose の設定 phpMyAdminのコンテナイメージ GitHub phpMyAdminはPHPで実装されているMySQLの管理ツールです。サーバに配置しブラウザから操作するのが特徴です。このphpMyAdminをdocker…

Proxy環境下でcurlを実行する
コマンドオプションで設定する 環境変数に設定する curlrc に記述する おまけ: curlのオプション Proxy (プロキシ) 環境下でcurl…

WordPressをAmazon S3 + CloudFront構成で月額200円で運用
システム全体の この構成のメリット・デメリット AWSの構成 静的ページを作成するWordPressプラグイン WP2Static WP Offload Media Lite WordPress on Docker環境 まとめ AmazonS…

docker-composeで起動したMySQLコンテナのmysqldumpを行うコマンド
環境 コマンド docker-composeで起動したMySQLコンテナに対して、mysqldumpを行いdumpデータを取得する方法の紹介 環境 macOS catalina コマンド

inotify-tools rsync unison を利用してディレクトリを同期する
環境・バージョン情報等 inotify-tools バージョン情報 インストール inotifywait + rsync で同期する inotifywait + unison で同期する unisonの設定 同期コマンド 参考 inotify-tools…

fswatch rsync unison を使ってリアルタイムで同期する
環境・バージョン情報等 fswatch バージョン情報 インストール fswatch + rsync で同期する fswatch + unison で同期する unisonの設定 同期コマンド 参考 fswatch + rsync or fswatch…

最新の投稿

SQL整形ツールを作成した
特徴 使い方 FW/ライブラリ等 nuxt sql-formatter-plus Monaco Editor おまけ ソース SQL整形ツールを作成しました。 URLはこちらです。 SQL…

ファイルの1行目を表示 Linuxコマンド head
head コマンド例 headコマンドでファイルの 1行目もしくは指定した行数だけ表示する方法。 head 利用できるオプション コマンド例 の 1行目だけを表示 の 5行目までを表示 カレントディレクトリ以下の全てのtxtファイルの1行目を表示

Amazon S3 と ローカルファイルのチェックサムの比較
s3apiでEtagを取得 検証 マルチアップロード時の注意点 Amazon S3 の Etagを使ってファイルの整合性チェックをする。 s3apiでEtagを取得 S3 APIを利用するとEtagを取得します。この値はmd5のハッシュ値になります。 検証 MD…

github.io / gitlab.ioで公開されている質の高い技術ドキュメント
AWSによるクラウド入門 Pythonプログラミング入門 普通の人が資産運用で99点をとる方法とその考え方 2018年の段階で私が知らないこと github.io / gitlab.io で無料で公開されている興味深いドキュメントのmemo AWS…

10進数から2進数 2進数から10進数への変換 JavaScript
10進数から2進数 2進数から10進数 テスト 10進数から2進数、2進数から10進数への変換を行うJavaScriptのコードの紹介。 JSの場合、10進数から2進数への変換はメソッド。2進数から1…

JavaScriptの配列ショートハンド (AtCoder用)

JavaScriptでワーシャルフロイド法を実装
AtCoder ABC012 D問題 D - バスと避けられない運命 解説 実装 AtCoder ABC012 の D問題でワーシャルフロイド法が利用できる問題が出てきたので、 JavaScriptで実装しました。 AtCoder ABC012 D問題 D…

GitHub Actions で Gatsby をビルドし Amazon S3 にデプロイする
GitHub Actions について あらかじめ準備しておくもの AWS IAM ユーザを環境変数にセットする workflowの記述 ビルド バッジを利用する 終わりに 参考にしたところ Gatsbyで作った静的サイトを、GitHub Actions…

cloudinaryによる画像ファイルの管理 はじめてみる
目的 cloudinary について 他のサービスとの比較 料金プラン アカウントの登録 利用してみる ダッシュボード 画像の編集 APIベースでのアクセス 感想 参考 画像の管理や配信、さらには加工といった事ができるsaas型のcloud…

JavaScriptによる2分探索(バイナリサーチ) のサンプルコード
2分探索について ソース 参考 JavaScriptで2分探索(バイナリサーチ)を実装してみました。…

Tags

Dates

© 2020   404 motivation not found