2017-02-04 7 views
0

既存のVLANの最後の番号に基づいて新しいVLANを作成したいと思います。たとえば、eosの私の最後のVLAN番号は100ですので、私は私のプレイブックを実行し、VLAN 101を作成したいと思います。しかし、私は自分のプレイブックを実行すると、set_factの繰り返しが順番でなく、現在の最後のVLAN番号に基づいてVLAN番号を作成します

私はソートフィルタを使用していますが、それは無秩序のように見えますが、順番に反復していません。誰もそれを行う方法を知っていますか?

マイ脚本

- name: CHECK VLAN 
    hosts: eos 
    connection: local 

    tasks: 
    - name: CHECK FOR VLAN NUMBERS 
     eos_command: 
     commands: show vlan | json 
     provider: "{{ cli }}" 
     ignore_errors: yes 

     register: sh_vlan_output 
    - debug: var=sh_vlan_output.stdout[0].vlans.keys() 

    - name: SET VLAN NUMBER 
     set_fact: 
     vlan_index: "{{ item | int +1 }}" 
     with_items: 
     - "{{ sh_vlan_output.stdout[0].vlans.keys() | sort }}" 
    - debug: var=vlan_index 


    - name: CREATE VLAN 
     eos_config: 
     lines: 
      - vlan {{ vlan_index }} 
     provider: "{{ cli }}" 
     authorize: yes 



PLAY [CHECK VLAN] ************************************************************** 

TASK [setup] ******************************************************************* 
ok: [eos-1] 

TASK [CHECK FOR VLAN NUMBERS] ************************************************** 
ok: [eos-1] 

TASK [debug] ******************************************************************* 
ok: [eos-1] => { 
    "sh_vlan_output.stdout[0].vlans.keys()": [ 
     "11", 
     "10", 
     "13", 
     "12", 
     "14", 
     "1", 
     "100" 
    ] 
} 

TASK [SET VLAN NUMBER] ********************************************************* 
ok: [eos-1] => (item=10) 
ok: [eos-1] => (item=1) 
ok: [eos-1] => (item=100) 
ok: [eos-1] => (item=11) 
ok: [eos-1] => (item=12) 
ok: [eos-1] => (item=13) 
ok: [eos-1] => (item=14) 

TASK [debug] ******************************************************************* 
ok: [eos-1] => { 
    "vlan_index": "15" 
} 

TASK [CREATE VLAN] ************************************************************* 
changed: [eos-1] 

PLAY RECAP ********************************************************************* 
eos-1   

答えて

0

次神社式でmax + 1を得ることができます: `TASK [SET VLAN NUMBER] *:私はこの次取得エラーのように動作しません

{{ sh_vlan_output.stdout[0].vlans.keys() | map('int') | max + 1 }} 
+0

*************************************************** ****** 致命的:[eos-1]:FAILED! => {"failed":true、 "msg": "テンプレート文字列中にテンプレートエラー: 'map'という名前のフィルタがありません。 | max + 1}} "} – czopereq76

+0

ああ、お元気です...セットアップは何歳ですか? :)私は最近のパッケージを持っている2.7以降 –

+0

に神社のPythonパッケージを更新してください: 'ピップショーJinja2の 名:Jinja2の バージョン:2.6 要約:純粋なPythonで書かれた小さいが高速で使いやすいスタンドアロンのテンプレートエンジン。 ホーム・ページ:http://jinja.pocoo.org/ 著者:アーミンRonacher 著者 - 電子メール:[email protected] ライセンス:BSD 場所:/usr/lib/python2.7/ dist-packages 必須: ' まだ同じエラー – czopereq76

関連する問題