web-dev-qa-db-ja.com

JSONシリアル化できないインライン暗号化変数

ボールトを使用して単一変数を暗号化する方法を理解しようとしています。最初に文字列をansible-vault encrypt_string -n -pで暗号化し、次に出力をプレイブックに書き込みます。プレイブックを実行すると、復号化された文字列はJSONシリアル化できないと表示されます。

暗号化された文字列:"inline_name"inline_nameinlinenameでも試してみましたが、毎回同じ結果になりました。

私のプレイブック:

---
- name: Build System

  hosts: dev

  tasks:
  - name: Create 
    mysql_db:
      state: present
      name: !vault |
          $ANSIBLE_VAULT;1.1;AES256
          39613261386438623937643062636166663638633062323939343734306334346537613233623064
          3761633832326365356231633338396132646532313861350a316666376566616633376238313636
          39343833306462323534623238333639663734626662623731666239366566643636386261643164
          3861363730336331660a316165633232323732633364346636363764623639356562336536636136
          6364
      login_Host: "{{ mysql_Host }}"
      login_user: "{{ mysql_user }}"
      login_password: "{{ mysql_pass }}"
  - name: Check if can access plain text vars
    debug:
      msg: "{{ my_plain_txt }}"

エラーメッセージ:

An exception occurred during task execution. To see the full traceback, use -vvv. 
The error was: TypeError: u'"inline_name"' is not JSON serializable
fatal: [127.0.0.1]: FAILED! => {"failed": true, "msg": "Unexpected failure during module execution.", "stdout": ""}
10

タスクレベルの変数を追加します。

  - name: Create 
    mysql_db:
      state: present
      name: "{{ mysql_name }}"
      login_Host: "{{ mysql_Host }}"
      login_user: "{{ mysql_user }}"
      login_password: "{{ mysql_pass }}"
    vars:
      mysql_name: !vault |
          $ANSIBLE_VAULT;1.1;AES256
          39613261386438623937643062636166663638633062323939343734306334346537613233623064
          3761633832326365356231633338396132646532313861350a316666376566616633376238313636
          39343833306462323534623238333639663734626662623731666239366566643636386261643164
          3861363730336331660a316165633232323732633364346636363764623639356562336536636136
          6364
15

二重引用符はこのエラーを説明できますが、私には説明できません。エラー/警告全体を見て、jsonを解析しようとしているものを確認してください。私の場合....

[警告]:コールバックプラグインでメソッド(v2_runner_on_ok)を使用できませんでした():u'secret_value 'はJSONシリアル化できません

Json.loadと呼ばれる古いAWXコールバックプラグインは、プレーンテキストでシークレットとともに警告をログに記録しました。アップグレードが必要でした。

0
user1198049