带有with_items的可玩剧本循环

问题描述 投票:0回答:2

我必须使用ansible剧本用很少的行/命令来更新sudoers.d多个用户文件

users.yml

user1:
   - Line1111
   - Line2222
   - Line3333

user2:
   - Line4444
   - Line5555
   - Line6666

main.yml

- hosts: "{{ host_group }}"
  vars_files:
    - ../users.yml

  tasks:

       - name: Add user "user1" to sudoers.d
      lineinfile:
        path: /etc/sudoers.d/user1
        line: '{{ item }}'
        state: present
        mode: 0440
        create: yes
        validate: 'visudo -cf %s'
      with_items:
          - "{{ user1 }}"

以上仅对用户1有效。

如果我还想包含user2->如何更改文件名:路径:/etc/sudoers.d/user1

我尝试了以下及其无效

在运行时将以下用户作为变量传递给main.yml

users:
   - "user1"
   - "user2"



- name: Add user "{{users}}" to sudoers.d
  lineinfile:
    path: /etc/sudoers.d/{{users}}
    line: '{{ item }}'
    state: present
    mode: 0440
    create: yes
    validate: 'visudo -cf %s'
  with_items:
      - "{{ users }}"

所以,基本上我想将用户作为user1和user2传递给变量{{users}},并希望使用users.yml中每个用户的行并将其添加到相应的用户文件(/etc/sudoers.d / user1和/etc/sudoers.d/user2)。

所以/etc/sudoers.d/user1应该类似于

Line1111
Line2222
Line3333

和/etc/sudoers.d/user2应该看起来像

Line4444
Line5555
Line6666
linux ansible ansible-2.x sudoers
2个回答
0
投票
尝试添加引号:

0
投票
cat users.yml --- users: - user1: filename: user1sudoers args: - Line1111 - Line2222 - Line3333 - user2: filename: user2sudoers args: - Line4444 - Line5555 - Line6666
© www.soinside.com 2019 - 2024. All rights reserved.