のリスト内の更新値が、私はそのようなこの一つとして、実際に辞書のリストである変数を持っている:Ansible:私のペイロード内の辞書
myvar:
- name: name1
ip_addresses:
- 10.10.10.10
- 11.11.11.11
nat_destination_addresses:
- host: 12.12.12.12
destination: 13.13.13.13
- host: 14.14.14.14
destination: 15.15.15.15
nat_source_address: 16.16.16.16
applications:
- protocol: tcp
port: 8302
- protocol: udp
port: 2000
- protocol: tcp
port: 2000-5600
- name: name2
ip_addresses:
- 17.17.17.17
- name: name3
ip_addresses:
- 18.18.18.18
- 19.19.19.19
myvar
における各要素のすべての値はオプションですただし、必須の名前は除きます。
私は、IPアドレス(ip_addresses
、nat_destination_addresses
およびnat_source_address
)とポートをパディングしようとしています。ポートは、最初にゼロで5文字の長さにする必要があります(2000
はになり、2000-5600
は02000-05600
になります)。また、各サブセクションには3文字の文字が必要です。18.18.18.18
は018.018.018.018
になります。
問題は私がmyvar
のサブセクションだけを変更することができないということです。
merging dictionaries in ansible
Using set_facts and with_items together in Ansible
しかし無駄に:
私のような、ここで他の質問を、読みました。私が何をしても元の辞書を保持できないので、2番目のStackOverflowリンクからcombine
フィルタを使用すると、ip_addressesのリストになります。
予想される結果は、更新されたIPアドレスとポートを持つ元のmyvar
変数です。
感謝を使用して、古い
myvar
変数を置き換えるリロード!そのソリューションをテストしたところ、うまく動作していましたが、残念ながら、私たちが作成するPythonモジュールの数を制限しようとしています(私の決定ではありません)。私と同じ要件を持っています。 – Drizzt