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 コマンド、delete コマンド、および setup コマンドを使用するには認証が必要で、login コマンドを使用してこれを行うことができます。login コマンドを使用する前に、Galaxy の Web サイトでアカウントを作成する必要があります。

login コマンドには、GitHub 認証情報を使用する必要があります。ユーザー名とパスワードを使用するか、personal access token を作成することができます。トークンの作成を選択した場合は、識別を確認するためにのみ使用されます。

以下は、GitHub のユーザー名とパスワードを使用した Galaxy Web サイトでの認証を示しています。

$ ansible-galaxy login

We need your GitHub login to identify you.
This information will not be sent to Galaxy, only to api.github.com.
The password will not be displayed.

Use --github-token if you do not want to enter your password.

GitHub Username: dsmith
Password for dsmith:
Successfully logged into Galaxy as dsmith

ユーザー名とパスワードの使用を選択すると、パスワードは Galaxy に送信されません。これは GitHub で認証され、個人アクセストークンを作成するために使用されます。次にトークンを Galaxy に送信し、その ID を検証し、Galaxy アクセストークンを返します。認証が完了すると、GitHub トークンが破棄されます。

GitHub パスワードを使用しない場合や、GitHub で 2 段階認証を有効にしている場合は、--github-token オプションを使用して、作成する個人用アクセストークンを渡します。

ロールのインポート

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 を検索できます。

参考

コレクションの使用

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

ロール

Ansible ロールに関するすべて

Mailing List

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

リアルタイムチャット

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