2016-08-15 10 views
0

私は非常に新しい人です。いくつかのことを試してみたいと思います。 私はいくつかのAmazon EC2インスタンスを用意しており、異なるソフトウェアコンポーネントをインストールしたいと考えています。私は、技術的なユーザの(平文の)クレデンシャルを、安全なスクリプトや設定ファイルの中に入れたくない。私はそれらのファイルを暗号化することが可能であることを知っていますが、私は中央のパスワード管理ツールにkeepassを試してみたいと思います。したがって、インストールスクリプトは、実際のインストールを開始する前に、.kdbx(Keepass 2)データベースファイルから資格情報を読み込む必要があります。Pythonスクリプトを使ったKeepass統合の可能性

これまで、私は.kdbxファイルを読むための基本的なpythonスクリプトを書いていました。スクリプトは、経由でJSONオブジェクトを出力します

print json.dumps(inventory, sort_keys=False) 

ouputを次のようになります次:

{"cdc": 
    {"cdc_test_server": 
     {"cdc_test_user": 
      {"username": "cdc_test_user", 
      "password": "password"} 
     } 
    } 
} 

は、今私はPythonのスクリプトが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出力を生成しますが、私はJinja2の表記を経由してそれらを使用することができるように、ansibleで変数を含めることはできませんよ。 set_factは例外をスローしませんが、最後のデバッグは "Hello world" - メッセージを返します。だから私の質問は:どのように適切にjsonキーの値のペアをタスクを介して可能な変数として含めるか?

+1

最後のデバッグ文に 'msg:'を追加してください: ' - {debug:msg}" {{pass ....}} "' –

+0

ありがとうございます。私のアプローチが変数の登録のための好ましい方法であるかどうか、あるいはより良い解決策があるかどうかを知っていますか? – JuHarm89

答えて

1

facts.dを使用して、そこにPythonスクリプトを配置して、実際に利用できるようにすることができます。
jsonオブジェクトを返す単純なアクションプラグインを作成して、stdout-> from_json変換の必要性を排除します。

関連する問題