softasap.sa-container-bootstrap
sa-container-bootstrap
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
Experimental "base image" role for ansible-container based projects. Phusion base image inspired.
ansible-galaxy install softasap.sa-container-bootstrap