ansible und docker scripte
This commit is contained in:
parent
d92059b217
commit
8a26c18c83
5 changed files with 133 additions and 0 deletions
19
AGENTS.md
Normal file
19
AGENTS.md
Normal file
|
|
@ -0,0 +1,19 @@
|
||||||
|
# Repository Guidelines
|
||||||
|
|
||||||
|
## Project Structure & Module Organization
|
||||||
|
Infrastructure automation lives in `ansible/` with playbooks like `install-docker.yml` and roles under `ansible/roles/` (`install_docker`, `install_oh-my-zsh`, `mailcow-ansiblerole`). Reusable helper prompts for shell sessions sit in `prompts/`, while ready-made walkthrough scripts belong in `scripts/` (for example `00-Beispiel-1.sh`). The root `README.md` is the canonical handout for trainees, so update it alongside any major workflow change.
|
||||||
|
|
||||||
|
## Build, Test, and Development Commands
|
||||||
|
Use `ansible-playbook -i <inventory> ansible/install-docker.yml` to provision a host end-to-end. Validate changes quickly with `ansible-playbook --syntax-check ansible/install-docker.yml` and dry-run with `ansible-playbook --check ...` before touching real servers. Scripted exercises run via `bash scripts/00-Beispiel-1.sh`, which is also a template for new labs. After editing shell utilities, run `bash -n scripts/<file>.sh` to catch syntax errors.
|
||||||
|
|
||||||
|
## Coding Style & Naming Conventions
|
||||||
|
YAML uses two-space indents, lowercase keys, and descriptive role/variable names (`install_docker`, `with_starship`). Keep playbooks idempotent and prefer Ansible modules over raw shell. Shell scripts target Debian-based hosts; start with `#!/usr/bin/env bash`, set `set -euo pipefail`, and use lowercase, hyphenated filenames. Any visible output should be concise so trainees can follow along live.
|
||||||
|
|
||||||
|
## Testing Guidelines
|
||||||
|
Every role change must pass `ansible-playbook --syntax-check` and a `--check` run against a disposable host. When roles install packages, assert outcomes with `changed_when`/`failed_when` to keep reports accurate. For scripts, add usage comments at the top, run them in a throwaway VM, and document expected prompts or side effects inside the script itself.
|
||||||
|
|
||||||
|
## Commit & Pull Request Guidelines
|
||||||
|
Follow the existing concise, German-friendly summaries (`README.md aktualisiert`, `kleine korrekturen`). Start messages with an imperative verb and keep the subject ≤70 chars; add detail in the body when configuration files or roles change. Pull requests should describe the scenario (host type, inventory snippet, or script name), list verification commands, and attach screenshots/log excerpts when UI or prompt adjustments are involved. Link training issues or agenda items so reviewers know which exercise the change supports.
|
||||||
|
|
||||||
|
## Security & Configuration Tips
|
||||||
|
Assume root SSH on wildcard hosts (`fobiX.benbex.de`); never store credentials in the repo. Before running provisioning playbooks, confirm the target number (`X`) and ensure DNS wildcard records resolve locally. When sharing prompt tweaks, reference the exact file in `prompts/` and remind users to source it with `. prompts/<name>` so history or return-code cues are accurate.
|
||||||
15
README.md
15
README.md
|
|
@ -96,3 +96,18 @@ Um das Terminal etwas zu verschönern (und übersichtlicher zu machen) setze den
|
||||||
```
|
```
|
||||||
(vergiss auch hier die `<TAB>`-Taste nicht...)
|
(vergiss auch hier die `<TAB>`-Taste nicht...)
|
||||||
|
|
||||||
|
## Docker-Host vorbereiten
|
||||||
|
der Server benötigt einige Pakete, damit er seinen Dienst als Docker-Host antreten kann.
|
||||||
|
Zusätzliche Pakete sind nötig, damit die Hilfs-Scripte ordnungsgemäß laufen können.
|
||||||
|
|
||||||
|
Von Hand würde man jetzt die [offizielle Docker.com Anleitung "Install Docker Engine on Debian"](https://docs.docker.com/engine/install/debian/) durchspielen.
|
||||||
|
Einfacher geht es, wenn schon jemand™ ein "ansible-playbook" hergestellt hat. Zufälligerweise liegt hier eins im Repo.
|
||||||
|
Ein Ansible-Playbook ist eine Datei, die für das Open-Source-Automatisierungs-Tool ansible einen Zustand eines Servers beschreibt. Ansible kümmert sich dann darum, diesen Zustand herzustellen.
|
||||||
|
|
||||||
|
Um dieses Playbook zu verwenden benötigt man natürlich "ansible".
|
||||||
|
|
||||||
|
ansible installieren und anschließend direkt alles aus ["Install Docker Engine on Debian"](https://docs.docker.com/engine/install/debian/) automatisch durchführen kannst du mit dem Skript `01-install-ansible-and-run-playbook.sh`. Wie gerade schon geübt machst du das mit dem Befehl
|
||||||
|
```sh
|
||||||
|
root@fobiX:~# bash scripts/01<TAB><ENTER>
|
||||||
|
```
|
||||||
|
|
||||||
|
|
|
||||||
8
ansible/install-docker.yml
Normal file
8
ansible/install-docker.yml
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
- hosts: all
|
||||||
|
name: Dockerhost installieren
|
||||||
|
remote_user: root
|
||||||
|
gather_facts: yes
|
||||||
|
|
||||||
|
roles:
|
||||||
|
- install_docker
|
||||||
|
|
||||||
64
ansible/roles/install_docker/tasks/main.yml
Normal file
64
ansible/roles/install_docker/tasks/main.yml
Normal file
|
|
@ -0,0 +1,64 @@
|
||||||
|
# ---
|
||||||
|
# tasks file for install_docker
|
||||||
|
- name: Check if Docker is installed
|
||||||
|
become: yes
|
||||||
|
command: docker -v
|
||||||
|
register: docker_installed
|
||||||
|
ignore_errors: true
|
||||||
|
|
||||||
|
- name: Ensure no conflicting Docker packages are installed
|
||||||
|
become: yes
|
||||||
|
ansible.builtin.apt:
|
||||||
|
name:
|
||||||
|
- docker.io
|
||||||
|
- docker-doc
|
||||||
|
- docker-compose
|
||||||
|
- podman-docker
|
||||||
|
- containerd
|
||||||
|
- runc
|
||||||
|
state: absent
|
||||||
|
purge: yes
|
||||||
|
|
||||||
|
- name: Install Docker
|
||||||
|
become: yes
|
||||||
|
block:
|
||||||
|
- name: Add Docker's official GPG key
|
||||||
|
block:
|
||||||
|
- name: Install necessary packages
|
||||||
|
become: yes
|
||||||
|
ansible.builtin.apt:
|
||||||
|
name:
|
||||||
|
- ca-certificates
|
||||||
|
- curl
|
||||||
|
- gnupg
|
||||||
|
state: latest
|
||||||
|
update_cache: yes
|
||||||
|
- name: Add GPG key
|
||||||
|
ansible.builtin.shell:
|
||||||
|
cmd: |
|
||||||
|
install -m 0755 -d /etc/apt/keyrings
|
||||||
|
curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
|
||||||
|
chmod a+r /etc/apt/keyrings/docker.asc
|
||||||
|
- name: Add the repository to Apt sources
|
||||||
|
block:
|
||||||
|
- name: Add repos
|
||||||
|
ansible.builtin.shell:
|
||||||
|
cmd: |
|
||||||
|
echo \
|
||||||
|
"deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \
|
||||||
|
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
|
||||||
|
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
|
||||||
|
|
||||||
|
- name: Install Docker packages
|
||||||
|
become: yes
|
||||||
|
ansible.builtin.apt:
|
||||||
|
name:
|
||||||
|
- docker-ce
|
||||||
|
- docker-ce-cli
|
||||||
|
- containerd.io
|
||||||
|
- docker-buildx-plugin
|
||||||
|
- docker-compose-plugin
|
||||||
|
state: latest
|
||||||
|
update_cache: yes
|
||||||
|
when: docker_installed.failed
|
||||||
|
|
||||||
27
scripts/01-install-ansible-and-run-playbook.sh
Normal file
27
scripts/01-install-ansible-and-run-playbook.sh
Normal file
|
|
@ -0,0 +1,27 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
|
REPO_ROOT="$(cd "${SCRIPT_DIR}/.." && pwd)"
|
||||||
|
cd "${REPO_ROOT}"
|
||||||
|
|
||||||
|
if [[ ${EUID} -ne 0 ]]; then
|
||||||
|
echo "Bitte als root oder per sudo ausführen." >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "[0/3] Arbeitsverzeichnis: ${REPO_ROOT}"
|
||||||
|
|
||||||
|
echo "[1/3] apt-Index aktualisieren..."
|
||||||
|
apt-get update -y
|
||||||
|
|
||||||
|
echo "[2/3] Ansible installieren..."
|
||||||
|
DEBIAN_FRONTEND=noninteractive apt-get install -y ansible
|
||||||
|
|
||||||
|
echo "[3/3] Playbook ansible/install-docker.yml lokal ausführen..."
|
||||||
|
ansible-playbook \
|
||||||
|
-i localhost, \
|
||||||
|
--connection=local \
|
||||||
|
ansible/install-docker.yml
|
||||||
|
|
||||||
|
echo "Fertig: install-docker.yml wurde erfolgreich auf localhost angewendet."
|
||||||
Loading…
Add table
Reference in a new issue