我目前正在安装安装了ansible的主机。我创建了2个带有nologin的组的应用程序帐户,并且在该组中我想添加用户,以便每个部门都有自己的ansible目录。
我的vars如下所示:
---
- hosts: localhost
become: yes
vars:
ansible_groupuser:
- name: "ansible-dictators"
ansible_groupuser_uid: "3000"
ansible_users:
- idia
- josefs
- donaldt
- kimjongu
- name: "ansible-druglords"
ansible_groupuser_uid: "3001"
ansible_users:
- pabloe
- javierg
- frankl
- rossu
现在我有2场比赛。 1创建Groupuser:
# This creates the groupuser
- name: Play 1 Create central ansible user and group per department
user:
name: "{{ item.name }}"
shell: "/sbin/nologin"
home: "/home/{{ item.name }}"
comment: "{{ item.name }} Group Account"
uid: "{{ item.ansible_groupuser_uid }}"
append: "yes"
with_items:
- "{{ansible_groupuser}}"
和1创建“普通”用户:
- name: Play 2 Create users
user:
name: "{{ item.1 }}"
shell: "/bin/bash"
home: "/home/{{ item.1 }}"
comment: "{{ item.1 }}"
groups: "{{ item.0.name }}"
append: "yes"
with_subelements:
- "{{ ansible_groupuser }}"
- ansible_users
如果我运行这个游戏,它会在3000上创建groupuser ansible-dictators,在3001上创建ansible-druglords .idia获得3002,josefs获得3003等等。当我想添加像ansible-rockstars这样的第3组用户时,它会变得有点混乱,它开始计算在第一个可用的uid,3010。我想要的是将组用户和普通用户放在两个不同的范围内(例如2000和3000)
当我在第一场比赛中执行with_together时,如下所示,它可以工作:
- name: Play1 Create central ansible user and group per department
user:
name: "{{ item.0.name }}"
shell: "/sbin/nologin"
home: "/home/{{ item.0.name }}"
comment: "{{ item.0.name }} Group Account"
uid: "{{ item.1 }}"
append: "yes"
with_together:
- "{{ansible_groupuser}}"
- "{{ range(3000,3020)|list }}"
when: item.0 != None
但是当我在第二场比赛中执行with_together时,它不起作用:
- name: Create users
user:
name: "{{ item.1 }}"
shell: "/bin/bash"
home: "/home/{{ item.1 }}"
comment: "{{ item.1 }}"
groups: "{{ item.0.name }}"
append: "yes"
uid: "{{ item.2 }}"
with_together:
- "{{ ansible_groupuser }}"
- ansible_users
- "{{ range(2000,2020)|list }}"
任何人都有一个建议如何在一定范围内使用uid进行第二次游戏?或者另一个建议如何让uid在不同的组中?给团体用户一个在vars中的uid是没问题的。但我期待很多“普通”用户添加(+50),我不想为所有这些用户指定一个uid。
希望它有意义。提前谢谢。
答案 0 :(得分:0)
我认为range(...)
方法有一个缺陷:如果您将来从列表中删除某些用户,后续条目的ID将会更改,您最终可能会在系统上获得混乱的文件权限。
您可以修补user
模块以支持基础--firstuid
命令的--lastuid
/ adduser
参数,因此您可以为uid生成设置不同的范围。
但我建议你定义"静态"您的vars文件中的顶级用户的uid(来自某些预定义范围,例如:3000..30xx
) - 这样您就可以在将来安全地添加/删除顶级用户/组。
离开"普通"用户自动获取ID,因此添加/删除它们不会弄乱您的ID。如果您希望他们来自某个特定范围,您可以使用/etc/adduser.conf
/ FIRST_UID=5000
修改系统级LAST_UID=6000
。