2016-08-23 5 views
2

Ansible変数がlist_of_intsであると仮定しましょう。可能:変数のintのリストを与え、各要素がインクリメントされる第2のリストを定義する

incremented_listを定義します。その要素は、最初のリストの要素を一定量だけ増やして取得します。これは最初の変数である場合

たとえば、:

incremented_list: 
    - 101 
    - 107 
    - 108 

私が上で何かを考えていた:

--- 
# file: somerole/vars/main.yml 

list_of_ints: 
    - 1 
    - 7 
    - 8 

100の増分を仮定して、所望の第二のリストは、このコンテンツを持っているでしょう行:

incremented_list: "{{ list_of_ints | map('add', 100) | list }}" 

悲しいことに、Ansibleはcustom filters for logarithms or powersを持っていますが、ではないため私は簡単にそれらの数のlog10を計算することができますが、それらを増やすことはできません。

https://github.com/ansible/ansible/blob/v2.1.1.0-1/lib/ansible/plugins/filter/mathstuff.pyのプルリクエスト以外のアイデアはありますか?

答えて

2

これはそれを行います。

--- 

- hosts: localhost 
    connection: local 
    vars: 
    incremented_list: [] 
    list_of_ints: 
     - 1 
     - 7 
     - 8 
    incr: 100 

tasks: 
    - set_fact: 
     incremented_list: "{{ incremented_list + [ item + incr ] }}" 
    no_log: False 
    with_items: "{{ list_of_ints }}" 

    - name: show cntr 
    debug: var=incremented_list 
+0

こんにちは@奪う-H、これは実際に働いていた、ありがとう! 私が実際に達成しようとしていたのは、これを行うためのタスクを使わずに宣言的にやっていたことでした。 これは実際にはAnipal 2.1では不可能ですが、私は[PR#17251](https://github.com/ansible/ansible/pull/17251)を提出して、これが役に立つかどうか確認しようとしています。 [(デフォルト|「{{(incremented_list: 'incremented_list:デフォルト()フィルタを使用して、単一のタスクで – muxator

+0

ソリューション:ところで 、友人はただ一つのタスクを使用する代わりに、2を行い、このソリューションを提案しました]))+ [item + incr]}} "' – muxator

関連する問題