はじめに
前回、CentOS 7(REHL 7) 初期設定 Ansible 編 にて、Ansible の Playbook の作成方法について、簡単ですが記載しました。今回は、前回作成したロールを Ansible Galaxy1 に登録し、いつでも簡単に取り出して再利用できるようにする方法を紹介します。
Ansible Galaxy に 登録する前準備
GitHub に 空の プロジェクトを作成するところから始めます。Ansible Galaxy に 登録する準備として、2つの方法があります。
1.コマンドを実行してテンプレートを作成して始める方法(初めての場合こちらをおススメ)
ansible-galaxy init (ロール名=GitHubプロジェクト名)
2.一度作成した roles の下から抜き出して作成する方法
重要な作業:「 meta/main.yml 」の記載
単純な ロールに meta/main.yml を 記載するだけで Ansible Galaxy に 保存することができるようになります。meta/main.yml が 作成できたら、GitHubに登録しておくことで事前準備完了です。以下、meta/main.ymlの記載例を紹介します。
galaxy_info:
author: kouji kojima # 作成者
description: sample-ansible-el7-init # ロールの説明
company: your company (optional) # 会社名(任意)
Some suggested licenses: # ライセンス
- Apache
license: Apache License Version 2.0
min_ansible_version: 2.5.0 # Ansibleのバージョン
platforms: # プラットフォーム(EL:RHEL,CentOSの意味)
- name: EL
versions:
- 7
galaxy_tags: # ロールのタグ
- EL7
- init
- locale
- timezone
- proxy
dependencies: # 依存するロール
- kouji-kojima.ロール名
Ansible Galaxy と GitHub を紐づける
Ansible Galaxy の サイト から Signin with GitHub で ログインします。
ログインしたら、ユーザー名のボタンから My Imports を選択します。
「 +ADD 」ボタン を押します。
Search ボックスの横のリロードマークを押します。
Ansible Galaxy が GitHub と うまく連携ができていたら、GitHub に 上げたAnsible Role に 関係するプロジェクトの一覧が表示されます。
プロジェクト名の左の ☑ ボタン をクリックすることで Ansible Galaxy へ Role 登録がスタートします。最後に ステータスが Succeeded に なったら登録完了です。
また GitHub の ソースを変更した場合も ☑ ボタン で更新されます。
登録が完了したら、プロジェクト名のリンクを押してみます。すると meta/main.yml の 情報が表示されます。
また、README の タブには GitHub に アップした README.md の 情報も表示されるようになっています。
登録したロールを再利用する方法
最後に、今回登録したロールを実際に使ってみます。
1.まずロールをローカル(ansibleサーバ)にインストール2します。
ansible-galaxy install kouji-kojima.sample-ansible-el7-init(ユーザ名.ロール名)
~/.ansible/roles/kouji-kojima.sample-ansible-el7-init
2.お好きな場所に site.yml を作成します。
cat << EOF > site.yml
- hosts: servers
remote_user: ec2-user
become: yes # デフォルト root
#become_user: xxx
vars:
val1: xxxxx # README を 見て変数が必要であれば
val2: yyyyy
roles:
# ロールを指定すると勝手にインストール先を見てくれます。
# dependencies に 記載されているロールが先に実行されます。
- { role: kouji-kojima.sample-ansible-el7-init }
EOF
3.site.yml と 同じディレクトに hosts を作成します。
cat << EOF > staging
[servers]
HostName or IP
HostName or IP
[all:vars]
ansible_ssh_user=ec2-user
EOF
4.実行してみます。
# 実行例
ansible-playbook -i staging site.yml --private-key=/path/key.pem
# デバッグ実行例
ansible-playbook -i staging site.yml --private-key=/path/key.pem -vvv
さいごに
具体的なソースは GitHub を ご参照ください。
GitHub 依存無 の 場合と GitHub 依存有 の 場合のサンプルを用意しました。
-
Ansible Galaxy とは Ansible の コンテンツ(ロール)を検索、再利用、共有するための HUB ・・・Ansible Galaxy HP より引用 ↩
-
meta/main.yml の dependencies に 記載したロールも一緒にインストールされます。 ↩