So verwenden Sie die Liste, um Benutzer mit dieser Ansible-Rolle zu erstellen

So verwenden Sie die Liste, um Benutzer mit dieser Ansible-Rolle zu erstellen

Ich versuche, Ansible zu lernen, und habe mit einigen Rollen experimentiert, die ich auf Github gefunden habe, insbesondere mit dieser, die die Benutzererstellung zusammen mit Sudo-Regeln und der Bereitstellung von SSH-Schlüsseln automatisiert:

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

Ich habe alle vier abhängigen Rollen geklont und versuche, damit zwei oder mehr Verwaltungsbenutzer auf einem Testserver zu erstellen. Ich habe Probleme zu verstehen, wie ich weitere hinzuzufügende Benutzer auflisten kann:

  • Wenn ich die Datei defaults/main.yml der Verwaltungsrolle verwende, um weitere Benutzer unter management_user_settings aufzulisten, werden die Benutzer erstellt, aber ihre SSH-Schlüssel werden nicht bereitgestellt – sie werden bereitgestellt, wenn dort nur ein Benutzer vorhanden ist.
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
  • Ich habe versucht, Variablen in einem Playbook für diese Rolle aufzulisten, aber ich habe dasselbe Problem: Benutzer werden erstellt, aber ihr SSH-Schlüssel wird nicht bereitgestellt.

  • Ich habe auch versucht, eine Liste mit Variablen zu erstellen und den Befehl with_items: zu verwenden, aber ich bekomme es nicht zum Laufen.

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

Gibt es eine einfache Antwort darauf, wie Sie weitere Verwaltungsbenutzer mit dieser Rolle hinzufügen?

Antwort1

Q:„Gibt es eine einfache Antwort darauf, wie man weitere Verwaltungsbenutzer mit dieser Rolle hinzufügt?“

A: Ja. Eine Liste kann angehängt werden. Zum Beispiel

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

gibt

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

verwandte Informationen