softasap.sa-container-bootstrap

sa-container-bootstrap

Status budowy Licencja: MIT Przyjazny dla Ansible-Container Przyjazny dla Packer.io

Rola pomocnicza wykonywana za pomocą ansible-container lub packer od Hashicorp, mająca na celu wstępną konfigurację systemu operacyjnego gościa w celu lepszego obrazu. Część Ubuntu opiera się na pomyśle Phusion BaseImage. Zobacz oryginalną licencję.

Wykorzystane pomysły i biblioteki stron trzecich:

Dystrybucja OBRAZ BAZOWY +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:

Zmienne

Rola może być konfigurowana za pomocą następujących parametrów:


# OGÓLNA KONFIGURACJA

# Pożądany system init: zgodny z obrazem docker phusion, używający dumb-init
container_init: "phusion-init" # "dumb-init" "tini-init"

container_svc: "runit" # "supervisord"

# Katalog, w którym można umieszczać pliki wykonywalne, które będą uruchamiane podczas uruchamiania
container_init_directory: /etc/my_init.d

# Zainstaluj cron w kontenerze (używając runit jako starter usługi)
option_container_cron: true
# Zainstaluj usługę ssh w kontenerze (używając runit jako starter usługi)
option_container_sshd: true
#... i włącz uruchamianie usługi
option_container_sshd_enabled: true
#... korzystając z tej pary kluczy, aby połączyć się wewnątrz instancji:
container_ssh_private_key: "{{role_dir}}/files/keys/insecure_key"
container_ssh_public_key: "{{role_dir}}/files/keys/insecure_key.pub"
# Zainstaluj usługę syslog w kontenerze i przekieruj wyjścia do logów docker (używając runit jako starter usługi)
option_container_syslog_ng: true

# konfiguracja związana z phusion-init
# używana przez phusion-init, powinna wskazywać na rzeczywiście zainstalowany python
container_python_interpeter: "/usr/bin/python3"

# konfiguracja związana z dumb-init

dumb_init_version: "1.2.0"

Więcej informacji o usługach

Kontener korzysta z runit http://smarden.org/runit/, który działa podobnie do klasycznego upstart. Obsługuje prawie 100% systemów zwykle używanych jako baza dla obrazów docker.

Kilka przykładów uruchamiania usług za pomocą runit: umieść pliki wykonywalne .runit w /etc/service/Nazwa_USŁUGI/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

Uruchamianie procesów przy starcie

Umieszczenie plików sh w container_init_directory (domyślnie /etc/my_init.d) zapewni ich uruchomienie przy starcie. Jeśli zdecydujesz się pominąć instalację runit, to jedyny sposób, aby coś uruchomić przy bootowaniu.

Dodatkowe sposoby ustawiania środowiska w kontenerze

Oprócz przekazywania środowiska zewnętrznie, możesz umieścić pliki środowiskowe w katalogu /etc/container_environment, używając następującej konwencji: plik jest nazywany nazwą zmiennej, którą chcesz ustawić, np. ENVVARNAME, a jego zawartość to wartość zmiennej, którą chcesz ustawić.

Specyfika inicjalizacji kontenera

Jak już wspomniano, rola obsługuje trzy opcje inicjalizacji: phusion-init, dumb-init, supervisor-init. Podczas gdy phusion-init zapewnia takie samo podejście, jak widzimy w obrazie phusion docker, dumb-init i supervisor-init mogą być używane w prostszych usługach.

dumb-init korzysta z prostszego systemu init: https://github.com/Yelp/dumb-init

supervisor-init jest znany, ale jest to bardziej zaawansowany system init, często używany w projektach pythonowych.

Kod w akcji

Zobacz przykład box-example dla samodzielnego działającego przykładu. Skonfiguruje obraz aplikacji, który wyświetli 'OK' po połączeniu - sprawdź to:

Więcej tymczasowych wskazówek dotyczących rozwiązywania problemów z kontenerem Ansible, jeśli wystąpią, znajduje się na https://gist.github.com/Voronenko/77fc4743ef7e70d74ee74b7ee62fd7e5.

Kod jest dostępny na podstawie podwójnej licencji BSD 3-clause i Licencji MIT. Wybierz tę, która najlepiej Ci pasuje.

Skontaktuj się z nami:

Subskrybuj aktualizacje ról na FB

Dołącz do kanału dyskusyjnego na Gitter

Odkryj inne role na http://www.softasap.com/roles/registry_generated.html

Odwiedź naszego bloga na http://www.softasap.com/blog/archive.html

O projekcie

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

Zainstaluj
ansible-galaxy install softasap.sa-container-bootstrap
Licencja
Unknown
Pobrania
80
Właściciel
Get your application deployed in a robust way