softasap.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服务,并将输出重定向到docker日志(使用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类似。它几乎可以涵盖所有通常用作docker镜像基础的系统。

使用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

在启动时运行进程

container_init_directory 中放置sh文件(默认为 /etc/my_init.d)将确保它们在启动时执行。 如果您决定跳过安装runit,这是唯一在启动时执行某些操作的方法。

在容器内部设置环境的其他方法

除了外部传递环境,您还可以将环境文件放置在 /etc/container_environment 目录中,使用以下约定:文件名为您要设置的变量名,如 ENVVARNAME,文件内容是您要设置的变量值。

容器初始化细节

如前所述,该角色支持三种初始化选项: phusion-initdumb-initsupervisor-init。 虽然 phusion-init 提供了与我们在Phusion docker映像中看到的相同的方法,但 dumb-initsupervisor-init 可以用于更简单的服务。

dumb-init 使用更简单的初始化系统:https://github.com/Yelp/dumb-init

supervisor-init 是一个更重的初始化系统,通常用于python项目。

代码示例

请查看box-example以获取独立的工作示例。它将配置一个应用程序映像,该映像在连接时显示“OK” - 快来看看:

有关ansible容器故障排除的更多临时提示,如果有,访问 https://gist.github.com/Voronenko/77fc4743ef7e70d74ee74b7ee62fd7e5。

版权和许可证

代码以双重许可证方式发布,适用于 BSD 3条款MIT许可证。选择最适合您的许可证。

联系我们:

FB上订阅角色更新。

加入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
下载
80
拥有者
Get your application deployed in a robust way