問題:私は2つのタスクがあります。私が理解するように、タスクごとに1つのモジュールしか実行できません。Jinja2テンプレートから複数のホストに対して単一の構成を生成します。
タスク1 - ネットワークデバイスからのファクト情報(シリアル、バージョンなど)を収集します。
タスク2 -
理想的な結果タスク1で収集した情報を持つテンプレートをレンダリングします私はネットワーク機器の負荷をループするよ、私の理想的な結果は、一度に1つのデバイスを選択することですので、集まりますその情報をテンプレートにレンダリングした後、ループ上の他のデバイスに移動するなどの操作を行います。
アプローチ:私は同じ構文を維持すると考えました。タスク1でファクトをファイル(.json)に保存し、タスク2でJSONファイルを読み込み、興味のある変数を取得します。
これを実行する方法はありますか?
タスク:役割/ジュニパー私はテンプレートをレンダリングするときのように私の目的に適合していない現在持っているもの
は、それが唯一の最後のデバイスに関する情報が含まれています(おそらく複数あります) .junos /タスク/ main.yaml
- name: 1 - Gathering Facts
junos_get_facts:
host: "{{ inventory_hostname}}"
user: ""
passwd: ""
savedir: "~/Ansible/Ouput/Facts"
ignore_errors: True
register: junos
- name: 2 - Creating the template
template:
src="~/Ansible/roles/juniper.junos/templates/template.j2"
dest="~/Ansible/Ouput/Facts/Device_facts.yml"
テンプレート:〜/ Ansible /役割/ juniper.junos /テンプレート/ template.j2
{% for host in groups['OOB_AMS'] %}
ANSIBLE NAME: {{ inventory_hostname}}
HOSTNAME: {{ junos.facts.hostname }}
MODEL: {{ junos.facts.model }}
SERIAL: {{ junos.facts.serialnumber }}
VERSION: {{ junos.facts.model }}
UP TIME: {{ junos.facts.RE0.up_time }}
{% endfor %}
理想的な出力: "〜/ Ansible /出力リレー/事実/ Device_facts.yml"
ANSIBLE NAME: DEVICE 1
HOSTNAME: DEVICE 1 HOSTNAME
MODEL: DEVICE 1 MODEL
SERIAL: DEVICE 1 SERIAL
VERSION: DEVICE 1 VERSION
UP TIME: DEVICE 1 UP TIME
ANSIBLE NAME: DEVICE 2
HOSTNAME: DEVICE 2 HOSTNAME
MODEL: DEVICE 2 MODEL
SERIAL: DEVICE 2 SERIAL
VERSION: DEVICE 2 VERSION
UP TIME: DEVICE 2 UP TIME
ANSIBLE NAME: DEVICE 3
HOSTNAME: DEVICE 3 HOSTNAME
MODEL: DEVICE 3 MODEL
SERIAL: DEVICE 3 SERIAL
VERSION: DEVICE 3 VERSION
UP TIME: DEVICE 3 UP TIME
ありがとう@techraf。これは治療にも役立ちました。私はrun_onceも使用して、期待される結果を得ました。この[link](http://docs.ansible.com/ansible/latest/playbooks_variables.html)には、techrafによって提案された変数があります。 –