Hetzner Cloud Server mit nur einem Ansible-Playbook installieren - Cloud Server Serie
Mithilfe eines Ansible-Playbooks, dem Bootstrap-Skript, wird ein "Cloud Server" von Hetzner in einem Rutsch installiert.

Es ist so weit. Ein neuer Hetzner Cloud Server wird eingerichtet. Die DNS-Einstellungen werden vorgenommen. Und alles, was bis jetzt an einzelnen Playbooks erstellt wurde, wird zu einem "Bootstrap"-Playbook für den neuen Server zusammengefasst. Mit nur einem Ansible-Playbook wird der neue Server upgedatet, neu gestartet, die Programme werden installiert, HTTPS-Portal und Portainer werden eingerichtet und der SSH-Port wird angepasst.
Ordnerstruktur für den neuen Server:
~/Computer
/demo02
ansible.cfg
bootstrap.yaml
docker_https_portal.yaml
docker_portainer.yaml
inventory
putty.desktop
ansible.cfg:
[defaults]
inventory = inventory
private_key_file = ~/ssh/demokey_rsa
remote_user = root
bootstrap.yaml-Playbook:
- hosts: "all"
tasks:
- name: "apt update"
apt:
update_cache: "yes"
- name: "apt upgrade"
apt:
upgrade: "safe"
- name: "apt autoclean"
apt:
autoclean: "yes"
- name: "reboot"
reboot:
- name: "Docker.io installieren"
apt:
name: "docker.io"
- name: "Pip3 installieren"
apt:
name: "python3-pip"
- name: "Docker-Compose installieren"
pip:
name: "docker-compose"
- name: "Create Proxynet"
docker_network:
name: "proxynet"
internal: "yes"
- name: "Init Portainer"
docker_container:
name: "portainer"
image: "portainer/portainer-ce"
pull: "yes"
restart_policy: "unless-stopped"
restart: "yes"
networks:
- name: "proxynet"
aliases:
- "portainer"
- name: "bridge"
volumes:
- "/var/run/docker.sock:/var/run/docker.sock"
- "/home/docker/data/portainer/data:/data"
- name: "Init HTTPS-Portal"
docker_container:
name: "https_portal"
image: "steveltn/https-portal:1.21"
restart_policy: "unless-stopped"
restart: "yes"
networks:
- name: "bridge"
- name: "proxynet"
ports:
- "80:80"
- "443:443"
env:
STAGE: "production"
WEBSOCKET: "true"
DOMAINS: >
portainer.demo02.halvar.at -> portainer:9000,
volumes:
- "/home/docker/data/https_portal/data:/var/lib/https-portal"
- "/home/docker/data/https_portal/log:/var/log/nginx"
- name: "SSH-Port ändern"
lineinfile:
dest: "/etc/ssh/sshd_config"
regexp: "Port 22"
line: "Port 15685"
- name: "SSHD neu starten"
service:
name: "sshd"
state: "restarted"
docker_portainer.yaml-Playbook:
- hosts: "all"
tasks:
- name: "Init Portainer"
docker_container:
name: "portainer"
image: "portainer/portainer-ce"
pull: "yes"
restart_policy: "unless-stopped"
restart: "yes"
networks:
- name: "proxynet"
aliases:
- "portainer"
- name: "bridge"
volumes:
- "/var/run/docker.sock:/var/run/docker.sock"
- "/home/docker/data/portainer/data:/data"
docker_https_portal.yaml-Playbook:
- hosts: "all"
tasks:
- name: "Init HTTPS-Portal"
docker_container:
name: "https_portal"
image: "steveltn/https-portal:1.21"
restart_policy: "unless-stopped"
restart: "yes"
networks:
- name: "bridge"
- name: "proxynet"
ports:
- "80:80"
- "443:443"
env:
STAGE: "production"
WEBSOCKET: "true"
DOMAINS: >
portainer.demo02.halvar.at -> portainer:9000,
volumes:
- "/home/docker/data/https_portal/data:/var/lib/https-portal"
- "/home/docker/data/https_portal/log:/var/log/nginx"
inventory:
# Vor dem Ausführen des Bootstrap-Playbooks
# 78.47.193.129
# Nach dem Ausführen des Bootstrap-Playbooks
demo02.halvar.at:15685
putty.desktop:
[Desktop Entry]
Type=Application
Name=PuTTY-Verbindung
Exec=putty -load "demo02"
Icon=/usr/share/pixmaps/putty.png
Ansible Umgebung für mehrere Computer einrichten - Cloud Server Serie
Es ist an der Zeit, den Computer-Ordner mit Ansible für mehrere Computer vorzubereiten. Updates aller Computer in einem Rutsch sind dann kein Problem mehr.
