首先要做的事情 - 我不是一个Ansible wiz,我想有更好的方法可以做到这一点,但这就是我设法做到这一点的方法。 我需要在Linux服务器上创建用户,我使用它来从文件中读取用户参数并使用' with_items'创建所有用户参数。
这很有效。
我想添加一个选项,只从列表中创建一个用户。
这是我的yml脚本:
---
- hosts: all
user: deploy
become: yes
tasks:
- include_vars: ../variables/users.yml
# - command: echo {{ Guser }}
- debug: msg={{ users }}
- name: Create DevOps team users
user: name={{ item.username }} shell=/bin/bash createhome=yes comment='Created by Ansi' groups={{ item.use_sudo }} uid={{ item.use_uid }} group={{ item.use_group }} state=present
ignore_errors: yes
with_items:
- '{{ Guser }}'
when: Guser is defined
这就是我运行它的方式:
ansible-playbook --extra-vars "Guser=gilil2" -l myserver /home/devops/roles/create-users/tasks/create_user_by_name.yml -u deploy
从我的variables / users.yml
剪断---
users:
- username: gilil
use_sudo:
use_uid: 2005
use_group: users
- username: gilil2
use_sudo:
use_uid: 1010
use_group: users
- username: gilil3
use_sudo:
use_uid: 1011
use_group: users
答案 0 :(得分:0)
使用selectattr
Jinja2过滤器:
- name: Create DevOps team users
user: name={{ item.username }} shell=/bin/bash createhome=yes comment='Created by Ansi' groups={{ item.use_sudo }} uid={{ item.use_uid }} group={{ item.use_group }} state=present
ignore_errors: yes
with_items: "{{ users | selectattr('username','equalto',Guser|default('uknown')) | list }}"
这会将原始users
列表缩减为username
属性等于Guser
vars'值的元素列表,或unknown
如果Guser
未定义。我假设没有用户使用uknown
用户名,因此在这种情况下selectattr
可以生成空列表。