概要
docker_service
というモジュールを使うことで docker-compose.yml を制御することができます
環境
クライアント
- macOS 10.13.5
- Ansible 2.5.5
ターゲットホスト
- Ubuntu 16.04
- docker 1.13.1, build 092cba3
レシピ作成
必要なファイルを作成していきます
site.yml
実行メインです
- hosts: all
roles:
- role: git
- role: docker
production
インベントリファイルです
[all]
172.28.128.3
[all:vars]
ansible_user = root
ansible_ssh_pass = xxxxxxxxx
ansible_connection = paramiko
git
docker-compose をターゲットのサーバに配置します
今回は Github で公開されている docker-compose を使うので clone するレシピを作成します
ローカルからコピーなどしても OK です
- mkdir -p roles/git/tasks
- vim roles/git/tasks/main.yml
- include: zabbix.yml
- touch roles/git/tasks/zabbix.yml
- include: zabbix.ymlyoshi1:try_zabbix_docker kakakikikeke$ cat roles/git/tasks/zabbix.yml
- name: Clone
git:
repo: 'https://github.com/zabbix/zabbix-docker.git'
dest: /root/zabbix-docker
zabbix
今回は Zabbix の docker-compose を使ってみます
- mkdir -p roles/git/tasks
- vim roles/docker/tasks/main.yml
- include: zabbix.yml
- vim roles/docker/tasks/zabbix.yml
- name: Run zabbix
docker_service:
project_src: /root/zabbix-docker
files:
- docker-compose_v2_ubuntu_mysql_latest.yaml
state: present
git clone したディレクトリを project_src
で指定します
もし docker-compose.yaml or docker-compose.yml という名前のファイルがある場合は自動的にそれを読み込んで up してくれます
しかしファイル名が違う場合は明示的に指定する必要があります
そのために files パラメータを使って docker-compose の YAML ファイルを指定する必要があります
state は present と absent がありそれぞれ up と down に対応しています
動作確認
- ansible-playbook -i production site.yml
で実行できます
成功するとターゲットのホストに 9 つのコンテナが起動しているのが確認できると思います
- docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS
PORTS NAMES
452c148e3d8b zabbix/zabbix-proxy-mysql:ubuntu-3.4-latest "docker-entrypoint.sh" About a minute ago Up About a
minute 0.0.0.0:10071->10051/tcp zabbixdocker_zabbix-proxy-mysql_1
29646c521ab7 zabbix/zabbix-proxy-sqlite3:ubuntu-3.4-latest "docker-entrypoint.sh" About a minute ago Up About a
minute 0.0.0.0:10061->10051/tcp zabbixdocker_zabbix-proxy-sqlite3_1
b020130836c3 zabbix/zabbix-web-apache-mysql:ubuntu-3.4-latest "docker-entrypoint.sh" About a minute ago Up About a
minute 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp zabbixdocker_zabbix-web-apache-mysql_1
daedb397f768 zabbix/zabbix-agent:ubuntu-3.4-latest "docker-entrypoint.sh" About a minute ago Up About a
minute 0.0.0.0:10050->10050/tcp zabbixdocker_zabbix-agent_1
c610d76ee1ea zabbix/zabbix-web-nginx-mysql:ubuntu-3.4-latest "docker-entrypoint.sh" About a minute ago Up About a
minute 0.0.0.0:8081->80/tcp, 0.0.0.0:8443->443/tcp zabbixdocker_zabbix-web-nginx-mysql_1
585bb7622693 zabbix/zabbix-server-mysql:ubuntu-3.4-latest "docker-entrypoint.sh" About a minute ago Up About a
minute 0.0.0.0:10051->10051/tcp zabbixdocker_zabbix-server_1
f856fba5aac2 mysql:5.7 "docker-entrypoint..." About a minute ago Up About a
minute 3306/tcp zabbixdocker_mysql-server_1
89a7a3bdc46c zabbix/zabbix-snmptraps:ubuntu-3.4-latest "/usr/bin/supervis..." About a minute ago Up About a
minute 0.0.0.0:162->162/udp zabbixdocker_zabbix-snmptraps_1
8b5dafc3a00a zabbix/zabbix-java-gateway:ubuntu-3.4-latest "docker-entrypoint.sh" About a minute ago Up About a
minute 0.0.0.0:10052->10052/tcp zabbixdocker_zabbix-java-gateway_1
http://172.28.128.3
にアクセスすると Zabbix の画面が表示されます
Admin/zabbix でダッシュボードにログインすることができます
最後に
Ansible から docker-compose を使ってみました
今回は既存の docker-compose ファイルを使用しました
docker_service モジュールはレシピの YAML ファイルに直接 docker-compose の内容を記載することもできるようです
docker_service はまだ v3 には対応しておらず v2 形式の YAML ファイルを使用する必要があります
Ansible 経由で定義することで変数機能などを使うことができるのがメリットかなと思います
zabbix_server.conf
など主要な設定ファイルはホストでマウントしている感じではないのでコンテンからコピーするかコンテナのファイルを直接編集する必要があります
0 件のコメント:
コメントを投稿