saltstack入门介绍




一、基础概念及原理




    SaltStack 采用 C/S模式,server端就是salt的master,client端就是minion,minion与master之间通过ZeroMQ消息队列通信。minion上线后先与master端联系,把自己的pub key发过去,这时master端通过salt-key -L命令就会看到minion的key,接受该minion-key后,也就是master与minion已经互信






二、安装:

准备工作:

1.安装EPEL: rpm -ivh http://mirrors.sohu.com/fedora-epel/6/x86_64/epel-release-6-8.noarch.rpm


2.设置域名hosts文件#(当然可以直接使用IP)

cat /etc/hosts
192.168.2.81  test81.salt.cn
192.168.2.82  test82.salt.cn
192.168.2.83  test83.salt.cn




Master:192.168.2.81

Minion:192.168.2.82,192.168.2.83



Master端:

yum install salt-master



配置文件:/etc/salt/master 



端口:
4505(publish_port):salt 的消息发布系统
4506(ret_port):salt 客户端与服务端通信的端口





启动:

/etc/init.d/salt-master start





Minion端:


yum install salt-minion

配置文件:/etc/salt/minion


master: 服务端主机名

id: 客户端主机名

配置文件注意格式统一

master:test81.salt.cn
id:test82.salt.cn




启动服务:

 /etc/init.d/salt-minion  start



三、认证


和puppet一样, salt 的 master 和 minions 是通过证书通信的,故存在证书的信任颁发问题。

在master端:salt-key -L 查看当前需要接受的keys(master和minions都需要把服务开启)






salt-key -a test82.salt.cn  接受test82.kktalk.cn的证书









salt-key -A  #接受所有请求的证书



如果对客户端信任,可以让master自动接受请求,在master端/etc/salt/master配置


auto_accept: True




检测Master与两个Minion通讯是否正常




出现 True 说明服务端到客户端通信正常,基础环境搭建成功。



四、简单例子


在minions端安装httpd



配置  /etc/salt/master文件:

#file_roots   Saltstack相关配置文件全部都在这个目录下

file_roots:
  base:
    - /srv/salt
  dev:
    - /srv/salt/dev


默认没有这个目录,需要创建 创建目录mkdir -p  /srv/salt




Saltstack必须要有入口文件: /srv/salt/top.sls


Saltstack使用salt state system,它的核心是写sls(SaLt State file)文件,sls文件默认格式是YAML格式(以后会支持XML),并默认使用jinja模板,YAML与XML类似,是一种简单的适合用来传输数据的格式,而jinja是根据django的模板语言发展而来的语言,简单并强大,支持for if 等循环判断。salt state主要用来描述系统,软性,服务,配置文件应该出于的状态,常常被称为配置管理!

通常state,pillar,top file会用sls文件来编写。state文件默认是放在/srv/salt中,它与你的master配置文件中的file_roots设置有关


注意:sls遵从YAML规范, 它使用到两个空格代替tab,: 或 – 后面要有空格。(这里被坑过)



[root@test81 salt]# cat top.sls 

base:   #file_roots定义base  '*':    #匹配所有主机
    - dev.http   #这里调用/srv/salt/dev/目录下面的http.sls文件





sls文件写好以后,在master执行命令 salt “test82.salt.cn” state.highstate




出现Failed:0,表示执行成功(我上图是已经执行成功过,再次执行)


在minions查看


[root@test82 ~]# rpm -qa|grep httpd
httpd-2.2.15-29.el6.centos.x86_64
httpd-tools-2.2.15-29.el6.centos.x86_64

httpd包已经安装成功


如果要在minions端执行,需要执行命令:   salt-call state.highstate  


转自:http://blog.cunss.com/?p=255

官方文档:https://docs.saltstack.com/en/latest/topics/index.html 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章