R&Dセンター 技術開発部 次世代技術課 ITスペシャリスト 宇野 陽一朗

Ansible“大解説”~ Ansibleでラクラク環境構築 ~

第1回 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つの工程で構築可能となります。

Ansible実行イメージ

AnsibleはPlaybookの記載内容に従い、PythonやPowerShellのスクリプトを生成します。その後、SSHやWinRM等を使用して構築対象サーバにスクリプトを送って実行します。そして、実行後スクリプトを削除して終了します。このため、構築対象のサーバには影響を与えずに実行することができます。

Ansibleにより得られる効果

Ansibleを使用することにより、以下のような効果が期待できます。
• 【生産性】
自動的に構築作業が行われるため、人間が手作業で実施した場合に必要となる手順書確認や入力等の待ち時間がなくなります。また、複数の環境を構築する場合の並行作業も可能となるため、同じ時間でより多くの環境構築が可能となります。

• 【属人性】
Playbookで定義した設定内容はチームの共有資産としてメンバー全員で管理することができます。一度Playbookを作成してしまえば、再利用により誰でも何度でも同一の環境を構築できます。また、内容を変更したい場合も既成のPlaybookを加工利用することができ、属人性を極力排除することができます。

設定の検証作業に関してもPlaybookで管理する事が出来るため知識、スキルが無くても実施する事が可能となります。

• 【品質】
前述の通り、コンピュータにより処理自動的に構築作業が実行されるため、人間の介入によるオペレーションミスがなくなります 。また、繰り返し使用/試験されているPlaybookを利用するため品質が担保されます。

Ansibleの使いどころ

AnsibleはLinuxやWindowsのサーバだけでなく、クラウド上の環境(AWSやAzure、GCP)やコンテナ上の環境、ネットワーク機器に対しても利用可能です。1ミドルウェア/1設定変更のような小規模な利用方法であっても有効活用できます。

また、サーバ/サービスの起動停止や情報収集、セキュリティパッチ適用等の定型的な運用作業においても利用可能です。人手による作業に比べて早く、品質が高くなるだけでなく、運用担当者にログインさせない事によるセキュリティリスクの低減も図る事ができます。

Ansibleのラインナップ

元々OSSのGUIツールとして開発が行われてきましたが、そのエンジン部分が完成した際にCUIツールとしてリリースされました(Ansible)。2015年にRed Hat社に買収され、同社の保守サポートを有する商用版も提供されています。その後、2017年にGUIツールが完成しOSS版(AWX)、商用版(Ansible Tower)共に公開されたため、現在は4種類の選択肢(下表)があります。

OSS版で新規機能の開発、不具合解消を行った後に商用版が更新されるという流れとなっているので、OSS版は実験的な位置付けとなり、本番環境は商用版を導入することを推奨します。


AnsibleTower、AWXはAnsibleのWebGUIツールで、権限管理や監査機能、ワークフロー等、CUIツールのAnsibleにはない機能が補完されています。
• 権限管理&監査機能
どのユーザに、どこまでの権限を与えるか制御が可能(AD/LDAPとの連携可能)。

また、ログから何が誰によって実施されたかの確認を行うことが可能です。


• ワークフロー機能
複数のPlaybookを、成否に応じて順番に実行する構築手法をとることが可能です。

おわりに

今回は、Ansibleの特徴を始めとした概要を中心に説明しました。

次回からは実際にPlaybookの作成方法などAnsibleを用いた環境構築に関して紹介いたします。

1

2 3 4 5
PAGE TOP