私はansibleに非常に慣れていないので、いくつかテストしたいと思います。いくつかの Amazon EC2 インスタンスがあり、それらにさまざまなソフトウェア コンポーネントをインストールしたいと考えています。ansible スクリプトまたは構成ファイル内にテクニカル ユーザーの (プレーンテキストの) 資格情報を保持したくありません。これらのファイルを暗号化できることはわかっていますが、中央パスワード管理ツールとして keepass を試してみたいと思っています。したがって、インストール スクリプトは、実際のインストールを開始する前に、.kdbx (Keepass 2) データベース ファイルから資格情報を読み取る必要があります。
これまで、.kdbx ファイルを読み取るための基本的な Python スクリプトを作成しました。このスクリプトは、次の方法で json オブジェクトを出力します。
print json.dumps(inventory, sort_keys=False)
出力は次のようになります。
{"cdc":
{"cdc_test_server":
{"cdc_test_user":
{"username": "cdc_test_user",
"password": "password"}
}
}
}
ここで、pythonスクリプトがansibleによって実行され、出力のキーと値のペアがansible変数として含まれ/登録されることを達成したいと考えています。これまでのところ、私のプレイブックは次のようになります。
- hosts: 127.0.0.1
connection: local
tasks:
- name: "Test Playboook Functionality"
command: python /usr/local/test.py
register: pass
- debug: var=pass.stdout
- name: "Include json user output"
set_fact: passwords="{{pass.stdout | from_json}}"
- debug: " {{passwords.cdc.cdc_test_server.cdc_test_user.password}} "
最初のデバッグでは正しい json 出力が生成されますが、変数を ansible に含めることができないため、それらを jinja2 表記で使用できます。set_fact は例外をスローしませんが、最後のデバッグは "Hello world" メッセージを返すだけですか? だから私の質問は次のとおりです:タスクを介して、jsonキーと値のペアをansible変数として適切に含めるにはどうすればよいですか?