Назад | Перейти на главную страницу

ansible запускает только один из списка with_item, ограниченного тегами

Я импортирую роль usercreate в роль приложения с целью установки пользователя приложения только из роли usercreate. У меня проблемы с ограничением роли usercreate только для создания пользователя приложения. при импорте он запускает всех общих пользователей, определенных в / vars / users.yml.

дерево:

└── roles
    ├── application-role
    |   └── tasks
    |       ├── main.yml
    |       └── application.yml
    └── common
        ├── defaults
        │   └── main.yml
        ├── tasks
        │   ├── main.yml
        │   └── usercreation.yml
        └── vars
            ├── main.yml
            └── users.yml

задача приложения:

- name: create applicationuser from commonrole
  become: yes
  include_role:
    name: common
    tasks_from: usercreation.yml
    vars_from: users.yml
    public: yes
    apply:
      tags: present-test
  vars:
    username: applicationuser
  tags: usertest1

и обычная задача usercreate:

 - include_vars: users.yml
   tags: present-test

 - name: Create users
   become: yes
   user:
     name: "{{ item.username }}"
     shell: "{{ item.shell }}"
     groups: "{{ item.groups }}"
     createhome: yes
     comment: "{{ item.comment }}"
     password: "{{ item.OSpass }}"
     uid: "{{ item.uid }}"
     state: "{{ item.status }}"
   with_items:
     "{{ users }}"
   tags: present-test

и, наконец, users.yml

users:
  - username: applicationuser
    comment: "ansible test user 2 "
    shell: "/bin/bash"
    profile: prod
    uid: "599"
    dev: no
    key: "ssh-rsa AAAAAxxXXxxXX666666666XX66X"
    groups: "wheel"
    OSpass: "$6$9rywWxjz4XFDxQ2H$mb1qvD1dGe.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxHSrcwfCmqa438WqEqg/eV/IY3KjRjBty56spCOUsxfNH/"
    status: present

  - username: otheruser
...

при запуске он создает всех пользователей в vars / users.yml, полностью игнорируя мои vars: ограничение

Я хотел бы создать только applicationuser.

Это выполнимо?

Вы определили свое «имя пользователя», но на самом деле ничего не делаете с этой переменной.

Возможно, вы намеревались добавить «когда» или что-то в этом роде? Возможно, что-то вроде этого?

 - name: Create users
   become: yes
   user:
     name: "{{ item.username }}"
     shell: "{{ item.shell }}"
     groups: "{{ item.groups }}"
     createhome: yes
     comment: "{{ item.comment }}"
     password: "{{ item.OSpass }}"
     uid: "{{ item.uid }}"
     state: "{{ item.status }}"
   with_items:
     "{{ users }}"
   tags: present-test
   when: username == item.username