Galaxy 開発者ガイド

Galaxy でコレクションとロールをホストして、Ansible コミュニティーと共有できます。Galaxy コンテンツは、事前にパッケージ化された作業単位 (ロール、Galaxy 3.2 の新機能、コレクション など) でフォーマットされます。インフラストラクチャーのプロビジョニング、アプリケーションのデプロイメント、および日常的に行うすべてのタスクのロールを作成できます。これをさらに一歩進めて、複数の Playbook、ロール、モジュール、およびプラグインを含む可能性のある自動化の包括的なパッケージを提供するコレクションを作成できます。

Galaxy のコレクションの作成

コレクションは、Ansible コンテンツのディストリビューション形式です。コレクションを使用して、Playbook、ロール、モジュール、およびプラグインをパッケージ化および配布できます。Ansible Galaxy を介してコレクションを公開および使用できます。

コレクションの作成方法は「コレクションの開発」を参照してください。

Galaxy のロールの作成

init コマンドを使用して新規ロールの基本構造を初期化し、ロールに必要なさまざまなディレクトリーおよび main.yml ファイルを作成する際の時間を短縮します。

$ ansible-galaxy init role_name

上記により、現在の作業ディレクトリーに以下のディレクトリー構造が作成されます。

role_name/
    README.md
    .travis.yml
    defaults/
        main.yml
    files/
    handlers/
        main.yml
    meta/
        main.yml
    templates/
    tests/
        inventory
        test.yml
    vars/
        main.yml

ロールのリポジトリーを作成する場合、リポジトリーのルートは role_name である必要があります。

Force

現在の作業ディレクトリーにすでにロール名に一致するディレクトリーが存在する場合は、init コマンドによりエラーが発生します。エラーを無視するには、--force オプションを使用します。強制的に、上記のサブディレクトリーとファイルを作成し、一致するものをすべて置き換えます。

有効なコンテナー

Container Enabled ロールを作成する場合は、--type containeransible-galaxy init に渡します。これにより、上記のものと同じディレクトリー構造が作成されますが、これを Container Enabled ロールに適したデフォルトファイルで追加します。たとえば、README.md には若干異なる構造があり、.travis.yml ファイルでは、Ansible Container を使用してロールをテストします。また、メタディレクトリーには container.yml ファイルが含まれます。

カスタムロールのスケルトンの使用

カスタムロールのスケルトンディレクトリーは、以下のように指定できます。

$ ansible-galaxy init --role-skeleton=/path/to/skeleton role_name

スケルトンを指定すると init は以下のことを行います。

  • すべてのファイルおよびディレクトリーをスケルトンから新しいロールにコピーします。

  • テンプレートディレクトリーの外部で見つかったすべての .j2 ファイルはテンプレートとしてレンダリングされます。現在便利な変数は role_name です

  • .git ディレクトリーおよび .git_keep ファイルはコピーされません。

または、role_skeleton とファイルの無視は、ansible.cfgで設定できます

[galaxy]
role_skeleton = /path/to/skeleton
role_skeleton_ignore = ^.git$,^.*/.git_keep$

Galaxy での認証

Galaxy Web サイトでロールを管理する import および deletesetup コマンドを使用するには、API キーの形式での認証が必要です。Galaxy Web サイトでアカウントを作成する必要があります。

  1. Galaxy の Web サイトにログインし、Preferences <https://galaxy.ansible.com/me/preferences> _ ビューを開きます。

  2. Show API key を選択してコピーします。

  3. GALAXY_TOKEN_PATH で設定したパスにトークンを保存します。

ロールのインポート

import コマンドでは、最初に login コマンドを使用して認証する必要があります。認証されると、所有またはアクセスが付与された GitHub リポジトリーをすべてインポートできます。

以下を使用してロールにインポートします。

$ ansible-galaxy import github_user github_repo

デフォルトでは、コマンドは Galaxy がインポートプロセスを完了するまで待機し、インポートが進行するにつれて結果を表示します。

Successfully submitted import request 41
Starting import 41: role_name=myrole repo=githubuser/ansible-role-repo ref=
Retrieving GitHub repo githubuser/ansible-role-repo
Accessing branch: devel
Parsing and validating meta/main.yml
Parsing galaxy_tags
Parsing platforms
Adding dependencies
Parsing and validating README.md
Adding repo tags as role versions
Import completed
Status SUCCESS : warnings=0 errors=0

ブランチ

特定のブランチをインポートするには、--branch オプションを使用します。指定しない場合は、リポジトリーのデフォルトブランチが使用されます。

ロール名

デフォルトでは、ロールに指定された名前は GitHub リポジトリー名から派生しますが、--role-name オプションを使用してこれを上書きして名前を設定できます。

待機なし

--no-wait オプションが存在する場合は、結果を待ちません。すべてのロールに対する最新のインポートの結果は、My Imports に移動して Galaxy Web サイトで利用できるようになります。

ロールの削除

delete コマンドでは、最初に login コマンドを使用して認証する必要があります。認証されると、Galaxy Web サイトからロールを削除できます。GitHub のリポジトリーにアクセスできるロールのみを削除することができます。

ロールを削除するには、以下を使用します。

$ ansible-galaxy delete github_user github_repo

これにより、Galaxy からロールのみが削除されます。実際の GitHub リポジトリーを削除したり、変更したりしません。

Travis 統合

Galaxy と Travis のロール間の統合またはコネクションを作成できます。コネクションが確立されると、Travis のビルドが自動的に Galaxy でインポートを発生させ、ロールに関する最新情報で検索インデックスを更新します。

setup コマンドを使用して統合を作成しますが、統合を作成する前に、最初に login コマンドを使用して認証する必要があります。Travis および Travis トークンにもアカウントが必要になります。準備が整ったら、以下のコマンドを使用して統合を作成します。

$ ansible-galaxy setup travis github_user github_repo xxx-travis-token-xxx

setup コマンドには Travis トークンが必要ですが、トークンは Galaxy に保存されていません。これは、the Travis documentation で説明されているように、GitHub ユーザー名およびリポジトリーとともに使用されます。ハッシュは Galaxy に格納され、Travis から受信した通知の検証に使用されます。

setup コマンドを使用すると、Galaxy が通知に応答します。Travis がリポジトリーでビルドを実行し、通知を送信するように設定するには、Travis getting started guide に従います。

ビルドの完了時に Galaxy に通知するように Travis に指示するには、.travis.yml ファイルに以下を追加します。

notifications:
    webhooks: https://galaxy.ansible.com/api/v1/notifications/

Travis 統合の一覧表示

--list オプションを使用して、Travis 統合を表示します。

$ ansible-galaxy setup --list


ID         Source     Repo
---------- ---------- ----------
2          travis     github_user/github_repo
1          travis     github_user/github_repo

Travis 統合の削除

--remove オプションを使用して、Travis 統合を無効化および削除します。

$ ansible-galaxy setup --remove ID

無効にする統合の ID を指定します。--list オプションを使用して ID を検索できます。

参考

Ansible コレクションの使用

モジュール、Playbook、およびロールの共有可能なコレクション

ロール

Ansible ロールに関するすべて

Mailing List

ご質問はございますか。サポートが必要ですか。ご提案はございますか。Google グループの一覧をご覧ください。

リアルタイムチャット

Ansible チャットチャンネルへの参加方法