Ansible Bootstrap: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
Zeile 54: Zeile 54:
 
=== Hinterlegen des öffentlichen SSH-Keys ===
 
=== Hinterlegen des öffentlichen SSH-Keys ===
  
* cat bootstrap.yml
+
* vim bootstrap.yml
  
 
<!----->
 
<!----->
Zeile 71: Zeile 71:
  
 
<!----->
 
<!----->
<span id="playbook"></span>
+
<span id="pakete-installieren"></span>
= Playbook =
+
== Pakete installieren ==
  
* cat bootstrap.yml
+
* vim bootstrap.yml
  
 
<!----->
 
<!----->
  ---
+
  ...
  - name: Grundlegende Einrichtung der Hosts
+
  - name: Installiere vim und sudo
  hosts: all
 
 
   become: true
 
   become: true
   tasks:
+
   package:
     - name: Füge Benutzer xinux zur Gruppe sudo hinzu
+
     name: "{{ item }}"
      user:
+
    state: present
        name: xinux
+
  with_items:
        groups: sudo
+
    - vim
        append: true
+
    - sudo
    - name: Hinterlege SSH publickey bei den Benutzern xinux und root
+
* ansible-playbook bootstrap.yml –become-method=su -K
      authorized_key:
+
 
        user: "{{ item }}"
+
<!----->
        state: present
+
<span id="passwortlos-zum-benutzer-root-werden"></span>
        key: "{{ lookup('file', '/path/to/public_key') }}"
+
== Passwortlos zum Benutzer root werden ==
      with_items:
+
 
        - xinux
+
* Wir haben vorher das Paket sudo installiert, welches die Standard Become-Methode ist
        - root
+
* In dessen Konfigurationsdatei kann man einstellen, dass für bestimmte Gruppe die Anmeldung passwortlos sein soll
<span id="ausführen"></span>
+
* Dazu die folgenden zwei Schritte
= Ausführen =
+
 
 +
<!----->
 +
<span id="etcsudoers-bearbeiten"></span>
 +
=== /etc/sudoers bearbeiten ===
 +
 
 +
* vim bootstrap.yml
  
* ansible-playbook bootstrap.yml
+
<!----->
 +
...
 +
- name: Sicherstellen, dass die Gruppe sudo existiert
 +
  become: true
 +
  group:
 +
    name: sudo
 +
    state: present
 +
 +
- name: Erlaube der Gruppe sudo passwortloses Login
 +
  become: true
 +
  lineinfile:
 +
    dest: /etc/sudoers
 +
    state: present
 +
    regexp: '^%sudo'
 +
    line: '%sudo ALL=(ALL) NOPASSWD: ALL'
 +
    validate: /usr/sbin/visudo -cf %s
 +
 +
- name: Füge Benutzer xinux zur Gruppe sudo hinzu
 +
  become: true
 +
  user:
 +
    name: xinux
 +
    groups: sudo
 +
    append: true
 +
* ansible-playbook bootstrap.yml –become-method=su -K

Version vom 13. Februar 2023, 11:50 Uhr

Vorbereitung

Man kann als unpriviligierter Benutzer Ansible benutzen. Dazu erstellen wir erstmal einen Arbeitordner im Home-Verzeichnis.

  • cd ~
  • mkdir ansible

Ansible-Konfigurationsdateien

ansible.cfg

  • Hier schaut Ansible nach Dateien wie:
    • die Liste der Hosts
    • Playbook-Verzeichnisse
    • Standard Remote-User
    • etc.
  • cat ansible.cfg
[defaults]
inventory = inventory
remote_user = xinux

inventory

  • diese Datei enthält die zu administrierenden Hosts
  • man kann diese in Gruppen einteilen und bestimmte Variablen (SSH-Passwort, Python-Interpreter, Become-Methode…) zuordnen
  • cat inventory
[debian]
10.81.3.10

Erreichbarkeitstest

  • ansible -m gather_facts debian -k

Bootstrap

Passwortloses Login

Erstellen von SSH-Keys

  • ssh-keygen

Hinterlegen des öffentlichen SSH-Keys

  • vim bootstrap.yml
---
- name: Bootstrap eines einzelnen Hosts
  hosts: debian
  tasks:
    - name: Hinterlege SSH-Key
      authorized_key:
        user: xinux
        state: present
        key: "{{ lookup('file', '~/.ssh/id_rsa.pub') }}"
  • ansible-playbook bootstrap.yml -k
  • Jetzt sollte kein Passwort notwendig sein
  • ansible -m gather_facts debian

Pakete installieren

  • vim bootstrap.yml
...
- name: Installiere vim und sudo
  become: true
  package:
    name: "Vorlage:Item"
    state: present
  with_items:
    - vim
    - sudo
  • ansible-playbook bootstrap.yml –become-method=su -K

Passwortlos zum Benutzer root werden

  • Wir haben vorher das Paket sudo installiert, welches die Standard Become-Methode ist
  • In dessen Konfigurationsdatei kann man einstellen, dass für bestimmte Gruppe die Anmeldung passwortlos sein soll
  • Dazu die folgenden zwei Schritte

/etc/sudoers bearbeiten

  • vim bootstrap.yml
...
- name: Sicherstellen, dass die Gruppe sudo existiert
  become: true
  group:
    name: sudo
    state: present

- name: Erlaube der Gruppe sudo passwortloses Login
  become: true
  lineinfile:
    dest: /etc/sudoers
    state: present
    regexp: '^%sudo'
    line: '%sudo ALL=(ALL) NOPASSWD: ALL'
    validate: /usr/sbin/visudo -cf %s

- name: Füge Benutzer xinux zur Gruppe sudo hinzu
  become: true
  user:
    name: xinux
    groups: sudo
    append: true
  • ansible-playbook bootstrap.yml –become-method=su -K