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" }

관련 정보