一直在想要是salt能够分组的使用自定义的脚本来完成批量部署就好了,最近在这方面做了比较深入的研究,终于实现了。

一、在master上配置nodegroup

1、在/etc/salt/master的最下面加上default_include: include/group.conf

2、vim include/group.conf

salt 结合state和nodegroup实现分组批量部署_salt

二、配置state

通过配置nodegroup,我们已经能够实现按组来分发命令。但是当我们需要做一系列操作的时候,这种依靠一条条命令的方式显然很慢,切容易出现操作上的失误。那好,我们怎么办?

对了,通过state来批量的执行脚本。

配置state

1、vim /srv/salt/top.sls

salt 结合state和nodegroup实现分组批量部署_salt_02

2、在/srv/salt下建立目录:(top.sls中的目录就是从这来的)


mkdir dnsmasq

mkdir -p myscript/{lvs-server,lvs-realserver}

mkdir -p myscript/lvs-realserver/config/

mkdir -p myscript/lvs-server/{config,install}


3、进入dnsmasq目录,编辑init.sls以及创建files目录

mkdir files

之后将你的dnsmasq.conf文件放到files目录下

vim init.sls


dnsmasq:

pkg:

– name: dnsmasq

– installed

service:

– running

– enable: True

– reload: True

– watch:

– file: /etc/dnsmasq.conf



/etc/dnsmasq.conf:

file.managed:

– source: salt://dnsmasq/files/dnsmasq.conf

– user: root

– group: root

– mode: 644

– require:

– pkg: dnsmasq


4、接下来就是我们的lvs了,用的都是脚本

先从lvs的install开始

进到刚刚建好的目录:/srv/salt/myscript/lvs-server/install

vim init.sls


install_lvs:

cmd.script:

– source: http://172.16.224.23/soft/lvs/install_lvs.sh

– unless: [ -f /tmp/test.passed ]

当你准备好脚本后,lvs的install部署就完成了。config和lvs真实服务的config也是一样,只是目录和脚本不一样。

6、我们命令行怎么用呢?

以lvs的install为例


salt -N 'lvs-server' state.sls myscript.lvs-server.install


done