【小ネタ】GitHubのIssueのステータスをAnsibleから確認する
この記事は、「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のどちらかであることしかわからないので、今後の機能拡張次第ではより有用なモジュールになると思われますので、今後に期待しましょう。