ubuntu-12.04 – Ubuntu上的LXC和Saltstack minion_id配置

前端之家收集整理的这篇文章主要介绍了ubuntu-12.04 – Ubuntu上的LXC和Saltstack minion_id配置前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用LXC作为测试SaltStack脚本的实验室平台.该实验室由5个Ubuntu 12.04 LTS容器组成,我通过克隆预先安装了salt-minion的模板容器创建.

创建模板容器并安装salt-minion后,模板将根据主机名(test-template)获取其Salt minion_id.如果我lxc克隆此模板,所有克隆都将具有该模板的minion_id,但我希望克隆使minion_id与其主机名匹配(test-machine- {1,2,3,4,5}).

有没有办法让这个用bash编写脚本,还是我应该采取另一条路径来达到同样的效果

更新:

我查看了一些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"@H_301_10@ 
 

我不喜欢这个解决方案,因为它很大程度上取决于lxc和saltstack的内部结构,但确实可以完成这项工作.

更新2:

在关于salt-minion如何在删除现有minion_id时生成新minion_id的评论中提出建议后,我将其减少为两个命令:

. /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"@H_301_10@ 
 

我仍然希望看到更多通用/强大的方法,而不依赖于SaltStack和LXC内部.

dockerdockerfile一起使用.您可以在线查找 salt-minionsalt-master的示例.

抓取文件并继续构建图像(它始终是good idea to tag them).给定像这样的目录结构(紧跟上面提到的例子):

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

你需要cd docker / salt-master并发出:

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

盐奴才的等价物:

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

此过程创建可重用的图像:

# 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@H_301_10@ 
 

您可以根据需要在前台(并附加到它们)或后台开始.你也可以link

# 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@H_301_10@ 
 

结果很容易编写脚本:

# 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@H_301_10@

猜你在找的Ubuntu相关文章