Ansible 概要
~その特徴とインストールの手順~

Ansible

こんにちは。我々は、CTCでOpenStack関連の構築・運用などを行っているチームです。
今回は、我々がOpenStackの構築・運用でも多用しているAnsibleについて、その特徴についてのご説明と、簡単なインストールと動作確認をしてみます。
そして今後は、Ansible, OpenStack を中心としてよりアドバンスドな内容を盛り込んで掲載していきたいと考えています。

 

Ansibleとは

Ansible は Linux/Windows向けの構成管理ツールの一つです。
Michael Dehaanさん(注1)がオープンソース・ソフトウェアとして作成し、構成管理ツールの第一ツールとして評価を得てきました。
最近は、GUIフロントエンドのAnsible Towerリリース, Playbookの共有レポジトリAnsible Galaxyの導入、2015年10月にRedHatによる買収、2016年1月にはメジャーバージョンであるAnsible 2.0がリリースされるなど、着実に進化を遂げています。

注1: この方はLinux向けプロビジョニングツール”Cobbler”の作者でもあります。

 

Ansibleの特長

Ansibleは、SSHで対象マシンにログインし、pythonモジュールをコピーして実行させる仕組みです。
そのため、対象マシンにエージェントをインストールしておく必要はなく、非常に簡単にセットアップができます。(Ansible Workstationから対象マシンにSSHログインできるようにしておくだけ)

他にも、冪等性の確保、200以上のモジュール、読みやすいYAMLで記述できるなど、先達の構成管理ツールを超える特徴を持っています。これから初めて構成管理ツールを習い始める人であれば、現状のツールの中で Ansible が一番のオススメです。

 

Ansibleでカバーしないほうが良いもの

一方、Ansibleに限らずですが、構成管理ツールでカバーしきれないところもあります。
これらの作業はAnsible以外のツールで設定しておく方が、簡単で確実なことが多いです。

  1. Ansible接続しているNIC設定は変更しないこと
    Ansible は、タスクごとにpython モジュールを対象マシンにコピーして実行し、その結果を解析しています。
    そのため、playbook実行中はできるだけ接続が切れないようにしておくのが定石です。
    具体的には、Ansible 接続に使用するNICの設定は変更しないようにするのがベターです。
  2. HDDパーティションなどハードウェアのプロビジョニング
    滅多に構成変更が入らない部分なので、Ansibleでカバーすることは考えないほうが良いです。
    fdisk用モジュールが提供されてないことからも、需要はあまりないようです。
    物理マシンのプロビジョニングならCobblerを、クラウドならCloudFormationやHeatを使って「ハコ」を用意し、OS/MW層のセットアップからAnsibleにバトンタッチするのが確実です。
  3. 設定内容の確認(Test)
    設定後の確認フェーズを考えると、Ansibleよりもほかツールを導入した方が良いようです。
    Ansible でも確認用Playbookを作る方法がありますが、コマンドラインベースの記述になり、簡単モジュールを使うAnsibleの特長が活かしきれていません。
    テスト対象によって、Serverspec, Test Kitchen, Seleniumなどを使用するのが確実です。

 

インストール

本稿では、CentOS7を想定して、Ansibleをインストールします。
2016年2月現在、Fedoraのepel-7レポジトリにはAnsible 1.9.4が用意されています。
今回は、最新の2.x系をインストールするためにpipを使用します。

 

動作確認1

インストールが完了したら以下のコマンドで確認します。
バージョンが出力されれば成功です。

 


動作確認2

他のLinuxマシンに対してAnsibleを実行してみます。ここでは、ad-hoc コマンドという単一タスクを実行する方法でAnsibleを実行します。

1. まず、以下のようにansibleの設定ファイル(ansible.cfg)とインベントリファイル(hosts)を用意

これらのファイルではAnsibleのSSH接続先とその方法を定義しています。
上記サンプルでは、hostsファイルに保存したサーバリストに対して、rootユーザとしてSSH接続し、その際、passwordを聞くようにしています。

 

2.実行

上記の例では、インベントリファイルで定義した「test_hosts」グループのマシン群に対して、「setup」モジュールを実行しています。
「setup」は対象マシンの各種情報を取得し、後のタスクで変数として利用可能にするモジュールです。詳細は下記のリンクを参照してください。

 

まとめ

Ansibleは非常にパワフルで、習熟の簡単な構成管理ツールです。
また、スケールにも優れているため、クラウド環境のようなスケールを前提とするマシンの設定に非常に役立ちます。
今回はad-hocコマンドという簡単な使い方をしましたが、次回からはPlaybookを使って、さらに大規模な構成にも使える方法にも触れたいと思います。

 

参照

 

著者

後藤 僚哉: 元vSphereエンジニア。OpenStackには2年半ほど関わっています。

Pocket

コメント

「DevOps」のイベント・セミナー

開催
DevOps時代のテクノロジー