構成管理ツールとしてAnsibleを選ぶべき理由

2016年3月1日(火)
平 初
話題の構成管理ツールAnsibleについて、注目を集める理由、類似のツールに対する優位性について解説します。

Ansibleは、多数のサーバーや複数のクラウドインフラを統一的に制御できる構成管理ツールです。構成管理ツールとして巷で人気のあるPuppetやChefなどの置き換えに利用できます。既に国内でも、大量の仮想サーバー環境を持つ大手金融機関や大規模製造業を中心に、多くのユーザー企業が使い始めています。この連載では、いま注目を浴びつつあるAnsibleについて、その特徴および魅力を紹介していきます。

Ansibleとは何か

Ansibleは構成管理ツールとして取り上げられることが多いのですが、大きく分けて3つの役割が統合されています。

  • デプロイメントツール
  • オーケストレーションツール
  • 構成管理ツール

Ansibleでは、PlaybookというYAML形式のテキストファイルに定型業務をタスクとして記述し、それをAnsibleに実行させることにより、様々な処理を実現できます。タスクはモジュールと呼ばれる処理プログラムと紐付いており、サーバーの構成管理だけではなく、ネットワークやロードバランサー、クラウドインフラに対する制御を行うこともできます。システムが稼働するインフラを含んだ全体を構築できる点が、Ansibleがオーケストレーションツールでもある理由です。また、サーバー上に任意のファイルをデプロイしたり、パッケージのインストールを行わせたりするデプロイメントツールとしての側面もあります。

Ansibleのアーキテクチャ

Ansibleのアーキテクチャ

Ansibleが注目されている理由

後発製品のため、従来の構成管理ツールの弱点を克服

一回しか実行しない単発の作業のためだけに手順を記述することなく、任意のコマンド、もしくは任意のモジュールをコマンドラインから呼び出すこともAnsibleでは可能です。これをアドホックコマンドと呼びます。

また、ファイルのアップロード/ダウンロードも行えるため、複数台の管理対象サーバーからのログ採取も可能です。

そして、従来の構成管理ツールで手順を記述する場合に求められたプログラミングの知識は不要です。というのもAnsibleでは、YAML形式のテキストファイルにて手順を列挙するだけで済むからです。

エージェントレスのアーキテクチャ

Ansibleの管理対象サーバーに、エージェントツールは不要です。必要なのは、Python 2.4以降がインストールされていることだけです。最近の主要なLinuxディストリビューションであれば、Pythonは大体インストールされていますので、追加でインストールする必要もありません。

したがって、管理対象サーバーのIPアドレスとSSHの認証情報が分かっていれば、一度もログインせずにAnsibleから利用し始めることができます。また、パスワード認証および公開鍵認証の両方に対応しています。

Ansibleモジュールによる拡張性の高さ

Ansibleには、管理対象サーバーやサービスごとに実に様々なモジュールが用意されています。サービスの起動・停止を行うモジュールから、iptablesのファイアウォールを設定するモジュール、AWSやAzure、OpenStackなどのクラウドインフラを制御するAnsibleモジュールも存在します。

またPlaybookの実行時のステータスなどを、IRCやSlackに通知するモジュールもあります。執筆時点では、拡張モジュールを含めると400種類を超えるAnsibleモジュールが提供されています。

Ansible List of All Modules

http://docs.ansible.com/ansible/list_of_all_modules.html

さらに、腕に自身があれば、BashやPythonなどの言語環境でAnsibleモジュールを書くことも可能です。

Ansibleに取り組むべき理由とメリット

PuppetやChef、そしてAnsibleなどの構成管理ツールを使うべき理由としては、以下のようなものが挙げられます。

  • 手動オペレーションによるタイムロスの削減
  • メンテナンス時におけるオペレーションミスの発生可能性の低減
  • 運用後における手順の変更が、作業手順書に反映されていないことによる作業漏れの撲滅
  • 直接ログインする機会を最小限にすることによるセキュリティの向上

Ansibleが備える類似の構成管理ツールに対する優位性

PuppetやChefなどと比べて、構成管理ツールとしてのAnsibleは何か特別なことができるか? と質問されることがあります。この質問に対する答えは「大体同じです」となります。それでは、Ansibleを選択する理由はどこにあるのでしょう?

PlaybookをYAML形式でシンプルに記述できる

ChefのCookbookはRubyの記法で書かれており、Rubyプログラミングの一種だと言えるでしょう。またPuppetのManifestは、Puppet独自の宣言型言語で記述されています。一方AnsibleのPlaybookは、一般的なYAML形式の記法で記述できます、YAML形式は様々な製品でよく使われているため、記述方法の学習コストが少ないと言えます。さらに開発チームと運用チームの両方から分かりやすい表記方法である点も、Dev&Opsを実現する上でとても重要です。

Ansible Playbookで実現するDev&Ops

Ansible Playbookで実現するDev&Ops

またYAMLの出力処理さえできば、Playbookを自動生成することも容易にできます。

リスト1:Playbookのサンプル

- hosts: webservers
  become: yes
  tasks:
  - name: check install httpd
    yum: name=httpd state=latest
  - name: check running and enabled httpd
    service: name=httpd state=running enabled=yes
  - name: configure firewalld TCP:80
    firewalld: port=80/tcp state=enabled permanent=true immediate=yes

Ansibleはスタンドアローンでも使える

ChefやPuppetと比べて、AnsibleはPush型で構成上シンプルなため、スモールスタートが可能です。クライアント・サーバー型の構成は、必須ではありません。リモートの管理対象サーバーだけではなく、ローカル環境もAnsibleの管理対象にすることができます。管理対象サーバーを増やしたい場合は、inventoryと呼ばれるサーバーのアドレス一覧に一行追記するだけです。もちろん、管理対象サーバー1台だけではなく、すべてに対して適用したり、グループ化された管理対象サーバーに対してのみ適用することも可能です。

リスト2:inventoryのサンプル

[database]
192.168.0.100
[webservers]
192.168.0.101
192.168.0.102
192.168.0.103

Ansibleは冪等性がある

AnsibleのPlaybookでは、対象リソースに対して「何を実行するのか」ではなく、「どういう状態があるべき姿なのか」を記述します。そのため、同じ処理を何回実行しても同じ結果になります。この性質を冪等性(べきとうせい)と呼びます。AnsibleのPlaybookには冪等性があり、この点は、FabricやCapistranoなどの構成管理ツールと比べた場合の優位性となります。

Ansibleの今後の展望

2015年にAnsible社は、Red Hatに買収されました。これにより、Red Hat Enterprise Linux環境におけるアプリケーションのデプロイやソフトウェアデリバリーの仕組みの迅速化、OpenStackのインストールの自動化、コンテナ導入の促進などの効果が期待されます。

またAnsibleは、分散ストレージのCephと同じようにオープンコア戦略を取っており、コアテクノロジーはオープンソース・ソフトウェアですが、Web UIを持つ管理システムのAnsible Towerはプロプラエタリ製品になっています。この点については、Cephの管理ツールのCeph Calamariのように、早期にオープンソース・ソフトウェア化する必要があると考えており、現在、Red Hatの社内で鋭意作業中です。

管理システムAnsible TowerのUI

管理システムAnsible TowerのUI

AnsibleはOpenStackや、OpenShiftなどのPaaS環境とも相性がよいソフトウェアなので、今後、Red Hatの多くの製品で使われていくことでしょう。

レッドハット株式会社

サービス事業統括本部 ソリューション・アーキテクト部
ソリューションアーキテクト&クラウドエバンジェリスト

商社系システムインテグレーター、外資系ハードウェアベンダーを経て、現在、レッドハット株式会社にてクラウドエバンジェリストとして活躍。2006年に仮想化友の会を結成し、日本における仮想化技術の普及推進に貢献した。

主な著書に「KVM徹底入門」(翔泳社)、「Xen徹底入門」(翔泳社)、「100人のプロが選んだソフトウェア開発の名著」(翔泳社)、「Red Hat Enterprise Linux 7がやってきた」(日経ITpro)がある。

連載バックナンバー

運用・管理技術解説
第10回

Ansible Towerのクラウド連携機能による効率化を目指す

2017/9/26
Ansible Towerが備えるクラウド連携機能を用いることで、Playbookやユーザーの管理を効率良く行えることを紹介する。
運用・管理技術解説
第9回

Ansible Towerによる権限の管理

2017/7/27
複数のユーザーによる使用を前提としたAnsible Towerでの権限管理の方法を紹介する。
運用・管理
第8回

Ansibleの機能を拡張するAnsible Tower

2017/4/18
好評の連載「注目の構成管理ツールAnsibleを徹底活用する」の追加コンテンツとして、Ansible Towerを取り上げる。

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています