概要
docker_container
というモジュールがありこれを使うと docker の制御することができます
今回はコンテナの起動など行ってみました
環境
クライアント
- macOS 10.13.5
- Ansible 2.5.5
ターゲットホスト
- Ubuntu 16.04
- docker 1.13.1, build 092cba3
レシピ作成
必要なファイルを作成していきます
site.yml
メインのレシピです
- hosts: all
roles:
- role: docker
production
インベントリファイルです
[all]
172.28.128.3
[all:vars]
ansible_user = root
ansible_ssh_pass = xxxxxx
ansible_connection = paramiko
対象のホストは Vagrant で作成した Ubuntu16 ですでに docker を apt でインストール済みです
nginx.yml
メインとなるレシピを作成します
mkdir -p roles/docker/tasks/
- vim roles/docker/tasks/main.yml
- include: zabbix.yml
- vim roles/docker/tasks/nginx/yml
- name: Run nginx
docker_container:
name: web
image: nginx:latest
ports:
- "81:80"
おそらく何を設定しているか予想できると思います
nginx コンテナを 80 番ポートで起動して 81 番ポートで EXPOSE しています
またコンテナの名前を web にしています
name
は必須パラメータになっています
実行
ansible-playbook -i production site.yml
パスワード等はすべてインベントリファイルに記載したので上記で実行できるはずです
動作確認としては curl でも叩いて見ましょう
curl 172.28.128.3:81
これで nginx のデフォルト画面が返ってくれば OK です
それ以外の動作
コンテナを停止する
- name: Stop
docker_container:
name: web
state: stopped
コンテナを削除する
- name: Remove
docker_container:
name: web
state: absent
最後に
Ansible から docker_container モジュールを使ってコンテナ制御をしてみました
当然ですがターゲットとなるホストには docker がインストールされている必要があります
Ansible の 2.4 から docker というモジュールが DEPRECATED
になりました
代わりに docker_container
と docker_image
というモジュールを使うようになったのでご注意ください
今回はコンテナ操作だけだったので docker_container
を使いました
最近だとコンテナスケジューラが充実しているので運用はそっちを使えばいいと思います
コンテナホストで初回のコンテナ起動などにこれを使う感じかなと思います
ドキュメントは以下で紹介している公式のドキュメントが一番参考になります
0 件のコメント:
コメントを投稿