Adachinですっ!

そういえばansibleのテストで、毎回vagrantを使っていたんですが、

どうせなら検証環境はdockerのコンテナで自動的にコンテナが立ち上がって勝手にパッケージインストールして….

みたいなことをしたいと思い、いろいろ調べたところ。。

ansible 2.0からDocker Connection Pluginという、

Docker Remote APIを利用したコンテナのプロビジョニングが可能となったので、

一通りやってみました。


■そもそもDocker Connection Pluginってなに

通常sshを使って対象となるホストにansibleが接続するんですが、
Connection Pluginを使うことで、接続方式を切り替えることができるようになったそうです。
以前はlost connectionを使用したり、sshdをインストールして設定する必要がなくなったので、
非常に便利になりました。(その以前を使っていないからなんとも言えないw)
Ansible実行環境からDockerホストへRemote APIを実行できる環境であれば、
Dockerコンテナでsshdを起動しておく必要がない!


■環境


■ローカルでansibleインストール

Macにansible最新バージョンをgithubからもらってきましょう。

・確認


■Dockerホスト環境設定

・確認


■ansibleイベントファイル作成

※/etc/ansible or /usr/local/etc/ansible/
にhostsをコピーして上げてください。ansibleディレクトリがない場合は作りましょう。他にも新しいコンテナもプロビジョニングしたい場合も追記しましょう。(ansibleのplaybookが見に行かないので)


■Dockerホストに接続できるか確認

その前に・・・DockerホストにPythonが入っていないのでインストールします。

・Pythonのインストール

・これで接続確認

※pythonがインストールできない場合

そもそもtce-load -wi pythonしたときにtinycorelinux.netからダウンロードしているのですが、
結構な頻度で落ちている場合があります。他にもやり方があるので、以下にまとめます。

・スクリプトの作成

・実行

これで問題なし。


■ansible Playbookの作成とDocker Connection Pluginを使ってプロビジョニング

テストとしてテストコンテナが自動で立ち上がり、かつapacheもインストールして起動するかやってみました。

・実行

・ちゃんとコンテナが立ち上がっているか確認

・ブラウザで確認

http://192.168.99.100:8080/

apacheが立ち上がっていればOK


■まとめ

Dockerを使ってansibleのテストが可能になったので満足!
docker本番運営の場合でもDockerfile使わなくてもansibleで問題なさそうですね。
でも、docker attachができない・・・openssh-serverいれてdockerホストからsshすれば問題ないけど!
docker execコマンドでも入れたわ!

参考:http://tdoc.info/blog/2015/12/03/docker_connection_plugin.html
http://dev.classmethod.jp/server-side/os/ansible-docker-connection-plugin/

The following two tabs change content below.

あだちん

1989年生まれ。 ランサーズ/SRE。 ホスティングから大規模なアドテクなどのインフラエンジニアとして携わり、ランサーズにてサーバ系のお仕事も副業で行い、他社インフラレスポンス改善、ansibleでのインフラコード化を推進し、未経験によるエンジニア勉強会なども実施している。 そして「脆弱性スキャナVuls」のOSS活動もしており、自称エバンジェリスト/広報/VulsRepo init file,chatwork通知のコントリビュータでもある。 現在はDocker開発環境の提供,AWSで新サービスのインフラ構築,PHPバージョンアップ,分析基盤を担当しておりDigdag,embulk,BigQueryを使いこなそうと奮闘中。

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください