第1回 Ansibleとは(1/2)

技術特集

第1回 Ansibleとは

Ansible

はじめに

昨今、カバーする業務領域の広がりや可用性の担保など様々な要因により、システムの規模は年々拡大し構成が複雑になっています。反面、短期間で大量の環境を構築、メンテナンスすることが求められるようになっています。

この状況に対応するには、インフラ構築の生産性を向上させることが必要ですが、合わせて品質の維持・向上を実現することも重要となります。

また、システムで使用する製品、ソフトウェアも増加しており、組み合わせも複雑になっているため、このような環境構築に対応していくためには、担当者に幅広い知識が必要となります。

しかしながら、人手に頼った作業でこのような状況に対応し、高速・高品質な構築を行うことは限界に達しており、これらの問題を解決するために、環境を簡単に取り扱える仕掛けや、自動化技術を取り入れることが主流となっています。

このような仕組み、仕掛けを実現するツールの中で、現時点で最も注目されているインフラ構築自動化ツールがAnsibleです。

Ansibleとは

AnsibleはSimple、Powerful、Agentlessという3つの特徴を掲げるPython製のインフラ構築自動化ツールです。先行製品として有名なPuppetやChef等で実現できることを踏襲しつつ、より利用しやすくなるよう改善されています。

ツール名 プログラミング知識 Agent 操作対象 構成管理用途
Puppet 要(Ruby+独自) Linux/Windows/Mac 不十分
Chef 要(Ruby) Linux/Windows/Mac 可能
Ansible 不要(YAML:データ定義) 不要 Linux/Windows/Mac
Rest操作可能な機器
不十分

Ansibleは、必要な時だけ起動すればよいツールである点で、サーバを構築して操作対象のAgentと連携できるように事前設定を行う必要があるChef等と比べて動作環境もシンプルとなります。

一方、構成管理のツールとして捉えた場合、次の点でChefに比べて劣ります。

  • 状況確認時に毎回Playbookの実行が必要
  • 可視化ツールが用意されていないため、作り込みが必要となる
  • Agentを使用していない為、手動で入れられた想定外ソフトウェアを検知できない

 Ansibleは構築のためのツールと割り切り、構成管理に関してはChef等別のソフトウェアを使用する事を推奨します。

Ansibleの3つの特徴

特徴 概要
Simple Playbookと呼ばれるファイルに環境構築に関する設定情報をYAMLにより定義します。
Powerful OSSコミュニティの活動が活発であり、日々開発がされている、様々な機器を操作するためのモジュールを使用することができます。
Agentless 構築対象となるサーバ、機器に対してAgentをインストールする必要がないため、余計な管理負荷、セキュリティリスクを負わなくて済みます。

インフラ構築プロセス

Ansibleを使用した場合、従来の作業プロセスと比較して工程が削減可能となり、「設計」・「Playbook作成」・「Ansible実行」という3つの工程で構築可能となります。

インフラ構築プロセス