Ansible TowerやAWXのインベントリ変数(group_vars/host_vars)にvaultで暗号化したものを使う時にハマったのでやり方を備忘録として残しておきます。
環境
項目 | バージョン |
---|---|
RHEL | 7.5 |
Ansible | 2.6.3 |
Ansible Tower | 3.2.5 |
現状、Ansible 2.6以上ではないとAnsible Tower(AWX)でインベントリ変数に格納したvaultは複合できないようです。
検証方法
ここでは debugモジュール
を使って message
変数を出力してみます。
message
にはvaultで暗号化された Hello World!!
を指定します。
検証
vaultで暗号化
ansible-vault
で暗号化します。
1 2 3 4 5 6 7 8 9 10 11 |
$ ansible-vault encrypt_string 'Hello World!!' --name message New Vault password: Confirm New Vault password: message: !vault | $ANSIBLE_VAULT;1.1;AES256 36623065363836653763626531636261613834653839353832663236316134646665356539643362 3330353263653837353832316139663963373037636261650a313531613564643337366661313065 30313332383563303866333833613332643631353463346166333565306631316364363039663636 3561303264613365390a636237633463643538323634663134666632393737666437646462653364 6563 |
Playbookの作成
Ansible Towerの設定
ここではインベントリに直接埋め込んでみます。
Ansible Tower(AWX)の変数にvaultを使う時は以下のようにします。
注意点: ミソは一行ずつ改行を入れるところです。改行がないと動作しません。
テンプレート
テンプレートの 認証情報
にはvaultで作成したパスワードを指定してください。
動作確認
きちんと複合されていることが確認できました 🙂
ちなみにvaultで生成した暗号化文字列に改行を入れなかった場合は以下のようにエラーが発生します。
参考
https://github.com/ansible/awx/issues/223#issuecomment-388457636
https://github.com/ansible/awx/issues/1992#issuecomment-398424839