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以上の数値でこれを決定する方法は、条件付きの2つの異なるリソースを持つことです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" }

関連情報