ログイン / 登録 アカウント
Jump to section

Ansible の基本を学ぶ

URL をコピー

Ansible は、プロビジョニング構成管理、アプリケーションのデプロイメント、オーケストレーション、その他多くの IT プロセスを自動化する、オープンソースの IT 自動化エンジンです。

ソフトウェアのインストール、日常的に行うタスクの自動化、インフラストラクチャのプロビジョニング、セキュリティとコンプライアンスの向上、システムへのパッチ適用、組織全体での自動化の共有に、Ansible 自動化を使用できます。

Ansible は、ノードに接続し、モジュールと呼ばれる小さなプログラムをノードにプッシュすることで機能します。モジュールは、Ansible で自動化タスクを実行するために使用されます。

これらのプログラムは、システムの望ましい状態のリソースモデルとして記述されています。次に、Ansible はこれらのモジュールを実行して、終了時に削除します。

モジュールがない場合は、タスクを実行するためにアドホックコマンドとスクリプトを利用する必要があります。 

Ansible はエージェントレスです。つまり、Ansible が管理するノードにソフトウェアをインストールする必要がありません。

Ansible は、管理するマシンに関する情報をインベントリから読み取ります。Ansible にはデフォルトのインベントリファイルがありますが、独自のインベントリファイルを作成して、Ansible で管理するサーバーを定義することができます。 

Ansible は、SSH プロトコルを使用してサーバーに接続し、タスクを実行します。デフォルトでは、Ansible は ssh-agent で SSH キーを使用し、現在のユーザー名を使用してリモートマシンに接続します。root ログインは必要ありません。任意のユーザーとしてログインしてから、su または sudo を使用して任意のユーザーとして実行できます。

SSH が安全な通信を確立する方法を読む

接続すると、Ansible はコマンドまたは Playbook に必要なモジュールをリモートマシンに転送して実行します。

Ansible は人間が読める YAML テンプレートを使用するため、ユーザーは高度なプログラミング言語を習得しなくても、繰り返しタスクを自動的に実行するようにプログラミングすることができます。

Ansible には、タスクの自動化に使用できる組み込みのモジュールが含まれています。または、ユーザーが独自のモジュールを作成することもできます。Ansible モジュールは、Ruby、Python、bash など、JSON を返すことができる任意の言語で記述できます。Windows 自動化モジュールは Powershell でも記述されています。 

Ansible を使用してアドホックコマンドを実行できます。これを行うには、コマンドを実行するか、コマンドラインから直接モジュールを呼び出す必要があります。Playbook は使用されません。 

これは 1 回限りのタスクでは問題ありませんが、より複雑なタスクの場合は Ansible Playbook を使用する必要があります。

Ansible Playbook は、IT プロセスをオーケストレーションするために使用されます。Playbook は、1 つ以上の play を含む YAML ファイルで、システムの望ましい状態を定義するために使用されます。これは、Ansible Playbook 内で使用できるスタンドアローンのスクリプトである Ansible モジュールとは異なります。 

play は、Ansible インベントリファイルからのホスト選択に対して実行する一連の順序付けられたタスクで構成されます。 

タスクは、play を構成し、Ansible モジュールを呼び出す部分です。play では、タスクは記述された順序で実行されます。  

Ansible を実行すると、システムの状態を追跡できます。Ansible がシステムをスキャンしてシステムの Playbook の記述を見つけ、実際のシステムの状態が一致しない場合、Ansible はシステムが Playbook と一致するために必要な変更を行います。 

Ansible には、システムの状態を変更する前に Playbook とアドホックコマンドを検証できる「チェックモード」があります。このモードで Playbook を実行すると、実際に変更を加えることなく、Ansible が実行する処理を確認できます。 

Ansible のハンドラーは、システムに変更が加えられた後にのみ、特定のタスクを実行するために使用されます。タスクによってトリガーされ、Playbook 内の他のすべての play の最後に 1 回実行されます。 

変数は Ansible のコンセプトで、Playbook の実行方法の変更を可能にします。変数は、パッケージのバージョンやファイルパスなど、システム間の違いを確認するために使用されます。Ansible を使用すると、さまざまなシステム間で Playbook を実行できます。 

Ansible 変数は、Playbook が実際に行っていることに関連して定義する必要があります。 

変数は、変数が相互にオーバーライドする順序を定義する、変数の優先順位に従います。Playbook に変数を含める際には、これを理解することが重要です。

Ansible を使用するときは、コレクションについても理解する必要があります。コレクションは、Playbook、ロール、モジュール、プラグインを含めた Ansible コンテンツの配布形式です。

Ansible ロール は、完全に自己完結型で、複雑なオーケストレーションを完了するために必要なタスク、変数、構成テンプレート、およびその他のサポートファイルとともに移動させることができる特別な種類の Playbook です。 

コレクション内には複数のロールを存在させることができるため、Automation HubAnsible Galaxy を介してコンテンツを簡単に共有できます。 

構成管理とは、コンピュータシステム、サーバー、ソフトウェアを、一貫性の取れた望ましい状態に保つプロセスのことを言います。これにより、時間の経過とともに変更が加えられても、システムが期待通りに動作させることができます。 

従来、この作業はシステム管理者が手動またはカスタムスクリプトで行ってきました。 

Ansible で新しいシステムを強化する 5 つの方法

Red Hat® Ansible® Automation Platform を構成管理ツールとして使用すると、システムの最新の状態を保存し、その状態の維持に役立てることができます。 

構成管理ツールを使うと変更やデプロイの迅速化と手動操作によるエラーの防止が図れるのに加え、システム管理が予測可能かつスケーラブルになります。

また、リソースの状態の追跡に役立つほか、同じパッケージを何度もインストールするなどの繰り返し作業が必要なくなります。 

Ansible によって自動化された構成管理は、重大な障害が発生した際の復旧にも役立ちます。サーバーがダウンしてその理由が不明な場合、別のサーバーをすばやくデプロイし、記録に沿って変更や更新を適用していくことで原因を突き止められます。 

インフラストラクチャはソフトウェアで定義されることが多く、仮想化コンテナによってプロビジョニングプロセスが高速化し、ハードウェアの頻繁なプロビジョニングと管理は必要ありません。

デプロイメントごとにプロビジョニングを手動で管理している場合、変更を追跡してバージョンを管理したり、エラーや不整合を回避したりするのは困難です。

インフラストラクチャ・プロビジョニングの自動化は、アプリケーションの運用ライフサイクルを自動化するための最初のステップです。 

Ansible は、環境の基盤となるインフラストラクチャ、仮想化されたホストとハイパーバイザー、ネットワークデバイス、ベアメタルサーバーのプロビジョニングに使用できます。また、サービスのインストール、コンピューティングホストの追加、クラウド内のリソース、サービス、およびアプリケーションのプロビジョニングも可能です。

Ansible Playbook を使用してインフラストラクチャの望ましい状態を記述し、Ansible にプロビジョニングさせることができます。Playbook を使用してインフラストラクチャをコード化することで、毎回同じ環境をプロビジョニングできます。 

デプロイの自動化とは、自動化されたプロセスを使用して、テスト環境と本番環境の間でソフトウェアを移行できるようになることです。このため、ソフトウェア配信サイクル全体で、繰り返し可能で信頼性の高いデプロイが可能になります。

デプロイの自動化は、DevOps 手法を適用し、CI/CD パイプラインを管理するために重要です。

開発チームによるアプリケーションのデプロイや環境の構成と、運用チームによるデプロイと構成の方法が異なる場合、デプロイの自動化は機能しません。 

環境を自動化するためには、一貫性が必要です。本番環境を含むすべての環境で同じデプロイメントプロセスを使用する必要があります。 

デプロイメント・パイプラインは通常、ビルド、テスト、デプロイという 3 つの主要なステップ (もっと多い場合もある) に従います。これは、デプロイメントプロセスの自動化をサポートし、コードがコミットからデプロイに迅速に移行できるようにするパイプラインです。

Ansible を使用すると、1 つの共通フレームワークから、多層アプリケーションをすべて、確実に、一貫してデプロイできます。必要なサービスを構成できるだけでなく、Playbook を使用してアプリケーション・アーティファクトをプッシュすることもできます。

一般に、自動化とは単一のタスクを自動化することを意味します。これがオーケストレーションと異なる点で、オーケストレーションは、複数の異種システムにまたがる多くのステップを含むプロセスやワークフローを自動化する方法です。 

クラウド・オーケストレーションを使用すると、サーバーのプロビジョニングやデプロイ、ストレージ容量の割り当て、仮想マシンの作成、ネットワーク管理など、さまざまなタスクを実行できます。クラウド・オーケストレーションに役立つオーケストレーション・ツールは多数存在します。Ansible は 1 つの選択肢です。

サーバーの設定や管理、およびアプリケーションのデプロイも、Ansible などのツールを使用してオーケストレーションできます。 

オーケストレーションについてわかりやすく説明する方法を学ぶ

アプリケーションのデプロイメントでは、フロントエンドとバックエンドのサービス、データベース、監視、ネットワーク、ストレージがあり、それぞれが果たすべき役割と、独自の設定とデプロイメントを備えています。オーケストレーションにより、各ステップは適切な方法で実行されます。

Ansible は、Playbook 内のタスクを記述された順序で実行することでオーケストレーションを可能にするため、アプリケーションのデプロイメントプロセスが正しい順序で実行されることがわかります。 

ネットワーク自動化はプログラム可能なロジックを使用して、ネットワークリソースとサービスを管理します。ネットワーク自動化により、ネットワーク運用 (NetOps) チームは、ユーザーが手動で実行するよりも迅速にネットワーク・インフラストラクチャとアプリケーションサービスを構成、スケーリング、保護、および統合できるようになります。

基盤技術が進歩しているのにもかかわらず、数十年の間、ネットワーク管理はほとんど変化していません。ネットワークは通常、手作業で構築、運用、保守されます。 

しかし、ネットワークの構成とアップデートを手動で行う従来の方法はかなりの時間を必要とするうえミスが発生しやすいため、急速に変化するワークロードの要件に効果的に対応することができません。 

ネットワークリソースとサービス管理を自動化すると、ネットワーク運用チームのアジリティと柔軟性が向上し、先進的なビジネス要求を効果的にサポートできるようになります。

セキュリティの自動化では、セキュリティのプロセス、アプリケーション、インフラストラクチャを統合するために、人間による作業を削減できる自動化テクノロジーを使ってタスクを実行します。

自動化は、日常業務の効率化だけでなく、プロセス、アプリケーション、インフラストラクチャに最初からセキュリティを統合するためにも役立ちます。セキュリティの自動化をフルにデプロイすることで、侵害の平均コストを 95% 削減することも可能です。

セキュリティプロセスに自動化を適用すると、手作業を行わずに脅威を速やかに特定、検証、エスカレートできます。 

セキュリティインシデントが発生した場合、セキュリティチームは Ansible を使用して、環境内にある影響を受けたシステムに対して同時かつ即座に修復を適用し、インシデントへの対応を迅速化できます。

IT セキュリティの自動化を開始する 3 つの方法

セキュリティチームは、Ansible を使用して、インベントリ、Playbook、またはアクセス許可を共有する一連のジョブを構成し、調査または修正を完全に自動化できます。

Red Hat Ansible Automation Platform は、サードパーティによる外部のログ集約サービスと統合されており、セキュリティチームが傾向を特定し、インフラストラクチャのイベントを分析し、異常を監視し、統合されていないイベントを相互に関連付けるのに役立ちます。

Red Hat Enterprise Linux Automation with Ansible 

このコースでは、Ansible Automation Platform を使用して Linux® のシステム管理タスクを自動化する方法を学びます。Ansible Automation Platform を使用してプロビジョニング、構成、アプリケーションのデプロイメント、およびオーケストレーションを自動化するために必要な技術を学びます。

Ansible Essentials: Simplicity in Automation Technical Overview

このオンデマンドのオンライン動画シリーズでは、Ansible による自動化と構成管理、プロビジョニング、デプロイ、およびクラウド、仮想、物理環境にわたるコンピュート・インフラストラクチャの管理について説明します。

マイクロソフトは、自動化テクノロジーによってサポートされる、チーム間の成功とコラボレーションの文化の構築に重点を置いています。

マイクロソフトは Red Hat コンサルティングと緊密に連携し、Red Hat Ansible Automation Platform を使用して標準化された中央集約型のネットワーク自動化環境を作り、日常的に生じる繰り返しタスクの削減と複雑さの軽減を実現するとともに、プロダクションコードの検証と再利用を可能にしました。 

DevOps 文化を確立することにより、マイクロソフトのすべてのチームが、知識の共有、スキルの構築、革新的なテクノロジー・ソリューションの創出に注力できるようになりました。

マイクロソフトの事例の詳細については、こちらの記事をご覧ください。

Red Hat はオープンソース・コミュニティとともに、自動化テクノロジーに貢献してきました。ビジネスと IT が安定して安全に動作するよう、Red Hat のエンジニアが、機能、信頼性、およびセキュリティの向上を支援しています。 

Red Hat Ansible Automation Platform には、Playbook、分析機能など、企業全体での自動化の導入に必要なツールがすべて揃っています。ビジュアル・ダッシュボードやロールベースのアクセス制御などにより IT インフラストラクチャを一元的に制御し、運用の複雑さを低減できます。

Red Hat Ansible Automation Platform には Automation Analytics も含まれており、運用チームは、Ansible Automation Platform を実行するさまざまなチームの使用状況、アップタイム、実行のパターンを分析できます。

Ansible Automation Hub は、Red Hat がサポートする事前構成済みの Ansible コンテンツや Ansible 認定パートナーのコンテンツを見つけたり理解を深めたりできるポータルで、ユーザーがより早く開始できるように支援します。

また、Red Hat Ansible Automation Platform は Forrester Research により 2020 年第 3 四半期の Forrester Wave™: Infrastructure Automation Platforms でリーダーに選出されています。

組織に求められているのは、自動化を簡単に作成できることだけでなく、プロジェクトやチームの壁を越えて、適切なガバナンスと制御を維持しつつ自動化を共有および再利用できるようにすることです。 

適切な自動化ソリューションを導入すれば、新しいアプリケーションやサービスの迅速な導入、IT インフラストラクチャの効率的な管理、アプリケーション開発の生産性向上が可能になります。

自動化に必要なプラットフォーム

Red Hat Ansible Automation Platform

大規模な IT 自動化を構築するためのシンプルなエージェントレス・プラットフォーム。ビジュアル・ダッシュボードやロールベースのアクセス制御などにより IT インフラストラクチャを一元的に制御できます。