[ansible] ansible-galaxyにWatcherのrole公開してみた。

こちらは[フロムスクラッチ Advent Calendar 2017](https://qiita.com/advent-calendar/2017/fromscratch)の17日目の記事です。


# はじめに（背景）

1. linuxで特定のフォルダ配下のみでファイルシステムのなんらかの変更があった場合に通知しようと思った時に、書き記事を見つけた。
2. [再帰的にフォルダを監視できるincronライクなコマンド](https://orebibou.com/2015/05/%E5%86%8D%E5%B8%B0%E7%9A%84%E3%81%AB%E3%83%95%E3%82%A9%E3%83%AB%E3%83%80%E3%82%92%E7%9B%A3%E8%A6%96%E3%81%A7%E3%81%8D%E3%82%8Bincron%E3%83%A9%E3%82%A4%E3%82%AF%E3%81%AA%E3%82%B3%E3%83%9E%E3%83%B3/)
2. 普段ansibleを使っているので、ansible-galaxyからrolesがすでにないか探した。
3. なかったので、「もう自分で公開しましょ！」って思ったので、公開してみました！

# 前提

| ページ | 概要 |
|:-----------|:------------|
| [ansible](https://www.ansible.com/)<br>ver.2.3.1 | 構成管理ツール |
| [ansible-galaxy](https://galaxy.ansible.com/) | ansibleのrolesを公開するサービス |
| [watcher](https://github.com/gregghz/Watcher) | [incron](http://inotify.aiken.cz/?section=incron&page=about&lang=en)のようなfile/dirの変更を検知してジョブを実行するツール |

# 参考

基本的にこちらの記事の方の修正を参考にさせていただきました :bow: 
http://blog.n-z.jp/blog/2017-06-03-ansible-galaxy-new-role.html

# 手順

## 1. ansibleで公開するrole用のrepoを作成する
ex.) 一般的には、「ansible-role-xxxxxx」という形が多い気がする。

[github](https://github.com)で作成しました。

## 2. `ansible-galaxy init <githubのrepo名>`で、デフォルトのroleセットを作成する

```
 ~ ❯❯❯ mkdir ansible
 ~ ❯❯❯ cd ansible

 ~/ansible ❯❯❯ ansible-galaxy init ansible-role-watcher
- ansible-role-watcher was created successfully

 ~/ansible ❯❯❯ ll
total 0
drwxr-xr-x  14 kitamurajun  staff  476 12 18 14:10 ansible-role-watcher

 ~/ansible ❯❯❯ ll ansible-role-watcher
total 8
-rw-r--r--  1 kitamurajun  staff   681 12 18 13:05 README.md
drwxr-xr-x  3 kitamurajun  staff   102 12 18 13:05 defaults
drwxr-xr-x  3 kitamurajun  staff   102 12 18 13:05 files
drwxr-xr-x  3 kitamurajun  staff   102 12 18 13:05 handlers
drwxr-xr-x  3 kitamurajun  staff   102 12 18 13:05 meta
drwxr-xr-x  3 kitamurajun  staff   102 12 18 13:05 tasks
drwxr-xr-x  3 kitamurajun  staff   102 12 18 13:05 templates
drwxr-xr-x  4 kitamurajun  staff   136 12 18 13:05 tests
drwxr-xr-x  3 kitamurajun  staff   102 12 18 13:05 vars
```
## 3. 修正
- 実際のwatcher install処理の作成
- [LICENSE](https://opensource.org/licenses/mit-license.php)の追加
- README.mdの修正

## 4. githubへpush
```
git remote add origin git@github.com:jkkitakita/ansible-role-watcher.git
git push -u origin master
git tag v1.0.0
git push --tags
```
## 5. ansible galaxyへ公開
#### 5.1 [ansible-galaxy](https://galaxy.ansible.com)のページへ
#### 5.2 右上からログインする
※ 前提として、ansible-galaxyへgithubユーザー登録が必要
#### 5.3 再度、右上のマイアカウントのところから、[MyImports](https://galaxy.ansible.com/imports#/)へ遷移する
#### 5.4 「Add」を押下
#### 5.5 「refresh」を押下
<img width="1280" alt="スクリーンショット 2017-12-18 14.44.02.png" src="https://qiita-image-store.s3.amazonaws.com/0/95804/e95a1c0f-591f-0acf-6a80-fd19b2a9807c.png">

#### 5.6 対象となるrolesを有効にする
<img width="1280" alt="スクリーンショット 2017-12-18 14.45.14.png" src="https://qiita-image-store.s3.amazonaws.com/0/95804/c13f4e92-961e-46bb-4338-67a8c64b1eda.png">

※ meta/main.ymlの記載内容が間違っていたりする場合、失敗するので、その際はコンソールを確認すること

## 完成！
<img width="1276" alt="スクリーンショット 2017-12-18 14.36.36.png" src="https://qiita-image-store.s3.amazonaws.com/0/95804/c6ed1416-7a1e-ecbc-2527-6035f3573a14.png">

https://galaxy.ansible.com/jkkitakita/watcher/

一応、ローカルで`ansible-galaxy install`できることも確認。

```
 ~/d/ansible ❯❯❯ ansible-galaxy install jkkitakita.watcher

- downloading role 'watcher', owned by jkkitakita
- downloading role from https://github.com/jkkitakita/ansible-role-watcher/archive/v1.0.0.tar.gz
- extracting jkkitakita.watcher to /Users/kitamurajun/darunia-infra/ansible/roles/jkkitakita.watcher
- jkkitakita.watcher was installed successfully
```

# さいごに

人のものをお借りしてはいますが
自分で何か作ったものを公開するのは初めてでした。
（全然品質は高くないですが。。。）
やってて、思ったのが、LICENSE周りとかちゃんと勉強して
ansibleだけではなく、OSS周りも貢献していきたいなと思いました。