Ansible Automation Platformで承認が必要なワークフローの作成

Ansible Automation Platformではユーザの承認が必要なワークフローというのが作成できます。
前回作成したワークフローをベースに承認作業をワークフローに追加してみましょう。

新規システムに一時ユーザを作成してもらい、そのユーザでAnsbileユーザを作成後、
一時ユーザを削除するワークフローを作ってみます。

ジョブテンプレートの作成

ユーザチェック用のジョブテンプレートを作成します。

$ id
uid=973(awx) gid=972(awx) groups=972(awx),971(receptor),973(redis),974(nginx) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
$ cd /var/lib/awx/projects/
$ mkdir test4
$ cd ../test4
$ ansible-galaxy init usercheck
$ vi usercheck/tasks/main.yml
---
- name: User Check
  command: "id {{ tmp_user }}"
  notify: handler
  register: result

$ vi usercheck/handlers/main.yml
---
# handlers file for usercheck
- name: handler
  debug: var="result"

$ vi usercheck.yml
---
- name: usercheck
  hosts: all
  user: "{{ tmp_user }}"
  become: true
  #gather_facts: true

  roles:
  - usercheck

暗号化の追加

前回のテンプレートでは作成ユーザのパスワードが暗号化されていないので
一度暗号化を解除して、pass変数を追加して再度暗号化します。

$ cd ../test2
$ ansible-vault decrypt useradd/vars/main.yml
$ vi useradd/vars/main.yml
pass: xxxxxx
$ ansible-vault encrypt --vault-id test_auth@prompt useradd/vars/main.yml

同じく削除ユーザのパスワードが暗号化されていないので暗号化を行います。

$ cd ../test3
$ vi useradd/vars/main.yml
ansible_ssh_pass: xxxxxx
ansible_sudo_pass: xxxxxxx
$ ansible-vault encrypt --vault-id test_auth@prompt useradd/vars/main.yml

ジョブテンプレートの修正

ユーザ削除のジョブテンプレートの変数はAnsbile Vaultで暗号化したので
変数の削除と認証情報でVaultを指定します。

ワークフローの作成

変数をワークフローに追加していきます。
前のブログから引き続き操作されている方は以下の変数が必要になります。
test_user,test_group,exe_user,add__user,group,del_user,del_group

承認付きワークフローの作成

ワークフローテンプレートを作成時に
今までジョブテンプレートを選んでいた箇所で承認を選びます。
タイムアウトを設定しなければ無期限となりますので
必要であれば設定を行います。

ユーザチェックのジョブテンプレート、
承認
ユーザ作成のテンプレート
ユーザ削除のテンプレートと
ワークフローテンプレートを設定します。

承認ユーザの追加

ワークフローテンプレートで承認するユーザは見ての通り
デフォルトではシステム管理者とシステム監査者になります。
他のユーザやチームを追加します。

ワークフローの実行

ワークフローを実行すると承認フェーズで実行中のままになります。

承認できるユーザでログインすると
ワークフローの承認にワークフロー一覧が表示されます。
承認を押すと処理が続行されます。

最後まで処理が終われば完了となります。