为什么 Ansible 不在剧本中为此列表单独获取每个值?



我设置了这个来更改密码。但是错误信息似乎不明白有一个循环在进行,或者它是一个列表。我的语法有什么问题吗?

剧本:

---
- hosts: localhost
vars:
uservar:
- 'testuser'
- 'testuser2'
- 'testuser'
newpassword:
'success'
become: yes
tasks:
- name: change user password
user:
name: "{{ uservar }}"
update_password: always
password: "{{ newpassword|password_hash('sha512') }}"
loop: "{{ uservar }}"

错误信息:

[WARNING]: The value ['testuser', 'testuser2', 'testuser'] (type list) in a string field was converted to u"['testuser', 'testuser2', 'testuser']" (typestring). If this does not look like what you expect, quote the entire value to ensure it does not change.
failed: [localhost] (item=testuser) => {"ansible_loop_var": "item", "changed": false, "item": "testuser", "msg": "useradd: invalid user name '['testuser', 'testuser2', 'testuser']'n", "name": "['testuser', 'testuser2', 'testuser']", "rc": 3}

您必须在name参数中使用item而不是uservar

---
- hosts: localhost
vars:
uservar:
- 'testuser'
- 'testuser2'
- 'testuser'
newpassword:
'success'
become: yes
tasks:
- name: change user password
user:
name: "{{ item }}"
update_password: always
password: "{{ newpassword|password_hash('sha512') }}"
loop: "{{ uservar }}"

最新更新