2017-06-13 78 views
0

我在我的手冊中有一個變量,它有許多用逗號分隔的值。在這一點上,我不確定變量是一個字符串還是一個列表。我相信從下面的輸出「[]」表示一個列表。有限變量操作

可變填充

-set_fact: 
    snap_master_01: "{{ ec2_snapshot_facts.snapshots | 
selectattr(tags.HostName, equalto, ICINGA2_MASTER_1.tag_value) | 
sort(attribute=start_time) | reverse | map(attribute=snapshot_id) | list }}" 

- name: Print snapshot ID's 
    debug: 
    msg: 
     - "{{ snap_master_01 }}"` 

Gives the following output: 

`TASK [Print snapshot ID's]  ******************************************************************************** *********************** 
task path: /home/r_ansible/playbooks/backup_aws.yml:252 
ok: [172.16.1.58] => { 
    "changed": false, 
    "msg": [ 
     [ 
      "snap-04c88ef6XXXXXXXXX", 
      "snap-0bd5785fXXXXXXXXX", 
      "snap-045e0f4bXXXXXXXXX", 
      "snap-055fda51XXXXXXXXX", 
      "snap-03759206XXXXXXXXX" 
     ] 
    ] 
}` 

我想刪除最後3個值。在Ansible中實現這一點的最佳方式是什麼?

回答

1

要在Ansible中操作列表,您可以使用Python slices

在你的情況snap_master_01[:-3]會給你除了最後三個元素。

+0

感謝您的幫助。 ' - name:用我們的COUNT變量剪下列表。 set_fact: snaps_cut:「{{snap_master_02 [COUNT:]}}」' – alexis

+0

感謝您的幫助。我嘗試了以下,但得到一個錯誤。 ' - name:用我們的COUNT變量剪下列表。 set_fact: snaps_cut:「{{snap_master_02 [COUNT:]}}」' 但我得到以下錯誤: 'fatal:[172.16.1.58]:FAILED! ({{[snap_master_02] [COUNT:]}}上發生意外的模板類型錯誤:slice索引必須是整數或無,或者有一個__index__方法「} 重試,請使用:--limit @/home/r_ansible/playbooks/backup_aws.retry' 對不起,我得到了5分鐘的超時時間,無法完成我最後的評論。 – alexis

+1

使用'[COUNT | int:]'。 –