省略ansible基于变量的参数

省略ansible基于变量的参数

我想用 ansible 维护用户。我使用user模块,但我想要一些非唯一的用户 ID。现在我有一本这样的字典:

users:
    user: { password: "HASH", shell: "/bin/zsh", home: "/home/user", uid: -1, non-unique: "no" }
    userroot: { password: "HASH1", shell: "/bin/zsh", home: "/home/userroot", uid: 0, non-unique: "yes" }

我正在创建这样的用户:

- name: Create users
  user: name={{ item.key }} createhome=yes shell={{ item.value.shell }} password={{ item.value.password }} home="{{ item.value.home }}" append=yes state=present 
  with_dict: "{{users}}"

问题是如何添加一个逻辑,uid当参数设置为大于或等于 0 的值时,该逻辑将指定该参数?

答案1

我认为如何通过大于/等于 uid 数来决定这一点的唯一方法是拥有两个带有条件的不同资源when

但如果你不需要uid: -1,这样的东西也可以工作。只需删除用户变量中的uid和值即可:non_unique

- name: Create users
    user:
      name={{ item.key }}
      createhome=yes
      shell={{ item.value.shell }}
      password={{ item.value.password }}
      home="{{ item.value.home }}"
      append=yes
      state=present
      uid="{{ item.value.uid | default(omit) }}"
      non_unique="{{ item.value.non_unique | default('no') }}" 
    with_dict: "{{users}}"

并且在普通用户中不要使用 uid 和 non_unique (注意这个变量,必须有_代替):-

user: { password: "HASH", shell: "/bin/zsh", home: "/home/user" }
userroot: { password: "HASH1", shell: "/bin/zsh", home: "/home/userroot", uid: 0, non_unique: "yes" }

相关内容