Ansible+Docker Composeでマイクロサービス開発環境を自動構築する方法

マイクロサービス開発では、複数のサービスをコンテナで管理することが一般的です。しかし、環境構築を毎回手作業で行うと、時間がかかり設定ミスのリスクも高まります。そこで本記事では AnsibleDocker Compose を組み合わせて、マイクロサービス開発環境を自動構築する方法を解説します。


1. なぜAnsibleとDocker Composeを組み合わせるのか?

マイクロサービス環境では、複数のアプリケーション(APIサーバー、DB、キャッシュサーバーなど)を一括で立ち上げたい場面が多くあります。

  • Docker Compose
    複数のコンテナを定義・起動できる便利なツール。ただし、事前にDockerや設定ファイルを配置しておく必要があります。
  • Ansible
    インフラをコードで管理し、自動で環境を構築できるツール。複数サーバーに対して一括で操作が可能です。

この2つを組み合わせることで、以下が実現できます。

  • 開発環境をワンコマンドで再現可能
  • チーム全体で統一された環境を利用できる
  • 本番環境へのデプロイ準備が容易になる

2. 前提条件

  • Ansible がインストール済みの管理用マシン
  • Docker / Docker Compose をインストールしたい対象サーバー(例:Linuxサーバー)
  • SSH接続が可能な状態

3. ディレクトリ構成例

以下のような構成でプロジェクトを準備します。

project/
├── ansible/
│ ├── hosts
│ ├── site.yml
│ └── roles/
│ └── docker/
│ ├── tasks/main.yml
│ └── templates/docker-compose.yml.j2

4. Ansibleのインベントリ設定(hosts)

ansible/hosts

[web]
192.168.56.10 ansible_user=ubuntu ansible_ssh_private_key_file=~/.ssh/id_rsa

※対象サーバーのIPアドレスやユーザーを環境に合わせて修正してください。


5. Playbookの作成(site.yml)

ansible/site.yml

- hosts: web
  become: true
  roles:
    - docker

6. Dockerのインストールタスク

ansible/roles/docker/tasks/main.yml

- name: Install required packages
  apt:
    name: "{{ item }}"
    state: present
    update_cache: yes
  loop:
    - apt-transport-https
    - ca-certificates
    - curl
    - software-properties-common

- name: Add Docker GPG key
  apt_key:
    url: https://download.docker.com/linux/ubuntu/gpg
    state: present

- name: Add Docker repository
  apt_repository:
    repo: deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable
    state: present

- name: Install Docker
  apt:
    name: docker-ce
    state: present
    update_cache: yes

- name: Install Docker Compose
  get_url:
    url: https://github.com/docker/compose/releases/download/1.29.2/docker-compose-`uname -s`-`uname -m`
    dest: /usr/local/bin/docker-compose
    mode: '0755'

- name: Create project directory
  file:
    path: /opt/microservices
    state: directory

- name: Deploy docker-compose.yml
  template:
    src: docker-compose.yml.j2
    dest: /opt/microservices/docker-compose.yml

- name: Start services with Docker Compose
  command: docker-compose -f /opt/microservices/docker-compose.yml up -d
  args:
    chdir: /opt/microservices

7. Docker Composeテンプレート

ansible/roles/docker/templates/docker-compose.yml.j2

version: '3'
services:
  app:
    image: python:3.9
    volumes:
      - ./app:/usr/src/app
    working_dir: /usr/src/app
    command: python app.py
    ports:
      - "8000:8000"

  db:
    image: postgres:13
    environment:
      POSTGRES_USER: user
      POSTGRES_PASSWORD: password
      POSTGRES_DB: mydb
    ports:
      - "5432:5432"

8. 実行方法

管理用マシンで以下のコマンドを実行します。

cd ansible
ansible-playbook -i hosts site.yml

これで、対象サーバーにDocker・Docker Composeがインストールされ、マイクロサービス環境が自動的に立ち上がります。


9. まとめ

AnsibleとDocker Composeを組み合わせることで、マイクロサービス開発環境をワンコマンドで再現できるようになります。

  • Ansible で環境の自動構築
  • Docker Compose でサービス群の起動・停止を管理
  • チーム開発やCI/CDにも応用可能

効率的な開発環境を整えたい方は、ぜひ試してみてください。


👉 次回は、この仕組みを拡張して Ansibleで複数サーバーにマイクロサービスをデプロイする方法 も解説予定です。

タイトルとURLをコピーしました