softasap.sa-container-bootstrap

sa-container-bootstrap

Build-Status Lizenz: MIT Ansible-Container-freundlich Packer.io-freundlich

Dieses Hilfsskript wird mit ansible-container oder Hashicorp packer ausgeführt, um das Gastbetriebssystem für ein besseres Image vorzu konfigurieren. Der Ubuntu-Teil basiert auf der Idee von Phusion BaseImage. Siehe die originale Lizenz.

Dritte Ideen und Bibliotheken, die verwendet werden

Distribution BASIS-IMAGE +SSHD +CRON + Syslog ng
Alpine 3.4 :white_check_mark: :white_check_mark: :white_check_mark: :no_entry:
Alpine 3.5 :white_check_mark: :white_check_mark: :white_check_mark: :no_entry:
Alpine 3.6 :white_check_mark: :white_check_mark: :white_check_mark: :no_entry:
Alpine 3.7 :white_check_mark: :white_check_mark: :white_check_mark: :no_entry:
debian-jessie :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark:
debian-stretch :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark:
ubuntu-xenial :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark:

Variablen

Die Rolle kann mit den folgenden Parametern konfiguriert werden


# ALLGEMEINE KONFIGURATION

# Gewünschtes Init-System: phusion docker image kompatibel, unter Verwendung von dumb-init
container_init: "phusion-init" # "dumb-init" "tini-init"

container_svc: "runit" # "supervisord"

# Verzeichnis, in dem Sie ausführbare Dateien ablegen können, die beim Start ausgeführt werden sollen
container_init_directory: /etc/my_init.d

# Cron im Container installieren (unter Verwendung des runit-Dienststarters)
option_container_cron: true
# SSH-Dienst im Container installieren (unter Verwendung des runit-Dienststarters)
option_container_sshd: true
#... und Dienststart aktivieren
option_container_sshd_enabled: true
#... unter Verwendung dieses Schlüsselpaares zum Verbindungsaufbau innerhalb der Instanz:
container_ssh_private_key: "{{role_dir}}/files/keys/insecure_key"
container_ssh_public_key: "{{role_dir}}/files/keys/insecure_key.pub"
# Syslog-Dienst im Container installieren und Ausgaben an Docker-Logs weiterleiten (unter Verwendung des runit-Dienststarters)
option_container_syslog_ng: true

# Konfiguration in Bezug auf phusion-init
# verwendet von phusion-init, sollte auf das wirklich installierte Python verweisen
container_python_interpeter: "/usr/bin/python3"

# Konfiguration in Bezug auf dumb-init

dumb_init_version: "1.2.0"

Weitere Informationen zu den Diensten

Der Container verwendet runit http://smarden.org/runit/, das ähnlich wie klassisches Upstart funktioniert. Es zielt auf fast 100 % der Systeme ab, die üblicherweise als Basis für Docker-Images verwendet werden.

Einige Beispiele zum Starten von Diensten mit runit: ausführbare .runit-Dateien unter /etc/service/SERVICE_NAME/run ablegen.

#!/bin/sh
set -e
. /etc/memcached.conf
exec chpst -u memcache /usr/bin/memcached $MEMCACHED_OPTS >>/var/log/memcached.log 2>&1
#!/bin/bash
set -e
exec nginx -c /etc/nginx/nginx.conf
#!/bin/sh
set -e

RUNDIR=/var/run/redis
PIDFILE=$RUNDIR/redis.pid

mkdir -p $RUNDIR
touch $PIDFILE
chown redis:redis $RUNDIR $PIDFILE
chmod 755 $RUNDIR

exec chpst -u redis /usr/bin/redis-server /etc/redis/redis.conf

Prozesse beim Start ausführen

Das Platzieren von sh-Dateien unter container_init_directory (standardmäßig /etc/my_init.d) stellt sicher, dass sie beim Start ausgeführt werden. Wenn Sie die Installation von runit überspringen möchten, ist dies der einzige Weg, um etwas beim Booten auszuführen.

Zusätzliche Möglichkeiten zur Einrichtung der Umgebung im Container

Zusätzlich zur externen Weitergabe von Umgebungen können Sie Umgebungsdateien im Verzeichnis /etc/container_environment ablegen, indem Sie folgende Konvention verwenden: Die Datei wird nach dem Namen der Variable benannt, die Sie festlegen möchten, wie ENVVARNAME, und ihr Inhalt ist der Wert der Variable, die Sie festlegen möchten.

Besonderheiten von Container-Init

Wie bereits erwähnt, unterstützt die Rolle drei Initialisierungsoptionen: phusion-init, dumb-init, supervisor-init. Während phusion-init denselben Ansatz wie wir ihn im Phusion-Docker-Image sehen, können dumb-init und supervisor-init in einfacheren Diensten verwendet werden.

dumb-init verwendet ein einfacheres Init-System: https://github.com/Yelp/dumb-init

supervisor-init ist ein bekanntes, aber schwereres Init-System, das oft mit Python-Projekten verwendet wird.

Code in Aktion

Siehe das Box-Beispiel für ein eigenständiges Arbeitsbeispiel. Es wird das Anwendungsimage konfigurieren, das 'OK' bei der Verbindung anzeigt – sehen Sie sich das an:

Weitere temporäre Hinweise zur Fehlerbehebung bei ansible-container sind verfügbar unter https://gist.github.com/Voronenko/77fc4743ef7e70d74ee74b7ee62fd7e5 ()

Urheberrecht und Lizenz

Der Code ist dual lizenziert unter der BSD 3-Klausel und der MIT-Lizenz. Wählen Sie die, die am besten zu Ihnen passt.

Erreichen Sie uns:

Abonnieren Sie die Aktualisierungen der Rollen auf FB

Treten Sie dem Diskussionskanal bei Gitter auf Gitter

Entdecken Sie weitere Rollen unter http://www.softasap.com/roles/registry_generated.html

Besuchen Sie unseren Blog unter http://www.softasap.com/blog/archive.html

Über das Projekt

Experimental "base image" role for ansible-container based projects. Phusion base image inspired.

Installieren
ansible-galaxy install softasap.sa-container-bootstrap
GitHub Repository
Lizenz
Unknown
Downloads
80
Besitzer
Get your application deployed in a robust way