ひよこインフラてっく!

ひよこインフラエンジニア「ひよこ大佐」による技術ブログ的なもの。インフラ技術や仮想化、Pythonなど。

【小ネタ】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を参照してみます。

github.com

「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のどちらかであることしかわからないので、今後の機能拡張次第ではより有用なモジュールになると思われますので、今後に期待しましょう。