2017-10-03 4 views
0

ansible優れたテンプレートエンジン(Jinja2ベース)をテンプレート変数を使用する別のプロジェクトで使用したいと考えています。可能性のあるテンプレートエンジンの外部使用

テンプレート変数はすべてのansibleルックアップとフィルタを使用できます。

私はこれに似てレンダリングするためのパイプラインを確立したいと思います:

input.yaml.j2 =>ansible (template engine) =>output.yaml

例:

input.yaml.j2

vars: 
    users: "{{ lookup('file', '/tmp/users.json') }}" 

template: 
    - name: "{{ item.name }}" 
    type: "user" 
    fist_user_group: "{{ item.user_groups.0 }}" 
    with_items: 
     - "{{ users }}" 

/tmp/users.json

[ 
    {'John': 'groups': ['apache', 'webapp']}, 
    {'Rohit': 'groups': ['rabbitmq', 'postgresql']} 
] 

output.yaml

- name: "John" 
    type: "user" 
    first_user_group: "apache" 

- name: "Rohit" 
    type: "user" 
    first_user_group: "rabbitmq" 

質問:

がどのように私は自分のテンプレートを解析するレンダリングエンジンをansibleを使用することができますか?

+1

なぜ 'template'モジュールを実行する小さなプレーブックを使用しないのですか? –

+0

これはうまくいくかもしれません。あなたは例を挙げていただけますか?私は「不安な人」にはあまりよく慣れていませんが、レンダリング機能には感銘を受けました。このプレイブックをPythonコードからローカルに実行するにはどうすればよいですか?ファイルの代わりに出力テンプレートをメモリに入れる方法はありますか? –

答えて

1

シンプル脚本:

--- 
- hosts: localhost 
    connection: local 
    gather_facts: no 
    tasks: 
    - template: 
     src: input.j2 
     dest: output.file 

実行:ansible-playbook myplaybook.yml

あなたの情報については、​​テンプレートエンジンの少し拡張バージョンを使用してください。
これを見てください - これは実際に欲しいものです。

+0

それは私がやったことです。それはかなりうまくいっています。私は、レンダリングを担当するモジュールをPythonから直接呼び出してもらいたいと思っていました。 (より速い)、 '不可能な' CLIを使ってAnipal工場全体をロードするのではなく、 –

関連する問題