softasap.sa-container-bootstrap

sa-container-bootstrap

ビルドステータス ライセンス: MIT Ansible-Container対応 Packer.io対応

このヘルパーロールは、ansible-container や Hashicorp packer と連携して、ゲストOSを事前に設定し、より良いイメージを作成することを目指しています。 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イメージのベースとして使用されるほぼ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

起動時にプロセスを実行する

container_init_directory(デフォルトは/etc/my_init.d)にshファイルを配置することで、それらが起動時に実行されることを保証します。 runitのインストールをスキップすることにした場合、ブート時に何かを実行する唯一の方法です。

コンテナ内での環境設定の追加方法

外部から環境を渡すだけでなく、環境ファイルを/etc/container_environmentディレクトリに置くこともできます。以下の規則に従います:ファイル名は設定したい変数の名前で、内容は設定したい変数の値です。

コンテナの初期化の具体的な詳細

前述のように、このロールは3つの初期化オプションをサポートしています:phusion-initdumb-initsupervisor-initphusion-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でディスカッションチャンネルに参加してください。

他のロールを 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