Ansible Galaxy: 知っておくべきことすべて

公開: 2022-09-29

Ansible は、人気のあるオープンソースの構成管理ツールです。 一方、Ansible Galaxy は Ansible ロールのリポジトリです。

初心者のシステム管理者として、ほんの一握りの Playbook しか持っていないかもしれません。 自動化のスキルが向上し、Ansible に慣れてくると、すべてのベスト プラクティスを学ぶことができます。 Playbook を増やしていくと、Ansible Galaxy がいかに重要であるかにも気付くでしょう。

アンシブルギャラクシーとは?

Ansible Galaxy は、Ansible コンテンツ (主にロールとコレクション) 用の Web ベースのオープンソース オンライン リポジトリです。 それはまるで、何か新しいものを作成し、それを他の人と共有したいと思っているかのようです。

Ansible 自動化に問題がある場合、または自動化プロジェクトをすぐに開始するために他のパッケージ済みソリューションが必要な場合は、Ansible Galaxy が役立ちます。 たとえば、ロール、コレクション、モジュール、またはプラグインを持つことができます。 多くのコミュニティ メンバーが、Ansible コレクションとロールをすでにアップロードしています。

アンシブル-ギャラクシー-2

Galaxy または任意の git SCM からロールをインストールする、ロールを作成または削除する、Galaxy サイトでいくつかのタスクを実行するなどのタスクを実行するには、「ansible-galaxy」コマンドを使用できます。 このコマンドは Ansible にプリインストールされているため、Ansible のインストール後すぐに使用できます。

Galaxy プロジェクトは、社内の Galaxy サーバーをホストできるようにするオープンソース プロジェクトです。 内部 Galaxy サーバーを使用するには、Galaxy 内部サーバーのサーバー アドレスを使用してAnsible.cfgファイルのデフォルト構成を編集する必要があります。これは、デフォルトでサーバー アドレス galaxy.ansible.com が使用されるためです。

Ansible の概要

Ansible は、あらゆる規模のインフラストラクチャを自動化およびスケーリングする乗数として説明できます。 構成の管理、展開の調整、およびその他の機能に使用できます。 Ansible のセットアップは非常に簡単です。 Ansible を使用すると、初心者のシステム管理者でもわずか数時間でインフラストラクチャを自動化できます。

Ansible は、SSH プロトコルを使用して自動化します。 制御メカニズムは、SSH 接続を使用してターゲット ホスト (通常は Linux ホスト) と通信します。 Windows システム管理者は引き続き Ansible を使用して、SSH の代わりに WinRM を使用して Windows 環境を自動化できます。 コントロール マシンは引き続き Linux を実行する必要があります。

Ansible は、パッチ適用、更新、グループとユーザーの管理、プロビジョニング、およびその他の管理タスクなどの一般的な sysadmin タスクを実行できます。

Ansible は、現在最も広く使用されている構成管理、オーケストレーション、および展開ツールです。 そのシンプルさは、その主な強みの 1 つです。 シンプルで強力ですが、エージェントレスです。 これは、新規またはエントリーレベルのシステム管理者がわずか数時間でインフラストラクチャを自動化できることを意味します。 Ansible により、迅速なスケーリング、効率性、および機能横断が可能になります。

Ansible Galaxy での作業

次に、ターミナルを開き、Ansible Galaxy を使用していくつかのコマンドを実行しましょう。 ただし、その前に、最新の Ansible をシステムにインストールする必要があります。

システムに最新の Ansible をインストールしたら、ターミナルに ansible-galaxy と入力するだけで、Galaxy で利用可能なすべてのオプションを取得できます。

 ubuntu@ubuntu-VirtualBox:~$ ansible-galaxy 
ギャラクシー・アンシブル

まず、init コマンドから始めて、ロールを作成できます。 ここでは、ロール「testing」を作成しています。 ls コマンドを使用して、ロールが正常に作成されたかどうかを確認します。 init コマンドは、testing ロール ディレクトリ内に必要なファイルも作成します。

 ubuntu@ubuntu-VirtualBox:~$ ansible-galaxy init testing
ansible-galaxy-init

Ansible galaxy は、直接使用できる多くのロールがすでに作成されている大規模でアクティブなコミュニティです。

以下は、「galaxy.ansible.com」を閲覧したときに開くページです。これは、「Ansible Galaxy」Web サイトのホームページであると言えます。 ホームページから人気のあるカテゴリをクリックするか、[検索] ボタンをクリックしてさらにフィルタを取得し、詳細な検索を適用できます。

アンシブルギャラクシー

たとえば、MySQL サーバー ロールを探している場合は、それを検索してフィルター ボタンをクリックします。 geerlingguy のダウンロード数が最大になっていることがわかります。 このロールのインストールを試すことができます。 geerlingguy MySQL をクリックします。

ansible-galaxy-mysql

次に、 ansible-galaxyを使用してこのロールをインストールするためのインストール コマンドを取得します。

ansible-galaxy-install-mysql

上記のスナップショットに記載されているコマンドを実行して、マシンに MySQL サーバーの役割をダウンロードしてインストールします。

 ubuntu@ubuntu-VirtualBox:~$ ansible-galaxy install geerlingguy.mysql 
ansible-galaxy-install

特定の作成者によって検索する役割が既にわかっている場合は、以下に示すように検索コマンドを使用できます。

 ubuntu@ubuntu-VirtualBox:~$ ansible-galaxy search elasticsearch --author geerlingguy 
ansible-galaxy-search

一般的な Ansible Galaxy コマンド

ansible-galaxy コマンドは、galaxy.ansible.com を使用してロールとコレクションを管理します。 以下は、すべてのシステム管理者が時々使用する非常に役立つansible-galaxyコマンドです。

  • ansible-galaxy list:この galaxy コマンドは、インストールされているすべてのロールとそのバージョン番号のリストを表示します。
  • ansible-galaxy remove: この galaxy コマンドは、システムにインストールされている役割を削除します。
  • ansible-galaxy info:この galaxy コマンドは、Ansible Galaxy に関する詳細情報を提供します。
  • ansible-galaxy init :この galaxy コマンドを使用して、Ansible Galaxy への送信に適したロール テンプレートを作成できます。
  • ansible-galaxy import :この galaxy コマンドでは、Galaxy の公式 Web サイトからロールをインポートするためにログインが必要です。

上記のコマンド (init、import、install、remove) をansible-galaxy collection コマンドと共に使用して、Ansible galaxy を使用してコレクションを管理できます。

Ansible Galaxy のロールとコレクションについて説明します。

Ansible Galaxy でロールを作成する

Ansible Galaxy は基本的に、Ansible ロール用の大規模なパブリック リポジトリです。 役割には、使用法と変数を説明するREADMEsが付属しています。 Galaxy には、継続的に進化し、成長している多くの役割があります。

Galaxy は git を使用して GitHub などのロール ソースを追加できます。 Ansible Galaxy では、 ansible-galaxyコマンドを使用して Ansible ロールを作成できます。 Ansible-galaxy init を使用して新しい Galaxy ロールを初期化するか、 ansible-galaxy install <name of role>コマンドを使用してロールをインストールできます。

Playbook で使用する前に、ロールをダウンロードする必要があります。 それらがデフォルトのディレクトリー/etc/ansible/rolesに配置されると、ロールの例を見つけることができます。

Ansible Role の構造とその意義

以下は、ロールのインストール時に作成されるファイルとディレクトリです。

  • README.md は、役割を説明する Readme ファイルです。 readme ファイルには、入力パラメーターとサンプルymlに関するすべての詳細が含まれています。
  • タスク – すべてのタスクは、役割でタスクに登録できます。 Role のエントリ ポイントは Main.yml です。 ここから実行が始まります。 このファイルには、他のファイルを含めることができます。
  • ハンドラー – このカテゴリには、この役割または他の役割で使用できるハンドラーが含まれます。
  • defaults – ロールのデフォルト変数。
  • vars – Role のデフォルトよりも重要な変数。
  • ファイル – これらのファイルは、ロールを使用して展開できます。
  • テンプレート – このセクションには、役割を介して使用できるテンプレートが含まれています。
  • meta – メタデータを使用して、メタでロールを定義できます。 このファイルには、役割の依存関係も含まれている必要があります。
  • テスト – 実行する CI テスト。
  • ライブラリ – モジュールまたはプラグインをロールに埋め込む。 init コマンドでは作成されません。 このフォルダーに Python でカスタム モジュールを作成し、それをタスクで使用することもできます。

Ansible Galaxy でコレクションを作成する

Ansible Galaxy は、役割を管理するための最適なツールであり、長年にわたって使用されてきました。 ただし、Ansible Galaxy の新機能または変更が表示されます。 Ansible バージョン 2.2.8 には、コレクション機能が含まれるようになりました。

Ansible コンテンツは、コレクションを使用して配布できます。 それらは、プレイブックとロール、モジュール、およびプラグインのパッケージ化と配布に使用されます。

次の構造がコレクションの基礎です。

 コレクション/
├──ドキュメント/
├──galaxy.yml
├──プラグイン/
│ ├──
モジュール/
│ │ └── module1.py
│ ├──
在庫/
│ └── .../
├──README.md
├──役割/
│ ├──
役割1/
│ ├──
役割2/
│ └── .../
├──プレイブック/
│ ├──
ファイル/
│ ├──
変数/
│ ├──
テンプレート/
│ └── タスク/
└──テスト/

コレクション スケルトンの作成

コレクションをコンピューターにインストールするには、 ansible-galaxy コレクション インストール コマンドを使用できます。

特に、一部のサブコマンドは ansible galaxy でも使用できます。

  • init : 基本的なコレクション構造 basedAnsible のデフォルト テンプレートまたは独自のテンプレートを作成します
  • build : Galaxy または独自のリポジトリにアップロードできるコレクション アーティファクトを作成します。
  • publish : Galaxy はビルド コレクション アーティファクトを公開します
  • install : 1 つ以上のコレクションをインストールします

結論

Ansible Galaxy は、増え続けるロールブックを整理して考えるための優れた方法です。 Ansible Galaxy には、約 39,000 のコミュニティ作成者、30,000 のロール、および自動化プロジェクトを迅速に開始するために使用できる 1656 のコレクションがあります。 開発者ガイドと貢献者ガイドでは、オープンソース プロジェクトである既存の Ansible Galaxy コードに貢献する方法について説明しています。

Ansible で自動化できる Sysadmin タスクにも興味があるかもしれません。