sa-container-bootstrap

sa-container-bootstrap

Статус сборки Лицензия: MIT Подходит для Ansible-Container Подходит для Packer.io

Это вспомогательная роль, которая выполняется с помощью ansible-container или Hashicorp packer, чтобы предварительно настроить гостевую операционную систему для лучшего образа. Часть для Ubuntu основана на идее Phusion BaseImage. См. оригинальную лицензию.

Используемые сторонние идеи и библиотеки:

Дистрибуция ОС БАЗА +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:

Переменные

Роль можно настроить, используя следующие параметры:


# ОБЩАЯ КОНФИГУРАЦИЯ

# Желаемая система инициализации: совместимая с образом phusion docker, использующая dumb-init
container_init: "phusion-init" # "dumb-init" "tini-init"

container_svc: "runit" # "supervisord"

# Каталог, куда можно помещать исполняемые файлы для выполнения при запуске
container_init_directory: /etc/my_init.d

# Установить cron внутри контейнера (используя сервис runit)
option_container_cron: true
# Установить ssh сервис внутри контейнера (используя сервис runit)
option_container_sshd: true
#... и включить автозапуск сервиса
option_container_sshd_enabled: true
#... используя этот ключ для подключения внутри экземпляра:
container_ssh_private_key: "{{role_dir}}/files/keys/insecure_key"
container_ssh_public_key: "{{role_dir}}/files/keys/insecure_key.pub"
# Установить сервис syslog внутри контейнера и перенаправить вывод в логи докера (используя сервис runit)
option_container_syslog_ng: true


# Конфигурация, связанная с phusion-init
# используется phusion-init, должен указывать на реально установленный python
container_python_interpeter: "/usr/bin/python3"


# Конфигурация, связанная с dumb-init

dumb_init_version: "1.2.0"

Информация о сервисах

Контейнер использует runit http://smarden.org/runit/, который работает аналогично классическому upstart. Он нацелен почти на 100% систем, которые обычно используются в качестве базы для образов докера.

Некоторые примеры запуска сервисов с помощью runit: разместите исполняемые .runit файлы в /etc/service/SERVICE_NAME/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

Запуск процессов при старте

Помещая sh файлы в container_init_directory (по умолчанию /etc/my_init.d), вы гарантируете их выполнение при старте. Если вы решите пропустить установку runit, это единственный способ запустить что-то при загрузке.

Дополнительные способы настройки окружения внутри контейнера

Кроме того, что вы можете передавать переменные окружения извне, вы можете помещать файлы окружения в директорию /etc/container_environment, используя следующее правило: файл называется именем переменной, которую вы хотите установить, например ENVVARNAME, и его содержимое - это значение переменной, которую вы хотите установить.

Особенности инициализации контейнера

Как уже упоминалось, роль поддерживает три варианта инициализации: phusion-init, dumb-init, supervisor-init. Хотя phusion-init предоставляет тот же подход, что и на образе Phusion, dumb-init и supervisor-init могут использоваться в более простых сервисах.

dumb-init использует более простую систему инициализации: https://github.com/Yelp/dumb-init

supervisor-init известна, но она более тяжелая система инициализации, часто используемая с проектами на Python.

Код в действии

Смотрите пример box-example для самостоятельной работающей версии. Она настроит образ приложения, который будет отображать 'OK' при подключении - проверьте это:

Больше временных подсказок для устранения неполадок в ansible container (если есть) на https://gist.github.com/Voronenko/77fc4743ef7e70d74ee74b7ee62fd7e5 ()

Авторское право и лицензия

Код имеет две лицензии: BSD с 3-ми пунктами и MIT. Выберите ту, которая больше подходит вам.

Контакты:

Подписывайтесь на обновления ролей на [FB] (https://www.facebook.com/SoftAsap/)

Присоединяйтесь к каналу обсуждений gitter на Gitter

Откройте для себя другие роли на http://www.softasap.com/roles/registry_generated.html

Посетите наш блог на 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
Лицензия
Unknown
Загрузки
71
Владелец
Get your application deployed in a robust way