Ansible-Kurs September 2024 @Heinlein - Musterlösungen
Find a file
2024-09-20 15:58:25 +02:00
01 Kapitel 01 2024-09-16 13:54:23 +02:00
02 Kapitel 02: Playbooks und YAML 2024-09-16 13:54:35 +02:00
03 Kapitel 03: SSH 2024-09-16 16:12:20 +02:00
04 Kapitel 04: Inventory 2024-09-17 10:34:44 +02:00
05 Kapitel 05: Chrony mit Variablen 2024-09-17 13:08:46 +02:00
06 Kapitel 06: Role-Dependencies 2024-09-17 16:22:10 +02:00
07 Kapitel 07: Jinja / Dokuwiki 2024-09-18 09:00:52 +02:00
08 Kapitel 08: Conditionals, Register 2024-09-18 14:10:22 +02:00
09 Kapitel 09: monitored 2024-09-18 14:30:25 +02:00
10 Kapitel 10: Vault 2024-09-19 11:03:23 +02:00
11 Kapitel 11: Web-Cluster 2024-09-19 12:48:45 +02:00
12 Kapitel 12: Rest 2024-09-20 15:57:42 +02:00
group_vars Kapitel 11: Variablen korrigiert 2024-09-19 14:06:00 +02:00
host_vars EPEL/Oracle7 braucht anderen Mirror 2024-09-20 15:58:25 +02:00
inventory Kapitel 12: Rest 2024-09-20 15:57:42 +02:00
inventory-scripts Kapitel 12: Rest 2024-09-20 15:57:42 +02:00
plugins Kapitel 12: Rest 2024-09-20 15:57:42 +02:00
roles Kapitel 10: Ablauf allgemein 2024-09-19 10:08:52 +02:00
roles.extern Kapitel 12: group_by 2024-09-19 15:00:30 +02:00
roles.webcluster@ad984d6648 Kapitel 11: Web-Cluster 2024-09-19 12:48:45 +02:00
.gitignore .gitignore 2024-09-17 14:44:03 +02:00
.gitmodules Kapitel 12: group_by 2024-09-19 15:00:30 +02:00
ansible.cfg Kapitel 12: Fact caching 2024-09-19 15:12:23 +02:00
hosts.ini Kapitel 11: Web-Cluster 2024-09-19 12:48:45 +02:00
README.md README: git 2024-09-17 15:36:24 +02:00

Ansible-Kurs 2024-09

Zuordnung

  • tn01-purple.heinlein-akademie.de Sebastian B.
  • tn02-purple.heinlein-akademie.de Linus C.
  • tn03-purple.heinlein-akademie.de Benjamin H.
  • tn04-purple.heinlein-akademie.de Johanna H.
  • tn05-purple.heinlein-akademie.de Jonas K.
  • tn06-purple.heinlein-akademie.de Sven S.
  • tn07-purple.heinlein-akademie.de Stefan Sch.

Allgemein

root-Rechte

Der Benutzer kurs ist in den sudo-Einstellungen (ohne Passwort-Eingabe) hinterlegt.

Ihr könnt also sudo -Es, sudo -i, sudo su -, ... oder natürlich auch sudo apt install ... usw. verwenden!

Debian

Paketmanager Kurzeinführung

  • Index-Files aktualisieren: (sudo) apt(-get) update
  • Pakete suchen (alle Begriffe!): apt-cache search ansible lint
  • Pakete installieren: (sudo) apt(-get) install ansible-lint

Standard-Editor anpassen

root@tn00-purple:~# update-alternatives --config editor
There are 8 choices for the alternative editor (providing /usr/bin/editor).

  Selection    Path                Priority   Status
------------------------------------------------------------
* 0            /usr/bin/joe         70        auto mode
  1            /bin/nano            40        manual mode
  2            /usr/bin/jmacs       50        manual mode
  3            /usr/bin/joe         70        manual mode
  4            /usr/bin/jpico       50        manual mode
  5            /usr/bin/jstar       50        manual mode
  6            /usr/bin/rjoe        25        manual mode
  7            /usr/bin/vim.basic   30        manual mode
  8            /usr/bin/vim.tiny    15        manual mode

Press <enter> to keep the current choice[*], or type selection number: 8
[...]
root@tn00-purple:~# ls -l /etc/alternatives/editor /etc/alternatives/vim
lrwxrwxrwx 1 root root 18 Nov 22 09:09 /etc/alternatives/editor -> /usr/bin/vim.basic
lrwxrwxrwx 1 root root 18 Aug 17 21:58 /etc/alternatives/vim -> /usr/bin/vim.basic

SSH-Agent

SSH-Agent in einer Sitzung starten

kurs@tn00-purple:~# eval $(ssh-agent)
Agent pid 2720104

SSH-Key am Agent registrieren

kurs@tn00-purple:~# ssh-add
Enter passphrase for /home/svelt/.ssh/id_ed25519:

Ein SSH-Agent in mehreren SSH-Verbindungen

  1. SSH-Agent starten
kurs@tn00-purple:~# eval $(ssh-agent | tee ~/.ssh-agent.sh)
SSH_AUTH_SOCK=/tmp/ssh-r4RVMmRg9KAR/agent.2720217; export SSH_AUTH_SOCK;
SSH_AGENT_PID=2720218; export SSH_AGENT_PID;
echo Agent pid 2720218;
Agent pid 2720218;
  1. In jeder weiteren SSH-Verbindung auf die VM (per copy&paste):
  • Kann für weitere Verbindungen auch später gemacht werden
kurs@tn00-purple:~# source ~/.ssh-agent.sh
Agent pid 2720218;
  1. Verbindung zum SSH-Agent mit ssh-add -l testen
  • "Could not connect to agent" -> Agent läuft nicht und/oder Variablen nicht gesetzt
  • "This agent has no identities" -> Verbindung zum Agent geht, Agent hat aber keine Keys
  • Key -> Verbindung zum Agent geht, Key(s) registriert und verfügbar (4. überflüssig)
  1. SSH-Key registrieren
  • nur einmal nötig
  • Variablen via Script aus 2. Schritt müssen gesetzt sein
kurs@tn00-purple:~# ssh-add

Damit könnt Ihr dann den einen Agent in allen SSH-Verbindungen zur VM nutzen.

Alternative: Keychain

Voraussetzung: SSH-Key existiert, liegt unter (beliebigem) Namen unter ~/.ssh/

  1. Keychain installieren
kurs@tn00-purple:~$ apt install keychain
  1. Von Hand testen
kurs@tn00-purple:~$ keychain ~/.ssh/id_ed25519

 * keychain 2.8.5 ~ http://www.funtoo.org
 * Starting ssh-agent...
 * Adding 1 ssh key(s): /home/kurs/.ssh/id_ed25519
Enter passphrase for /home/kurs/.ssh/id_ed25519: 
 * ssh-add: Identities added: /home/kurs/.ssh/id_ed25519

kurs@tn00-purple:~$ ssh-add -l
Could not open a connection to your authentication agent.

kurs@tn00-purple:~$ cat ~/.keychain/${HOSTNAME}-sh
SSH_AUTH_SOCK=/tmp/ssh-pZf3VyTB4hs3/agent.1612572; export SSH_AUTH_SOCK;
SSH_AGENT_PID=1612575; export SSH_AGENT_PID;

kurs@tn00-purple:~$ . ~/.keychain/${HOSTNAME}-sh
kurs@tn00-purple:~$ ssh-add -l
256 SHA256:9+6FWilZKB46vt/n8HX3eVggjmdt40vXclBPkggaHvM kurs@tn00-purple (ED25519)
  1. In Shell automatisch starten
cat <<EOF >>.bashrc
keychain ~/.ssh/id_ed25519
. ~/.keychain/${HOSTNAME}-sh
EOF

LXC

LXC == LinuX Container

Mit den selben Kernel-Mechanismen ("cgroups", "IP namespaces") wie z.B. Docker wird ein - in z.B. ein Verzeichnis installiertes - Linux-System gestartet und dabei vom Hauptsystem getrennt.

Auf jeder VM sind ~25 LXC(ontainer) mit verschiedenen Distributionen installiert. Die Distribution sollte sich aus den Namen der Container ableiten lassen.

Anzeigen der Container

root@tn00-purple:~# lxc-ls -f
NAME          STATE   AUTOSTART GROUPS  IPV4          IPV6 UNPRIVILEGED…
tn00-alma8    RUNNING 1         ansible 192.168.1.138 -    false
tn00-alpine3b RUNNING 1         ansible 192.168.1.194 -    false
tn00-alpine3c RUNNING 1         ansible 192.168.1.139 -    false
tn00-alpine3d RUNNING 1         ansible 192.168.1.152 -    false
tn00-alpine3e RUNNING 1         ansible 192.168.1.134 -    false
tn00-arch     RUNNING 1         ansible 192.168.1.192 -    false
[...]

Container in /etc/hosts hinzufügen

Bitte nur einmal ;) ausführen!

sudo lxc-ls -f -F ipv4,name | grep -v NAME | sudo tee -a /etc/hosts

Wechseln in den Container

root@tn00-purple:~# lxc-attach tn00-alpine3b
~#  cat /etc/os-release
NAME="Alpine Linux"
ID=alpine
VERSION_ID=3.11.0
PRETTY_NAME="Alpine Linux v3.11"
HOME_URL="https://alpinelinux.org/"
BUG_REPORT_URL="https://bugs.alpinelinux.org/"
~# ^D

Beenden mit Strg-D (Shell beenden)

Zugriff auf Dateien im Container

Die Container sind auf File-Basis unter /var/lib/lxc/CONTAINERNAME/ installiert, das File-System liegt dort jeweils im Verzeichnis rootfs.

Ein cat /var/lib/lxc/tn00-alpine3b/rootfs/etc/os-release im Host würde also die gleiche Dateien anzeigen wie oben.

git

Git-Einführung

Unter https://training.velt.biz/workshop/Git-Quickstart/ findet Ihr eine kleine Git-Einführung

Repositories mit git clonen

Hier am Beispiel "cleanup-hosts" von https://git.velt.biz/Ansible/cleanup-hosts:

git clone https://git.velt.biz/Ansible/cleanup-hosts.git

Das Ergebnis ist ein Verzeichnis "cleanup-hosts", welches genau so in das roles-Verzeichnis geschoben (und umbenannt) werden kann.

Praktische/Schöne Statusbar für vim

apt install vim-airline