Ansible は、人気のあるオープンソース構成管理ツールです。一方、Ansible Galaxy は Ansible ロールのリポジトリです。
初心者のシステム管理者は、プレイブックを数個しか持っていないかもしれません。自動化スキルが向上し、Ansible に慣れるにつれて、すべてのベスト プラクティスを学ぶことができます。 Playbook を増やすと、Ansible Galaxy がいかに重要であるかにも気づくでしょう。
Ansible Galaxy とは何ですか?
Ansible Galaxy は、 Ansible コンテンツ (主にロールとコレクション) の Web ベースのオープンソース オンライン リポジトリです。それはあたかも何か新しいものを作成し、それを他の人と共有したいかのようです。
Ansible 自動化に問題がある場合、または自動化プロジェクトをすぐに開始するために他社の事前にパッケージ化されたソリューションが必要な場合は、Ansible Galaxy が役立ちます。たとえば、ロール、コレクション、モジュール、プラグインなどを含めることができます。多くのコミュニティメンバーがすでに Ansible コレクションとロールをアップロードしています。
Galaxy または任意の git SCM からのロールのインストール、ロールの作成または削除、Galaxy サイトでの一部のタスクの実行などのタスクを実行するには、
ansible-galaxy
コマンドを使用できます。このコマンドは Ansible にプリインストールされているため、Ansible のインストール後すぐに使用できます。
Galaxy プロジェクトは、社内の Galaxy サーバーをホストできるオープンソース プロジェクトです。内部 Galaxy サーバーを使用するには、デフォルトでサーバー アドレス
galaxy.ansible.com
が使用されるため、Galaxy 内部サーバーのサーバー アドレスを使用して
Ansible.cfg
ファイル内のデフォルト構成を編集する必要があります。
Ansible の概要
Ansible は、あらゆる規模のインフラストラクチャを自動化および拡張する乗算器として説明できます。これは、構成の管理、展開の調整、およびその他の機能に使用できます。 Ansible はセットアップが非常に簡単です。 Ansible を使用すると、初心者のシステム管理者でもわずか数時間でインフラストラクチャを自動化できます。
Ansible は SSH プロトコルを使用して自動化します。制御メカニズムは、SSH 接続を使用してターゲット ホスト (通常は Linux ホスト) と通信します。 Windows システム管理者は引き続き Ansible を使用して、SSH の代わりに WinRM を使用して Windows 環境を自動化できます。制御マシンでも Linux を実行する必要があります。
Ansible は、パッチ適用、更新、グループとユーザーの管理、プロビジョニング、その他の管理タスクなどの一般的なシステム管理タスクを実行できます。
Ansible は、現在最も広く使用されており、人気のある構成管理、オーケストレーション、およびデプロイメント ツールです。そのシンプルさが主な強みの 1 つです。シンプルかつ強力でありながら、エージェントレスです。これは、新人または初心者レベルのシステム管理者がわずか数時間でインフラストラクチャを自動化できることを意味します。 Ansible では、迅速なスケーリング、効率性、機能横断性が可能になります。
Ansible Galaxy での作業
次に、ターミナルを開いて、Ansible Galaxy を使用していくつかのコマンドを実行してみましょう。ただし、その前に、最新の Ansible をシステムにインストールしておく必要があります。
システムに最新の Ansible がインストールされている場合は、ターミナルに
ansible-galaxy
と入力するだけで、Galaxy で使用できるすべてのオプションが表示されます。
ubuntu@ubuntu-VirtualBox:~$ ansible-galaxy

まず、init コマンドを使用してロールを作成します。ここでは「testing」ロールを作成しています。
ls
コマンドを使用して、ロールが正常に作成されたかどうかを確認します。
init
コマンドは、テスト ロール ディレクトリ内に必要なファイルも作成します。
ubuntu@ubuntu-VirtualBox:~$ ansible-galaxy init testing

Ansible galaxy は、直接使用できる多くのロールがすでに作成されている大規模でアクティブなコミュニティです。
以下は、「 galaxy.ansible.com 」を閲覧すると開くページ、または「Ansible Galaxy」Web サイトのホームページであると言えます。ホームページから人気のカテゴリをクリックするか、「検索」ボタンをクリックしてさらにフィルタを取得し、詳細な検索を適用できます。

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

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

上記のスナップショットで説明されているコマンドを実行して、MySQL サーバーの役割をマシンにダウンロードしてインストールします。
ubuntu@ubuntu-VirtualBox:~$ ansible-galaxy install geerlingguy.mysql

特定の作成者によってどのロールを検索するかがすでにわかっている場合は、以下に示すように検索コマンドを使用できます。
ubuntu@ubuntu-VirtualBox:~$ ansible-galaxy search elasticsearch --author geerlingguy

一般的な 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 のロール構造とその重要性
以下は、役割のインストール時に作成されるファイルとディレクトリです。
-
README.md は、役割を説明する Readme ファイルです。 Readme ファイルには、入力パラメータとサンプル
yml
に関するすべての詳細が含まれています。 - タスク – すべてのタスクは、タスクのロールによって参加させることができます。ロールのエントリ ポイントは Main.yml です。ここから実行が始まります。このファイルには他のファイルを含めることができます。
- ハンドラー – このカテゴリには、このロールまたは他のロールで使用されるハンドラーが含まれます。
- defaults – ロールのデフォルト変数。
- vars – ロールのデフォルトよりも重要な変数。
- ファイル – これらのファイルは、ロールを使用してデプロイできます。
- テンプレート – このセクションには、役割を介して使用できるテンプレートが含まれています。
- meta – メタデータを使用して、meta 内のロールを定義できます。このファイルには、ロールの依存関係も含める必要があります。
- テスト – 実行する CI テスト。
- library – ロールへのモジュールまたはプラグインの埋め込み。 init コマンドによって作成されたものではありません。このフォルダーに Python でカスタム モジュールを作成し、それをタスクで使用することもできます。
Ansible Galaxy でコレクションを作成する
Ansible Galaxy はロールを管理するための最良のツールであり、長年にわたって使用されています。ただし、Ansible Galaxy には新しい機能や変更が見られます。 Ansible バージョン 2.2.8 には、コレクション機能が含まれるようになりました。
Ansible コンテンツはコレクションを使用して配布できます。これらは、Playbook、ロール、モジュール、プラグインのパッケージ化と配布に使用されます。
次の構造はコレクションの基礎です。
collection/
├── docs/
├── galaxy.yml
├── plugins/
│ ├──
modules/
│ │ └── module1.py
│ ├──
inventory/
│ └── .../
├── README.md
├── roles/
│ ├──
role1/
│ ├──
role2/
│ └── .../
├── playbooks/
│ ├──
files/
│ ├──
vars/
│ ├──
templates/
│ └── tasks/
└── tests/
コレクションのスケルトンの作成
コンピューターにコレクションをインストールするには、ansible-galaxy collection インストール コマンドを使用できます。
特に、一部のサブコマンドは ansible galaxy でも使用できます。
-
init
: Ansible のデフォルトのテンプレートまたは独自のテンプレートに基づいて基本的なコレクション構造を作成します -
build
: Galaxy または独自のリポジトリにアップロードできるコレクション アーティファクトを作成します -
publish
: Galaxy はビルドされたコレクションのアーティファクトを公開します -
install
: 1 つ以上のコレクションをインストールします
結論
Ansible galaxy は、増え続けるロールブックを整理して考えるのに最適な方法です。 Ansible Galaxy には、自動化プロジェクトを迅速に開始するために使用できる約 39,000 のコミュニティ作成者、30,000 のロール、および 1,656 のコレクションがあります。開発者ガイドとコントリビューター ガイドでは、オープンソース プロジェクトである既存の Ansible Galaxy コードにコントリビュートする方法について説明します。
Ansible で自動化できるシステム管理タスクにも興味があるかもしれません。