Jump to section

Ansible の基本を学ぶ

URL をコピー

 

Red Hat Summit Connect に登録されましたか?

DevOps、エッジおよび自動化についての最新のトレンドをご紹介します。 Red Hat Summit Connect にぜひご参加ください。最先端のテクノロジーを取り入れ、将来に備えましょう。 

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

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

Ansible と Red Hat Ansible Automation Platform の違いは何ですか?

Ansible Basics: Automation Technical Overview

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

Red Hat Enterprise Linux Automation with Ansible 

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

モジュール
Ansible は、ノードに接続し、モジュールと呼ばれる小さなプログラムをこれらのノードにプッシュすることで機能します。モジュールは、Ansible で自動化タスクを実行するために使用されます。これらのプログラムは、システムの望ましい状態のリソースモデルとして記述されています。次に、Ansible はこれらのモジュールを実行して、終了時に削除します。

モジュールがない場合は、タスクを実行するためにアドホックコマンドとスクリプトを利用する必要があります。Ansible は Red Hat® Enterprise Linux®CentOSFedora、Ubuntu、Debian、その他多くのオペレーティングシステムにインストールできます。

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

エージェントレスの自動化
Ansible はエージェントレスです。つまり、Ansible が管理するノードにソフトウェアをインストールする必要がありません。Ansible は、管理するマシンに関する情報をインベントリーから読み取ります。Ansible にはデフォルトのインベントリーファイルがありますが、独自のインベントリーファイルを作成して、管理するサーバーを定義することができます。 

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

接続すると、Ansible はコマンドまたは Playbook に必要なモジュールをリモートマシンに転送して実行します。Ansible は人間が読める YAML テンプレートを使用するため、ユーザーは高度なプログラミング言語を習得しなくても、繰り返しタスクを自動的に実行するようにプログラミングすることができます。

Ansible を使用してアドホックコマンドを実行することもできます。これを行うには、コマンドを実行するか、コマンドラインから直接モジュールを呼び出す必要があります。Playbook は使用されません。これは 1 回限りのタスクでは問題ありませんが、より複雑なタスクの場合は Ansible Playbook を使用する必要があります。

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

play は、Ansible インベントリファイルからのホスト選択に対して実行する一連の順序付けられたタスクで構成されます。タスクは、play を構成し、Ansible モジュールを呼び出す部分です。play では、タスクは記述された順序で実行されます。

Ansible Lightspeed with IBM Watson Code Assistant を導入することにより、Ansible Playbook の構築がより身近で効率的になります。タスクリクエストは平易な英語で入力できます。Ansible Lightspeed は IBM watsonx 基盤モデルと対話して推奨するコード情報を生成し、これが Ansible Playbook を作成するために使用されます。

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

Ansible には、システムの状態を変更する前に Playbook とアドホックコマンドを検証できる「チェックモード」があります。このモードで Playbook を実行すると、実際に変更を加えることなく、Ansible が実行する処理を確認できます。Ansible のハンドラーは、システムに変更が加えられた後にのみ、特定のタスクを実行するために使用されます。タスクによってトリガーされ、Playbook 内の他のすべての play の最後に 1 回実行されます。

変数は Ansible のコンセプトで、Playbook の実行方法の変更を可能にします。変数は、パッケージのバージョンやファイルパスなど、システム間の違いを確認するために使用されます。Ansible を使用すると、さまざまなシステム間で Playbook を実行できます。Ansible 変数は、Playbook が実際に行っていることに関連して定義する必要があります。変数は、変数が相互にオーバーライドする順序を定義する、変数の優先順位に従います。Playbook に変数を含める際には、これを理解することが重要です。

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

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

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

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 を使用して、環境内にある影響を受けたシステムに対して同時かつ即座に修復を適用し、インシデントへの対応を迅速化できます。

セキュリティチームは、Ansible を使用して、インベントリー、Playbook、またはアクセス許可を共有する一連のジョブを構成し、調査または修正を完全に自動化できます。Red Hat Ansible Automation Platform は、サードパーティによる外部のログ集約サービスと統合されており、セキュリティチームが傾向を特定し、インフラストラクチャのイベントを分析し、異常を監視し、統合されていないイベントを相互に関連付けるのに役立ちます。

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

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

Red Hat サブスクリプションを使うことで、堅牢なパートナーエコシステムからの認定コンテンツ、ホストされた管理サービスへのアクセス、チームが組織全体で自動化を作成、管理、拡張するためのライフサイクル・テクニカルサポートを利用できます。また、数千ものお客様を支援することで蓄積された Red Hat の専門知識を活用できます。

組織に求められているのは、自動化を簡単に作成できることだけでなく、プロジェクトやチームの壁を越えて、適切なガバナンスと制御を維持しつつ自動化を共有および再利用できるようにすることです。適切な自動化ソリューションを導入すれば、新しいアプリケーションやサービスの迅速な導入、IT インフラストラクチャの効率的な管理、アプリケーション開発の生産性向上が可能になります。

関連資料

記事

Ansible の基本を学ぶ

Ansible は、プロビジョニング、構成管理などの IT プロセスを自動化します。主要な概念を含む Ansible の基本を確認できます。

記事

ビジネスプロセス管理とは

ビジネスプロセス管理 (BPM) とは、エンドツーエンドのビジネスプロセスをモデリング、分析、最適化して、戦略的な事業目標の達成を支援することです。

記事

Red Hat の自動化を選ぶ理由

Red Hat Ansible Automation Platform には、複数チームでの自動化の展開や企業全体での自動化の導入に必要なツールがすべて揃っています。

自動化の詳細はこちら

製品

Red Hat の戦略的アドバイザーが、企業組織の全体像を把握しながら課題を分析し、包括的かつコスト効率に優れたソリューションで課題を解決できるようお手伝いします。

エンタープライズ規模で自動化を実装するプラットフォーム。自動化導入のあらゆる段階に対応。

リソース

トレーニング

無料のトレーニングコース

Ansible Essentials: Simplicity in Automation Technical Overview

無料のトレーニングコース

Red Hat Ansible Automation for SAP