web-dev-qa-db-ja.com

UbuntuでのLXCとSaltstackminion_idの設定

SaltStackスクリプトをテストするためのラボプラットフォームとしてLXCを使用しています。ラボは+5のUbuntu12.04 LTSコンテナーで構成されており、salt-minionがプリインストールされたテンプレートコンテナーのクローンを作成して作成します。

テンプレートコンテナを作成してsalt-minionをインストールすると、テンプレートはhostnameminion_id)に基づいてSalt test-templateを取得します。このテンプレートをlxc-cloneすると、すべてのクローンにそのテンプレートのminion_idが含まれますが、クローンにはhostnameminion_id)と一致するtest-machine-{1,2,3,4,5}が必要です。

これをbashでスクリプト化する方法はありますか、それとも同じ効果に別の方法をとる必要がありますか?

[〜#〜] update [〜#〜]

lxcスクリプトのいくつかを調べたところ、lxcスクリプトが/usr/share/lxc/lxc.functions関数を定義するget_default_lxcpathファイルを使用していることがわかりました。したがって、現在のスクリプトは次のようになります。

. /usr/share/lxc/lxc.functions

# clone template
lxc-clone -o $template -n "$container"

# create saltstack minion config dir if does not exist    
minion_id_path="$(get_default_lxcpath)/$container/rootfs/etc/salt"
mkdir -p "$minion_id_path"

# set minion-id directly from container name
echo "$container" > "$minion_id_path/minion_id"                

このソリューションはlxcとsaltstackの両方の内部に大きく依存しているため、好きではありませんが、機能します。

更新2

既存のコマンドが削除されたときにsalt-minionが新しいminion_idを生成する方法についてコメントで提案した後、これを2つのコマンドに減らしました。

. /usr/share/lxc/lxc.functions

# clone template
lxc-clone -o $template -n "$container"

# delete minion_id to allow salt-minion to generate a new one
rm "$(get_default_lxcpath)/$container/rootfs/etc/salt/minion_id"

SaltStackやLXCの内部に依存しない、より一般的で堅牢なアプローチを引き続き望んでいます。

3
LavaScornedOven

dockerdockerfile を使用します。 salt-minionsalt-master の両方の例をオンラインで簡単に見つけることができます。

ファイルを取得して、イメージの作成に進みます(常に タグを付けることをお勧めします )。このようなディレクトリ構造が与えられた場合(上記の例に厳密に従う):

docker/
├── salt-master
│   ├── Dockerfile
│   └── supervisor-salt.conf
└── salt-minion
    ├── Dockerfile
    └── supervisor-salt.conf

cd docker/salt-masterして発行する必要があります:

# docker build -t kstaken/ubuntu-salt-master .

salt-minionに相当:

# cd docker/salt-minion
# docker build -t kstaken/ubuntu-salt-minion .

このプロセスにより、再利用可能なイメージが作成されます。

# docker images | grep kstaken
kstaken/ubuntu-salt-minion   latest              557c052f5b14        19 seconds ago      253.5 MB
kstaken/ubuntu-salt-master   latest              1f41866d05e1        5 minutes ago       262.7 MB

必要に応じて、フォアグラウンド(およびそれらにアタッチ)またはバックグラウンドで開始できます。また、 リンク それらを行うことができます:

# docker run --detach=true --hostname=salt-master --networking=true kstaken/ubuntu-salt-maste
# docker run --detach=true --hostname=minion1 --networking=true --link bersek_morse:linked-server kstaken/ubuntu-salt-minion
# docker run --detach=true --hostname=minion2 --networking=true --link berserk_morse:linked-server kstaken/ubuntu-salt-minion

結果は非常に簡単にスクリプト化できます。

# docker ps
CONTAINER ID        IMAGE                               COMMAND                CREATED             STATUS              PORTS                NAMES
4fae47241a73        kstaken/ubuntu-salt-minion:latest   /usr/bin/supervisord   4 seconds ago       Up 2 seconds                             goofy_fermi
6030e7f882ba        kstaken/ubuntu-salt-minion:latest   /usr/bin/supervisord   25 seconds ago      Up 23 seconds                            desperate_hawking
22b18a387e21        kstaken/ubuntu-salt-master:latest   /usr/bin/supervisord   3 minutes ago       Up 3 minutes        4505/tcp, 4506/tcp   berserk_morse,desperate_hawking/linked-server,goofy_fermi/linked-server
3
dawud