首页 > 解决方案 > Ansible:如何使用字符串范围连接变量

问题描述

- hosts:all

  tasks:

  - name: set fact joing the variable and the range of strings
    set_fact:
        exclude_addrs: "{{ split_addr | join('.')[1-5] }}"
    delegate_to: localhost

在我的情况下 split_addr 是 10.0.0 并且我期望的输出是 10.0.0.1, 10.0.0.2, 10.0.0.3, 10.0.0.4, 10.0.0.5

标签: pythonansible

解决方案


您可以直接在您的变量中执行此操作,而无需运行任务。

这是我能想到的最快的例子:

---
- hosts: localhost
  gather_facts: false

  vars:
    split_addr: "10.0.0"
    range_length: 5
    exclude_addrs: >-
      {{
        range(1, range_length+1) |
        map('regex_replace', '([0-9]*)', split_addr + '.\1') |
        list
      }}

  tasks:
    - debug:
        var: exclude_addrs

可能的进一步阅读:


推荐阅读