softasap.sa-container-bootstrap

sa-container-bootstrap

Statut de construction Licence : MIT Compatible avec Ansible-Container Compatible avec Packer.io

Ce rôle d'assistance doit être exécuté avec ansible-container ou packer de Hashicorp, visant à préconfigurer le système d'exploitation invité pour une meilleure image. La partie Ubuntu est basée sur l'idée de Phusion BaseImage. Voir la licence originale.

Idées et bibliothèques tierces utilisées :

Distribution IMAGE DE BASE +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:

Variables

Le rôle peut être configuré à l'aide des paramètres suivants :


# CONFIGURATION GÉNÉRALE

# Système d'initialisation souhaité : compatible avec les images docker phusion, utilisant dumb-init
container_init: "phusion-init" # "dumb-init" "tini-init"

container_svc: "runit" # "supervisord"

# Répertoire où vous pouvez mettre des fichiers exécutables à exécuter au démarrage
container_init_directory: /etc/my_init.d

# Installer cron à l'intérieur du conteneur (utilisant le service runit)
option_container_cron: true
# Installer le service ssh à l'intérieur du conteneur (utilisant le service runit)
option_container_sshd: true
#... et activer le démarrage du service
option_container_sshd_enabled: true
#... en utilisant cette paire de clés pour se connecter à l'intérieur de l'instance :
container_ssh_private_key: "{{role_dir}}/files/keys/insecure_key"
container_ssh_public_key: "{{role_dir}}/files/keys/insecure_key.pub"
# Installer le service syslog à l'intérieur du conteneur et rediriger la sortie vers les logs docker (utilisant le service runit)
option_container_syslog_ng: true

# Configuration liée à phusion-init
# utilisée par phusion-init, doit pointer sur le python installé
container_python_interpeter: "/usr/bin/python3"

# Configuration liée à dumb-init 

dumb_init_version: "1.2.0"

Plus d'informations sur les services

Le conteneur utilise runit http://smarden.org/runit/, qui agit de manière similaire à l'upstart classique. Il cible presque 100 % des systèmes habituellement utilisés comme base pour les images docker.

Quelques exemples de démarrage de services avec runit : placez des fichiers exécutables .runit sous /etc/service/NOM_DU_SERVICE/run

#!/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

Exécution des processus au démarrage

Placer des fichiers sh dans container_init_directory (par défaut /etc/my_init.d) garantira qu'ils seront exécutés au démarrage. Si vous décidez de ne pas installer le runit, c'est la seule façon pour que quelque chose soit exécuté au démarrage.

Autres moyens de définir l'environnement à l'intérieur du conteneur

En plus de passer des variables d'environnement de façon externe, vous pouvez placer des fichiers d'environnement dans le répertoire /etc/container_environment, en utilisant la convention suivante : le fichier est nommé d'après le nom de la variable que vous souhaitez définir, comme ENVVARNAME et son contenu est la valeur de la variable que vous souhaitez définir.

Spécificités de l'initialisation du conteneur

Comme mentionné, ce rôle prend en charge trois options d'initialisation : phusion-init, dumb-init, supervisor-init. Alors que phusion-init fournit la même approche que celle que nous voyons sur l'image docker de Phusion, dumb-init et supervisor-init peuvent être utilisés dans des services plus simples.

dumb-init utilise un système d'initialisation plus simple : https://github.com/Yelp/dumb-init

supervisor-init est un système d'initialisation connu, mais plus lourd, souvent utilisé avec des projets Python.

Code en action

Voir box-example pour un exemple fonctionnel autonome. Cela configurera une image d'application qui affichera 'OK' lors de la connexion - jetez un œil :

Plus d'astuces temporaires sur le dépannage d'ansible container, le cas échéant, sur https://gist.github.com/Voronenko/77fc4743ef7e70d74ee74b7ee62fd7e5 ()

Droits d'auteur et licence

Le code est sous licence double, soit [BSD 3 clauses] (https://opensource.org/licenses/BSD-3-Clause) soit [Licence MIT] (http://opensource.org/licenses/MIT). Choisissez celle qui vous convient le mieux.

Contactez-nous :

Abonnez-vous aux mises à jour des rôles sur [FB] (https://www.facebook.com/SoftAsap/)

Rejoignez le canal de discussion Gitter à Gitter

Découvrez d'autres rôles sur http://www.softasap.com/roles/registry_generated.html

Visitez notre blog à http://www.softasap.com/blog/archive.html

À propos du projet

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

Installer
ansible-galaxy install softasap.sa-container-bootstrap
Licence
Unknown
Téléchargements
80
Propriétaire
Get your application deployed in a robust way