リストを使用してこの Ansible ロールを持つユーザーを作成する方法

リストを使用してこの Ansible ロールを持つユーザーを作成する方法

私は Ansible を学ぼうとしており、Github で見つけたいくつかのロール、具体的には sudo ルールと SSH キーのデプロイメントとともにユーザーの作成を自動化するロールを試しています。

https://github.com/GROG/ansible-role-management-user

依存関係にある 4 つのロールをすべて複製し、それを使用してテスト サーバーに 2 人以上の管理ユーザーを作成しようとしています。追加するユーザーをさらにリストする方法がわかりません。

  • 管理ロールの defaults/main.yml ファイルを使用して、management_user_settings の下にさらにユーザーをリストすると、ユーザーは作成されますが、SSH キーはデプロイされません。ユーザーが 1 人だけの場合は、SSH キーがデプロイされます。
management_user_settings:
  - name: usr1
    state: present
    comment: user1 mykiy
    shell: '/bin/bash'
    authorized_keys:
      - key: "{{ lookup('file', '~/.ssh/id_rsa.pub') }}"
        exclusive: no
    sudo:
      hosts: ALL
      as: ALL
      commands: ALL
      nopasswd: yes

  - name: usr2
    comment: user2 otherkiy
    shell: '/bin/bash'
    authorized_keys:
      - key: "{{ lookup('file', '/home/user/SSH/user.name/id_rsa.pub') }}"
        exclusive: no
    sudo:
      hosts: ALL
      as: ORACLE
      commands: ALL
      nopasswd: yes
  • このロールのプレイブックに変数をリストしようとしましたが、同じ問題が発生します。ユーザーは作成されますが、SSH キーはデプロイされません。

  • 変数を含むリストを作成し、with_items: コマンドを使用しようとしましたが、うまくいきませんでした。

---
- hosts: all
  user: root
  vars:
    user_list:
          name: "{{ item.name }}"
          comment: "{{ item.comment }}"
          shell: '/bin/bash'
          uid: "{{ item.uid }}"
          groups: "{{ item.groups }}"
          password: "{{ item.password }}"
          state: "{{ item.state }}"
          authorized_keys:
            - key: "{{ item.key }}"
          sudo: "{{ item.sudo }}"

    management_user_key: "{{ lookup('file', '~/.ssh/id_rsa.pub') }}"

    management_user_settings:
      - "{{ user_list }}"

    management_user_list:
      - "{{ management_user_settings }}"

    management_user_list_host: []
    management_user_list_group: []

    sudo_root:
            hosts: ALL
            as: ALL
            commands: ALL
            nopasswd: yes

    sudo_oracle:
            hosts: ALL
            as: ORACLE
            commands: ALL
            nopasswd: yes

  roles:
    - role: user-role-management
      with_items:
        - { name: abc1, comment: "a user", uid: 1300, password: somepw, state: present, key: "{{ lookup('file', '/home/user/SSH/user.name/id_rsa.pub') }}", sudo: "{{ sudo.root }}" }
        - { name: abc2, comment: "b user", state: present, key: "{{ management_user_key }}", sudo: "{{ sudo.oracle }}" }

この役割を持つ管理ユーザーをさらに追加する方法についての簡単な答えはありますか?

答え1

質問:「この役割を持つ管理ユーザーをさらに追加する方法についての簡単な答えはありますか?」

A: はい。リストを追加できます。例えば

- hosts: localhost
  vars:
    my_list: [a, b, c]
    list1: [x, y]
  tasks:
    - set_fact:
        my_list: "{{ my_list + list1 }}"
    - debug:
        var: my_list

与える

    "my_list": [
        "a", 
        "b", 
        "c", 
        "x", 
        "y"
    ]

関連情報