我有一个可靠的列表变量
- sites:
- x.domain.com.ex
- y.domain.com.ex
- z.domain.com.ex
我需要做两个变量,如下所示:第一级列表xyz而另一个域名只有域名"的其余部分;domain.com.ex";
非常感谢您的帮助,谢谢。
例如,将以下声明放入vars
hostnames: "{{ sites|map('split', '.')|
map('first')|list }}"
domains: "{{ sites|map('reverse')|
map('splitext')|
map('first')|
map('reverse')|list }}"
给出(节略(
hostnames:
- x
- y
- z
domains:
- domain.com.ex
- domain.com.ex
- domain.com.ex
测试的完整剧本示例
- hosts: localhost
vars:
sites:
- x.domain.com.ex
- y.domain.com.ex
- z.domain.com.ex
hostnames: "{{ sites|map('split', '.')|
map('first')|list }}"
domains: "{{ sites|map('reverse')|
map('splitext')|
map('first')|
map('reverse')|list }}"
tasks:
- debug:
var: hostnames
- debug:
var: domains
Q:";我需要第二个变量">
A: 使用Python切片。例如,拆分并展平所有项目
s: "{{ sites|map('split', '.')|flatten }}"
给出
s:
- x
- domain
- com
- ex
- y
- domain
- com
- ex
- z
- domain
- com
- ex
然后,选择第二个变量,步骤为4
sites_1: "{{ s[1::4] }}"
给出
sites_1:
- domain
- domain
- domain
通过这种方式,您可以创建任何您想要的组合。例如,
sites_domns: "{{ s[1::4]|zip(s[2::4])|zip(s[3::4])|
map('flatten')|map('join', '.')|list }}"
给出
sites_domns:
- domain.com.ex
- domain.com.ex
- domain.com.ex
请参见了解切片。