AnsibleをRESTで操作できるようにする「Ansibrest」レビュー

ansirest-4

サーバ構成管理は何を使っているでしょうか。サーバにログインして一つ一つコマンドを打っても良いですが、何台も間違わずにセットアップするというのは至難の業です。そこで最近注目を集めているのがAnsibleになります。さくらのナレッジでも松島さんがエージェントレスでシンプルな構成管理ツール「Ansible」入門 – さくらのナレッジにて取り上げています。

Ansibleの基本的な操作は設定ファイルを編集して、コマンドを実行するという流れなのですが、より手軽に操作できるようにしてくれるのがAnsibrestというソフトウェアになります。その名の通り、RESTインタフェースを通じてAnsibleの実行を制御できるようになります。

Ansibrestのインストール

AnsibrestはNode.jsで作られていますので、npmコマンドを使ってインストールできます。

npm install ansibrest -g

ヘルプは次のようになります。

ansibrest -h

  Usage: ansibrest [options]

  Options:

    -h, --help                         output usage information
    -p,--port <PORT>                   PORT
    --endpoint <ENDPOINT>              ENDPOINT
    --ansible-path <ANSIBLE_PATH>      ANSIBLE_PATH
    --inventory-path <INVENTORY_PATH>  INVENTORY_PATH

基本的にはansible-pathとinventory-pathを指定して実行します。

Ansibrestの使い方

Ansibrestは基本的にAnsibleの設定フォルダを指定するだけです。例えば次のようなフォルダ構成があります。

ansible
├── group_vars
│   └── development.yml
├── inventories
│   └── development
├── roles
│   └── sample2
│       ├── 1
│       │   └── tasks
│       │       └── main.yml
│       └── 2
│           └── tasks
│               └── main.yml
├── sample1.retry
├── sample1.yml
└── sample2.yml

そして、実行時にパスを指定します。

ansibrest --ansible-path ./ansible --inventory-path inventories

Webブラウザでアクセスすると、Playbookが確認できます。

そしてPlayボタンを押せば、それぞれPlaybookが実行できます。

これだけのシンプルな機能です。さらにRESTインタフェースを備えていますので、Web APIとしてアクセスが可能です。

curl -X POST -d "host=samplehost001" -d "startAt=Some Task" "http://localhost:8080/api/playbook/sample1.yml"

Ansibrestの利点

Ansibrestの便利な点としては、サーバ構成を管理するマシンを立てておき、WebブラウザやWeb APIでアクセスができるということでしょう。開発者のマシンにAnsibleを入れる必要がなくなり、サーバ管理者個人の運用に任せなくとも良くなります。CIサーバと絡めて設定を自動化するといった利用法も考えられます。

Ansibleによって設定がコマンド一つで行えるようになっていますが、さらなる効率化のためには外部から操作できる自動化が必要になるはずです。Ansibrestはそんな要望に応えてくれるのではないでしょうか。

muddydixon/ansibrest: REST Server for Ansible