Ansible:如何在一定范围内创建uid



我目前正在安装安装的主机上工作。我已经创建了与Nologin的组一起创建了2个应用程序帐户,在该组中,我想添加用户,以便每个部门都有自己的Ansible目录。

我的var看起来像下面:

---
- 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创建组用户:

# 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和3001上的3000和Ansible-druglords上创建groupuser ansible-dictators。,它开始在第一个可用的UID(3010(开始计数。我想要的是将群体用户和普通用户放在2个不同的范围内(例如2000和3000(

当我在第一部比赛中使用_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

但是,当我在第二次戏中使用_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分为不同的组?在VAR中给分组者一个UID是没有问题的。但是我希望有很多"常见"用户添加( 50(,我不想为所有这些用户指定一个UID。

希望这是有道理的。预先感谢。

我认为range(...)方法有一个缺陷:如果将来将某些用户从列表中删除,那么后续条目的ID将会更改,您最终可以在系统上获得混乱的文件权限。

您可以修补user模块以支持--firstuid/--lastuid基础adduser命令的参数,因此您可以为UID生成设置不同的范围。

但我建议您为vars文件中的顶级用户定义"静态" UID(来自某些预定范围的范围,例如:3000..30xx( - 这样,您可以在未来。

并留下"通用"用户自动获取其ID,因此添加/删除它们不会弄乱您的ID。如果您希望它们来自某些特定范围,则可以使用FIRST_UID=5000/LAST_UID=6000

修改系统范围的/etc/adduser.conf

相关内容

  • 没有找到相关文章

最新更新