Ansible

基於變數省略ansible的參數

  • November 10, 2016

我想用 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 時將指定參數?

我認為如何通過大於/等於 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" }

引用自:https://unix.stackexchange.com/questions/322304