Ansible如何遍历列表并拆分,将结果赋值给新列表
Ansible 域名列表拆分解决方案
生成一级域名前缀列表
使用Ansible的map和split过滤器,对每个域名按.分割后取第一个元素,最终转换为列表:
prefixes: "{{ sites | map('split', '.') | map('first') | list }}"
执行后会得到:['x', 'y', 'z']
生成剩余域名部分的单元素列表
由于所有域名的剩余后缀一致,只需取第一个域名拆分后去掉前缀部分,再拼接为字符串并放入列表:
domain_suffixes: "{{ [ sites[0] | split('.') | slice(1) | flatten | join('.') ] }}"
执行后会得到:['domain.com.ex']
完整示例Playbook
--- - name: 拆分域名变量 hosts: localhost vars: sites: - x.domain.com.ex - y.domain.com.ex - z.domain.com.ex prefixes: "{{ sites | map('split', '.') | map('first') | list }}" domain_suffixes: "{{ [ sites[0] | split('.') | slice(1) | flatten | join('.') ] }}" tasks: - name: 输出前缀列表 debug: var: prefixes - name: 输出域名后缀列表 debug: var: domain_suffixes
内容的提问来源于stack exchange,提问作者Khaled Abouelneil
相关产品推荐
相关产品推荐

