この記事は、「Ansible 3 Advent Calendar 2019」14日目の記事です。(遅刻してすみません) qiita.com
どうも、ひよこ大佐です。
今回も役に立ちそうで役に立たない、でもちょっとだけ役に立つAnsibleの小ネタをご紹介します。
Ansibleから、「どうしてもGitHubのIssueを確認して、ステータスに応じてなにかしたい!」ということ、ありますよね? 多分あると思うんです。 ないよという方は考えてみてください。ほら、ありますよね? あるんですよ!
なので、今日はそんなときにとても役に立つモジュールをご紹介します。
github_issue
「github_issue」モジュールは、特定のGitHubのIssueの状況を確認できます。以下のように指定することで、registerに指定した変数にGitHubのIssueの情報を格納することができます。
---
- hosts: localhost
tasks:
- name: Get GitHub Issue via Ansible Playbook
github_issue:
organization: ansible
repo: awx
issue: 2139
action: get_status
register: result
- name: Show result
debug:
msg: "{{ result }}"
パラメーターに、参照するリポジトリやIssueの番号を指定します。今回は私が作成してまだOpen状態になっている以下のIssueを参照してみます。
「action」パラメーターは、「get_status」以外にもいろいろ指定できそうな雰囲気を醸していますが、現時点では「get_status」しか指定できません。そのうち新しい機能が追加される可能性もあるので、楽しみに待ちましょう。
実行する
では、実際に実行した結果を確認してみましょう。
$ ansible-playbook -i hosts test.yml
PLAY [localhost] ***************************************************************
TASK [Gathering Facts] *********************************************************
ok: [localhost]
TASK [Get GitHub Issue via Ansible Playbook] ***********************************
changed: [localhost]
TASK [Show result] *************************************************************
ok: [localhost] => {
"msg": {
"changed": true,
"failed": false,
"issue_status": "open"
}
}
PLAY RECAP *********************************************************************
localhost : ok=3 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
「issue_status」が「open」となっているので、現在このIssueがOpenであることがわかります。このステータスをもとに、後続のタスクの条件分岐させたい場合などに活用できます。 現時点では、そのIssueがOpenかClosedのどちらかであることしかわからないので、今後の機能拡張次第ではより有用なモジュールになると思われますので、今後に期待しましょう。