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 container
を ansible-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
コマンドを使用するには、API キーの形式での認証が必要です。Galaxy Web サイトでアカウントを作成する必要があります。
Galaxy の Web サイトにログインし、Preferences <https://galaxy.ansible.com/me/preferences> _ ビューを開きます。
Show API key を選択してコピーします。
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 チャットチャンネルへの参加方法