我有一个创建用户的 ansible 任务,它不需要像下面这样指定 UID 类,而是需要从 (1000-1099) 之间的一个可用范围中进行选择,并且必须按顺序分配下一个可用的 UID,该怎么做?
- name: create user and group
user:
name: user
shell: /bin/bash
uid: 1000
comment: system Admin
答案1
with_sequences是您正在寻找的:
- name: create user and group
user:
name: user
shell: /bin/bash
uid: "{{ item }}"
comment: system Admin
with_sequence: start=1000 end=1099
答案2
没有任何用户目录,就没有用户名和 ID 的中央权限。(也许可以考虑在某些时候实现目录身份验证。)
在变量中维护用户及其 UID 的列表,必要时在 group_vars 或 host_vars 级别覆盖。对于一个组,可能abc
有一个 vars 文件group_vars/abc/users.yml
:
---
users:
- uid: 1000
name: user
comment: "system Admin"
- uid: 1001
name: alice
comment: "Alice Alvin"
- uid: 1002
name: beth
comment: "Beth Biorn"
- uid: 1003
name: Chris
comment: "Chris Civers"
这个任务看起来是这样的:
---
- name: create users
loop: "{{ users }}"
user:
name: "{{ item.name }}"
shell: /bin/bash
uid: "{{ item.uid }}"
comment: "{{ item.comment }}"
为了使此剧本适合您的目的,还需完成以下几项任务:
- 列出群组列表并以类似的方式创建它们。
users
为具有冲突的 GID 或 UID 的组创建 var 覆盖。