我试图写一个剧本,创建多个用户,但它不工作,当我把我的变量在一个列表的形式。
不适用行动手册
[root@ansible-master playbooks]# cat users_list_new.yml
---
users:
- username:
- amba
- ruchita
[root@ansible-master playbooks]# cat multi_users_new.yml
---
- name: Creating the multi users with a new approach
hosts: california
become: true
vars_files:
- users_list_new.yml
tasks:
- name: Create the user
user:
name: "{{ item.username[0] }}"
loop: "{{ users }}"
它只创建了第一个用户,因为我已经把下标0放在了用户模块中。我的问题是我们如何在用户名上创建一个循环。例如,我修改了我的剧本,但它不起作用
---
- name: Creating the multi users with a new approach
hosts: california
become: true
vars_files:
- users_list_new.yml
tasks:
- name: Create the user
user:
name: "{{ item }}"
loop: "{{ users.username }}"
当我运行行动手册时,它抛出了以下错误
PLAY [Creating the multi users with a new approach]********************************************************************************************************************
TASK [Gathering Facts]*************************************************************************************************************************************************
ok: [10.128.0.5]
TASK [Create the user]*************************************************************************************************************************************************
fatal: [10.128.0.5]: FAILED! => {"msg": "'list object' has no attribute 'username'"}
PLAY RECAP*************************************************************************************************************************************************************
10.128.0.5 : ok=1 changed=0 unreachable=0 failed=1 skipped=0 rescued=0 ignored=0
[root@ansible-master playbooks]#
请帮我想个办法
EDIT假设我想创建两个用户。变量声明的最佳实践是什么?
第一次接近
users:
- username:
- amba
- ruchita
- shell:
- /bin/bash
- /bin/ksh
第二种方法
users:
- username: amba
shell: /bin/bash
- username: ruchita
shell: /bin/bash
1条答案
按热度按时间wj8zmpe11#
您的问题是您的变量结构
users
包含一个列表而不是一个字典,因此您不能将username
作为它的键来访问,因为它是一个列表而不是一个字典。您需要以users[0]
的身份访问才能访问用户名列表。第一个
之前
之后