てくなべ (tekunabe)

ansible / network / automation

[Ansible] Ansible Tower / AWX のワークフロー定義を YAML で表示する(tower-cli編)

はじめに

Ansible Tower / AWX では、ワークフロービジュアライザーという画面で、ワークフローを可視化できます。

f:id:akira6592:20191114225342p:plain
ワークフローの定義

ビジュアル的に可視化されていると直感的で分かりやすいです。一方で、複数のワークフロー定義を比較したいなどの場合、何かしらのフォーマットのテキストファイルのほうが都合が良いのではないでしょうか。

tower-cli というコマンドツールを利用することで、YAML で表示できます。

この記事では、簡単なサンプルを元にワークフローの定義を tower-cli を使って YAML にする方法をご紹介します。

  • 環境
    • AWX 7.0.0
    • Tower CLI 3.3.7

準備

インストール

tower-cli をインストールしていない場合は以下のコマンドでインストールします。

$ pip install ansible-tower-cli 

設定

接続先を設定をします。

$ tower-cli config host https://[towerかAWXのアドレス]/
$ tower-cli config user [ユーザー名]
$ tower-cli config password [パスワード]
$ tower-cli config verify_ssl false      # 必要に応じて


定義の表示

サンプル1

以下のワークフローテンプレート testwf1YAMLで表示します。

f:id:akira6592:20191114225342p:plain
testfw1のワークフローの定義

tower-cli で以下のコマンドを実行します。

$ tower-cli workflow schema testwf1
- id: 91
  job_template: 17
  success_nodes:
  - id: 92
    job_template: 18

id: はワークフローノード固有に振られるIDです。同じIDジョブテンプレートを別途配置すると別のIDが振られ、区別されます。

なお、-v オプションを付けると、API を叩く様子が確認できます。

$ tower-cli workflow schema testwf1 -v
*** DETAILS: The wfjt field is given as a name; looking it up. ****************
*** DETAILS: Getting the record. **********************************************
GET https://tower/api/v2/workflow_job_templates/
Params: [('name', 'testwf1')]

*** DETAILS: Getting records. *************************************************
GET https://tower/api/v2/workflow_job_template_nodes/
Params: [('workflow_job_template', 16)]

- id: 91
  job_template: 17
  success_nodes:
  - id: 92
    job_template: 18

ここでは、testwf1 というワークフローテンプレート名を指定しましたが、IDでも大丈夫です。 IDはワークフローテンプレートの設定画面を Web UI で開いたときの URL で確認できます。(以下の例の場合 16

https://[towerかAWXのアドレス]#/templates/workflow_job_template/16?(略)

サンプル2

以下のワークフローテンプレート testwf2YAMLで表示します。さきほどより少しノードが増えています。

f:id:akira6592:20191114231537p:plain
testfw2のワークフロー定義

tower-cli で以下のコマンドを実行します。

$ tower-cli workflow schema testwf2
- id: 93
  job_template: 17
  success_nodes:
  - id: 94
    job_template: 18
    success_nodes:
    - id: 95
      job_template: 19


まとめ

ワークフローの定義を tower-cli を使って YAML ファイルにする方法をご紹介しました。なにかしらのテキストフォーマットで確認したいときに、参考にしていただければと思います。

補足

tower-cli のリポジトリによると、本ツールは段階的に廃止され、後継は awx コマンドのようです。

参考

tower-cli/WORKFLOWS.rst at master · ansible/tower-cli · GitHub