01 | ||
02 | ||
03 | ||
04 | ||
05 | ||
06 | ||
07 | ||
08 | ||
09 | ||
10 | ||
11 | ||
12 | ||
extra | ||
group_vars | ||
helper | ||
host_vars | ||
inventory | ||
inventory-scripts | ||
plugins | ||
roles | ||
roles.extern | ||
roles.webcluster@ad984d6648 | ||
.gitignore | ||
.gitmodules | ||
ansible.cfg | ||
hosts.ini | ||
LXContainer.md | ||
README.md |
Ansible-Kurs 2024-11
Zuordnung
tn01
- Uwetn02
- Carsten R.tn03
- Markustn04
- Kevintn05
- Carsten J.tn06
- Clifetn07
- Renetn08
- Michelletn09
- Christopher
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
- 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;
- 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;
- 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)
- 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/
- Keychain installieren
kurs@tn00-purple:~$ apt install keychain
- 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)
- 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