Variables 条件语句中具有多个值的可解变量
我正在使用Ansible在我的环境中配置虚拟机,这非常有效,但我们目前正在修改剧本,根据使用Variables 条件语句中具有多个值的可解变量,variables,ansible,jinja2,Variables,Ansible,Jinja2,我正在使用Ansible在我的环境中配置虚拟机,这非常有效,但我们目前正在修改剧本,根据使用vmware\u guest模块将虚拟机放置在特定集群/数据存储中时指定的名称 我们的服务器名称如下所示。(P=生产,S=暂存,继续字符A=主要,B/C=次要等)。我们有相应的集群和数据存储,用于初级、次级、暂存等 p-WEB01-A P-WEB01-B S-WEB01-A S-WEB01-B 在剧本的开头,我们指定了一个名为vm\u name 使用when:语句,我试图按照下面的思路做一些事情 当:“'
vmware\u guest
模块将虚拟机放置在特定集群/数据存储中时指定的名称
我们的服务器名称如下所示。(P=生产,S=暂存,继续字符A=主要,B/C=次要等)。我们有相应的集群和数据存储,用于初级、次级、暂存等
p-WEB01-A
P-WEB01-B
S-WEB01-A
S-WEB01-B
在剧本的开头,我们指定了一个名为vm\u name
使用when:
语句,我试图按照下面的思路做一些事情
当:“'p-'in{vm_name}”和{vm_name}[-1]=”A”或{vm_name}[-1]=”1”或{vm_name}[-1]=”2”或{vm_name}[-1]=”3”或{vm u name}[-1]=”4”
但是为了看起来像这样,我想把它浓缩一下
当:“{vm_name}}”中的“p-”和“{vm_name}}[-1]=”A',1',2',3',4'
或
当“{vm_name}”和{vm_name}[-1]=”B”或{vm_name}[-1]=”C“
中的“'p-”看起来如下
当:“{vm_name}}”中的“p-”和“{vm_name}}[-1]='B','C'”
我只是不知道下面的方法是否有效,我在找到类似的情况时遇到了一些困难
也许有更好的方法来实现这一点,比如使用可变文件,或者在服务器启动后使用vmware\u vmotion
迁移服务器
问:为了看起来像这样,我想把它浓缩一下
A:下面的剧本
- hosts: localhost
vars:
my_hosts: ['P-WEB01-A', 'P-WEB01-B', 'S-WEB01-A', 'S-WEB01-B']
my_sufix: ['A', '1', '2', '3', '4']
tasks:
- debug:
msg: "[OK] {{ item }}"
loop: "{{ my_hosts }}"
when: item[0:2] == "P-" and item[-1] in my_sufix
给予
这就是你要找的吗?据我所知,你可以将支票压缩为
---
- hosts: all
gather_facts: no
vars:
- vm_name: "P-WEB01-1"
- vm_name1: "P-WEB01-B"
tasks:
- name: Check regex
debug:
msg: "Check 1 passed : {{ vm_name }}"
when: vm_name | regex_search("^P-.*-[A|1|2|3|4]")
- name: Check regex
debug:
msg: "Check 2 passed : {{ vm_name1 }}"
when: vm_name1 | regex_search("^P-.*-[B|C]")
我使用了regex_搜索过滤器来匹配vm_name的值
我为这两种情况都提供了正则表达式。这将非常有效。我真的很喜欢你把它们都存储在一个变量中并对照检查的方式。谢谢。这也会很好用的。我以后肯定会用这个。非常感谢。
ok: [localhost] => (item=P-WEB01-A) =>
msg: '[OK] P-WEB01-A'
skipping: [localhost] => (item=P-WEB01-B)
skipping: [localhost] => (item=S-WEB01-A)
skipping: [localhost] => (item=S-WEB01-B)
---
- hosts: all
gather_facts: no
vars:
- vm_name: "P-WEB01-1"
- vm_name1: "P-WEB01-B"
tasks:
- name: Check regex
debug:
msg: "Check 1 passed : {{ vm_name }}"
when: vm_name | regex_search("^P-.*-[A|1|2|3|4]")
- name: Check regex
debug:
msg: "Check 2 passed : {{ vm_name1 }}"
when: vm_name1 | regex_search("^P-.*-[B|C]")