ansible playbook无法使用正则表达式
我使用的是ansible 2.7版。我在练习一项任务,其中我必须添加用户名和uid存储在名为/home/automation/plays/vars/user_list.yml的var文件中的用户,并且密码存储在secrets.yml中,内容正确。我也可以用with_项从中添加用户,但根据任务的下一个要求,我需要在指定的主机组上添加uid stats为1*的用户,该主机组使用“group_names”调用,我尝试匹配regex,但出现错误 我的要求是将udi以^1开头的用户添加到主机组“webserver” 我使用过解释性UID,例如1201/1201,它可以工作,但不能与正则表达式一起工作ansible playbook无法使用正则表达式,ansible,Ansible,我使用的是ansible 2.7版。我在练习一项任务,其中我必须添加用户名和uid存储在名为/home/automation/plays/vars/user_list.yml的var文件中的用户,并且密码存储在secrets.yml中,内容正确。我也可以用with_项从中添加用户,但根据任务的下一个要求,我需要在指定的主机组上添加uid stats为1*的用户,该主机组使用“group_names”调用,我尝试匹配regex,但出现错误 我的要求是将udi以^1开头的用户添加到主机组“webse
- hosts: all
become: yes
gather_facts: no
vars_files:
- /home/automation/plays/vars/user_list.yml
- secrets.yml
tasks:
- debug:
msg: "{{users | type_debug}},{{user_password}}"
with_items: "{{ users }}"
- name: Adding Users to webserver groupwith List
user:
name: "{{item.username}}"
uid: "{{item.uid}}"
state: absent
remove: yes
password: "{{ user_password }}"
shell: /bin/bash
groups: wheel
generate_ssh_key: yes
ssh_key_bits: 2048
ssh_key_file: .ssh/id_rsa
when: item.uid is regex("1.*")
with_items: "{{users}}"
假设已经创建了用户,并且 “
要求将uid以“1”开头的用户添加到组“webserver”
”
下面的任务完成了这项工作
- name: Adding users to webserver group
user:
name: "{{ item.username }}"
groups: webserver
loop: "{{ users }}"
when: item.uid|string|first == '1'
Regex
1) 以下条件是等效条件
when: item.uid|string is match('^1.*$')
2) 要匹配用户“,其中userid以5结尾,请使用
,没有对regex
过滤器的引用。它只出现在中,因此我假设它是该版本的新添加
根据同一文档,regex(“1.*”)
将不匹配以“1”开头的UID,而是所有包含“1”的UID。您将希望使用match(“1.*”)
,这应该与您的Ansible版本配合使用。用于此任务
tasks:
- name: Create users
user:
name: "{{ item.username }}"
group: wheel
password: "{{ user_password | password_hash('sha512') }}"
shell: /bin/bash
update_password: on_create
with_items: "{{ users }}"
when:
- ansible_fqdn in groups['webservers']
- "item.uid|string|first == '1'"
谢谢Vladimir,但我最初的问题是关于regex的使用,在这个例子中如何使用它,比如我还有一个任务,其中userid以5结尾,这是怎么回事!感谢第行下方的Vladimir帮助mywhen:(“组名称和项.uid”中的“Web服务器”是搜索(^1.*))感谢第行下方的@kevin为我工作过我们需要在求值之前将变量转换为字符串When:(“组名称和项.uid”中的“Web服务器”是搜索(^1.*))
when: item.uid|string is match('^.*5$')
tasks:
- name: Create users
user:
name: "{{ item.username }}"
group: wheel
password: "{{ user_password | password_hash('sha512') }}"
shell: /bin/bash
update_password: on_create
with_items: "{{ users }}"
when:
- ansible_fqdn in groups['webservers']
- "item.uid|string|first == '1'"