LoginSignup
11
7

More than 5 years have passed since last update.

Ansible の Role を Ansible Galaxy に登録し再利用

Last updated at Posted at 2018-04-17

はじめに

前回、CentOS 7(REHL 7) 初期設定 Ansible 編 にて、Ansible の Playbook の作成方法について、簡単ですが記載しました。今回は、前回作成したロールを Ansible Galaxy1 に登録し、いつでも簡単に取り出して再利用できるようにする方法を紹介します。

Ansible Galaxy に 登録する前準備

GitHub に 空の プロジェクトを作成するところから始めます。Ansible Galaxy に 登録する準備として、2つの方法があります。

1.コマンドを実行してテンプレートを作成して始める方法(初めての場合こちらをおススメ)

テンプレート作成
ansible-galaxy init (ロール名=GitHubプロジェクト名)

2.一度作成した roles の下から抜き出して作成する方法

galaxy-move.png

重要な作業:「 meta/main.yml 」の記載

単純な ロールに meta/main.yml を 記載するだけで Ansible Galaxy に 保存することができるようになります。meta/main.yml が 作成できたら、GitHubに登録しておくことで事前準備完了です。以下、meta/main.ymlの記載例を紹介します。

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 で ログインします。

galaxy-site.png

ログインしたら、ユーザー名のボタンから My Imports を選択します。

galaxy-myimports.png

「 +ADD 」ボタン を押します。

galaxy-add.png

Search ボックスの横のリロードマークを押します。

galaxy-reload.png

Ansible Galaxy が GitHub と うまく連携ができていたら、GitHub に 上げたAnsible Role に 関係するプロジェクトの一覧が表示されます。
プロジェクト名の左の ☑ ボタン をクリックすることで Ansible Galaxy へ Role 登録がスタートします。最後に ステータスが Succeeded に なったら登録完了です。
また GitHub の ソースを変更した場合も ☑ ボタン で更新されます。

galaxy-myimports.png

登録が完了したら、プロジェクト名のリンクを押してみます。すると meta/main.yml の 情報が表示されます。

galaxy-meta.png

また、README の タブには GitHub に アップした README.md の 情報も表示されるようになっています。

galaxy-readme.png

登録したロールを再利用する方法

最後に、今回登録したロールを実際に使ってみます。

1.まずロールをローカル(ansibleサーバ)にインストール2します。

インストール方法
ansible-galaxy install kouji-kojima.sample-ansible-el7-init(ユーザ名.ロール名)
インストール先
~/.ansible/roles/kouji-kojima.sample-ansible-el7-init

2.お好きな場所に site.yml を作成します。

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 を作成します。

hostsの作成例(staging環境の場合)
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 依存有 の 場合のサンプルを用意しました。


  1. Ansible Galaxy とは Ansible の コンテンツ(ロール)を検索、再利用、共有するための HUB ・・・Ansible Galaxy HP より引用 

  2. meta/main.yml の dependencies に 記載したロールも一緒にインストールされます。 

11
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
7