Ansibleとは?構成管理ツールの概要から効果的利用方法を解説
thumb_zabbix_02
Ansibleとは?構成管理ツールの概要から効果的利用方法を解説
運用ツール
アンドエンジニア編集部
2021.11.25
この記事でわかること
Ansibleは代表的なオープンソースの構成管理ツールで、人気があります
YAMLを用いたPlaybookにより、プログラム知識なしに構成定義が可能です
大規模な自動化はAnsible TowerやOSS版AWXを併用して利用します

Ansibleとは?

Configuration Management

Ansibleとは、オープンソースの構成管理ツールを指します。わかりやすく言うと本来想定していたシステムの状態を決めておくと、自動的にその状態を維持してくれるツールです。

AnsibleはAnsible, Inc.によって開発されましたが、Red Hat社に買収されたことで、現在Red Hat社により提供されています。ITシステム自動化のツールとしてシステム構成管理やソフトウェアデプロイメント、ローリングアップデート等の処理を行うオーケストレーションツールとして利用します。

構成管理ツールの役割

構成管理ツールは、ITシステムのライフサイクルにおいて機能要件・性能要件等を満たすために必要とされる構成情報や、バージョン情報収集・管理するために利用します。

ツールではソフトウェア構成の変更を行う場合に必要とするシステム要件や全体構成への影響を考慮し、設定ファイルに従ったソフトウェア実行やインストール・デプロイを行います。構成管理の一連のタスク自動化のためにオーケストレーションを活用します。

高品質なシステム開発に欠かせない機能要件と非機能要件とは?
プロジェクトの成否を左右する非機能要件の一覧について詳しく解説!

Ansibleの概要と特徴

Ansibleの主要機能としては以下のものが挙げられます。 ・自動化CLIツール 対話型でも自動実行でもPlaybookが実行できます。Playbookとは構成管理のタスクを定義することです。定義されたタスクはPlaybookで記述した順にしたがい、管理対象ホストをあるべき状態に保全します。

YAMLを用いたPlaybook開発言語 汎用的なYAMLを用いておりメンテナンス性が高いことが特徴です。YAMLを用いたPlaybookの記載方法は後ほど説明します。

Ansibleコレクションを用いた機能拡張 要求に応じた機能拡張やクラウド連携が可能です。 参考:Ansible Core ドキュメント

他の構成管理ツールとの比較

他の構成管理ツールとして、PuppetChefが有名です。PuppetやChefでは構成管理を行うにあたりRubyの知識が必要なため、プログラミング知識が求められます。AnsibleYAMLですのでプログラミング知識は不要です。

Ansibleの強みはAgentが不要ということも挙げられます。つまり、必要な時に起動するだけで構成管理が可能です。PuppetやChefはAgentインストールが必要なため、Ansibleの方が簡単に構成管理できるメリットがあり、Agent実行が業務の妨げになるようなことはありません。

Ansible Towerとは

Ansible Towerとは、CLIベースの処理を可視化するツールです。管理対象ホストのジョブの稼働状況や結果、インベントリ―情報をグラフィカル表示することができます。ジョブのリアルタイムモニターも可能です。

Ansible TowerはさらにPlaybookのワークフロー編集や、セキュリティログ機能が搭載されています。リモート管理やセキュリティパッチなどのオペレーションを安全に実施することができ、スケーリング機能やREST APIを使った自動化に対応します。

Ansible TowerはRed Hat社の商用製品となっており、OSS版のAWXが別途提供されています。

Ansibleでできないことは?

Ansibleのメリットは、YAML形式簡単にタスクを記述できることです。YAML形式はキーバリュー形式なため、一意に処理がマップできるものは記述しやすい特徴があります。逆に言うと、条件に応じた分岐処理が多段であったり、その処理を反復して別の処理を実行したりする場合は、記述することが容易ではありません。

上記ケースでは、別途コマンドやツールを作成したり組み合わせたりする必要があります。また、高度な処理や自動化を行う場合はAnsible単体では難しいです。そのため、商用製品であるAnsible Towerを利用するかOSS版のAWXを併用することをおすすめします。 参考:AWX と Red Hat Ansible Tower の比較

Ansible入門

introduction

ここではAnsibleの基本動作を説明します。Ansibleを実行するためには、2種類のファイルを用います。1つはインベントリファイルで、管理対象となるホスト情報を記載したファイルです。もう1つはPlaybookファイルで管理対象ホストのあるべき状態を記載したものです。

管理対象ホストとAnsibleサーバは、sftpで通信を行います。Ansibleサーバは管理対象ホストに対し、Playbookファイルから生成したPythonコードを転送し実行します。このPythonコードでは、パッチ適用や設定変更および追加ミドルウェアのインストール・設定、ならびに情報収集を行いホスト環境を維持・保全します。

Pythonでできること・できないことは?活躍している分野を解説

Playbook入門

Playbookではテキスト可読性を高めたYAML形式を採用しています。"---"はセパレータで全体を括り、"- "で始まるリスト形式で記述します。記載方法はキーバリュー形式なため、key: valueの組み合わせで記述していきます。

hosts:でホスト名を指定し、remote_user:でアカウント名を指定します。続いて、tasks:で個々のタスクを指定します。個々のタスクはname:で名称を定義し、service:name:state:を記述します。Playbookの文法チェックはansible-lintコマンドで行います。構文の確認をする場合は、ansible-playbookコマンドで--syntax-checkフラグを指定します。

Playbookのサンプルは?

Playbookのサンプルは、ansible-examplesとしてgithubに登録されています。ベストプラクティスとして活用することができます。 参考:github ansible / ansible-examples

さらに、Ansible Galaxyではコミュニティで提供しているロールやPlaybook、モジュール・プラグインをダウンロードし活用することができます。 参考:Ansible GALAXY

Ansibleのパブリッククラウド利用方法

Ansibleパブリッククラウドでの利用も進んでいます。Ansibleパブリッククラウドガイドでは、以下のクラウドサービスのの連携方法が記載されています。 ・Alibaba Cloud コンピュートサービス ・Amazon Web Services ・CloudStack Cloud ・Google Cloud Platform ・Microsoft Azure ・Online.net ・Oracle Cloud Infrastructure ・Packet.net ・Rackspace Cloud ・Scaleway ・Vultr 参考:Ansible パブリッククラウドガイド

以下に3大クラウドサービスの連携方法をまとめておきます。 ・Amazon Web Services AWS EC2でのインスタンスプロビジョニングと解除に対応しています。Ansible PullやAnsible Towerによる自動スケーリングに対応可能です。 参考:Ansible Amazon Web Services ガイド

Microsoft Azure Ansible実行ホストに、Azure Resource Manager接続のためのAzure SDKモジュールをインストールします。Active Directoryのユーザー認証後、仮想マシンを作成します。 参考:Ansible Microsoft Azure ガイド

Google Cloud Platform Google Cloud Platform用Ansibleモジュール開発はAnsibleとGoogle社で共同で進めています。

そのためインスタンス作成、ネットワークアクセス制御、永続ディスク操作、 ロードバランサー管理等の一連のリソース管理がAnsibleでカバーされています。インベントリ―プラグインで Google Compute Engineインスタンスを検出し、Ainsibleインベントリで自動的に利用することができます。 参考:Ansible Google Cloud Platform ガイド

ITエンジニアなら知っておくべきAWS入門とAmazon EC2
クラウドエンジニアを目指す方必見!Azureを分かりやすく紹介!
GoogleのGCPについて知り、エンジニアのスキルに生かそう

AnsibleでPlaybookを用いて構成管理の工数を削減しましょう

improvement

Ansibleは、YAML形式でプログラム知識なしに管理対象ホストの構成管理を行うことができます。Ansible TowerやAWXを使うとさらにGUIベースでワークフローを作成し、自動実行することができます。AnsibleのPlaybookが理解できたら構成管理やパッチ導入に活用することをおすすめします。

Twitterをフォローしよう!
アンドエンジニアの公式LINEができました! ピッタリの記事や役立つ情報が届きます!

編集部オススメコンテンツ

eyecatch_visual_coder
Adobe製品を使わない"デザイナー"?「ビジュアルコーダー」が考える、自己満足で終わらないWebデザインとは
三角
2020.06.16

アンドエンジニアへの取材依頼、情報提供などはこちらから

お問い合わせ・情報提供
この記事をシェア
Twitter
Facebook
LINE
Hatena
アンドエンジニアの公式LINEができました! ピッタリの記事や役立つ情報が届きます!

編集部おすすめコンテンツ

アンドエンジニアへの取材依頼、情報提供などはこちらから