LINEで送る
Pocket

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/

LINEで送る
Pocket

カテゴリー: AnsibleBlogDocker

adachin

1989年生まれのSRE。 ホスティングから大規模なアドテクなどのインフラエンジニアとして携わり、AnsibleやTerraformでのインフラコード化を推進。未経験によるエンジニアのメンターなども実施している。また、「脆弱性スキャナVuls」のOSS活動もしており、自称エバンジェリスト/技術広報/テクニカルサポート/コントリビュータでもある。現在はサービスの信頼性向上、可用性、レイテンシ、パフォーマンス、モニタリング、緊急対応、インフラコード化、リファクタリング、セキュリティ強化、新技術の検証、Docker開発環境の提供、AWSでのインフラ構築、Wordpressによるコーポレートサイトの修正、メンター、分析基盤の運用を担当している。

0件のコメント

コメントを残す

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