LoginSignup
18
18

More than 5 years have passed since last update.

AnsibrestをDockerにのせてみた

Posted at

こんにちは。Ansible初心者エンジニアです。
最近仕事でもプライベートでもAnsibleに触れる機会が増えてきました。
そんな時 SAKURAインターネットさんのブログAnsibrest が紹介されているのを見て、
これは便利そうだ!ということで

試してみた

AnsibleでPlaybookを作成するときに、まずはlocalhostで試すことが多いと思います。
初心者な自分は思わず環境を破壊してしまうこともしばしば…
「それならDockerコンテナに閉じ込めてしまえば、何度でも初期化できて良いんじゃないか?」
と考えてDockerfile化してみました。

コンテナ起動

Dockerhub (およそ320MegaBytes)

# コンテナ側2400ポートをホスト側の12400ポートにひも付け
docker run -d -p 12400:2400 --name ansibrest panage/ansibrest:latest

ブラウザでアクセス

http://docker-machine-ip:12400/ へアクセス…
image
表示されました!

サンプルのPlaybookを実行

Playボタンを押すと…
image
実行できました!

APIにアクセス

# sample2.ymlを実行
curl -X POST "http://docker-machine-ip:12400/api/playbook/sample2.yml"

標準出力に…

{"stdout":"\n
PLAY [Sample 2 use roles] ******************************************************\n\n
TASK [setup] *******************************************************************\n
ok: [localhost]\n\n
TASK [sample2/1 : Playbook 2 Role 1 Task 1] ************************************\n
ok: [localhost] => {\n
    \"groups\": {\n
        \"all\": [\n
            \"localhost\", \n
            \"172.0.0.1\"\n
        ], \n
        \"development\": [\n
            \"172.0.0.1\"\n
        ], \n
        \"local\": [\n
            \"172.0.0.1\"\n
        ], \n
        \"ungrouped\": [\n
            \"localhost\"\n
        ]\n
    }\n
}\n\n
TASK [sample2/1 : Playbook 2 Role 1 Task 2] ************************************\n
ok: [localhost] => {\n
    \"inventory_hostname\": \"localhost\"\n
}\n\n
TASK [sample2/2 : Playbook 2 Role 2 Task 1] ************************************\n
ok: [localhost] => {\n
    \"groups\": {\n
        \"all\": [\n
            \"localhost\", \n
            \"172.0.0.1\"\n
        ], \n
        \"development\": [\n
            \"172.0.0.1\"\n
        ], \n
        \"local\": [\n
            \"172.0.0.1\"\n
        ], \n
        \"ungrouped\": [\n
            \"localhost\"\n
        ]\n
    }\n
}\n\n
PLAY [Sample 2 not use roles] **************************************************\n\n
TASK [setup] *******************************************************************\n
ok: [localhost]\n\n
TASK [debug] *******************************************************************\n
ok: [localhost] => {\n
    \"inventory_dir\": \"/usr/local/lib/node_modules/ansibrest/ansible/inventories\"\n
}\n\n
PLAY RECAP *********************************************************************\n
localhost                  : ok=6    changed=0    unreachable=0    failed=0   \n\n
","stderr":""}

出ました!

まとめ

Ansibleを使うことで何度でも同じ作業を間違いなく実施できます。
そこにAnsibrestが加わることで、ChatOpsにも取り込みやすくなりました。
さらにそれをDockerコンテナに閉じ込めることで、開発フェーズのテストを何度でも最初からやり直せるようになりました。
これからも、もっともっとAnsibleを使っていこうと思います。

18
18
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
18
18