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