saltstack初探

salt-key -y -d linux-node1 #删除linux-node1节点的认证

salt -G 'cpuarch:x86_64' grains.item num_cpus >>1.txt  #把获取到的信息输出至1.txt中

salt "*" state.sls web.apache  #执行apache.sls

apache-install:     # 状态声明ID,每一个 ID 就是一个配置项
pkg.installed: # 这里面的模块可以是内置的状态模块,也可以是自定义的状态模块
- names:
- httpd
- httpd-devel apache-service:
service.running:
- name: httpd
- enable: True

salt分发文件,这个今天在线上用到了,很快很爽,记录下:

cp.get_file可以用来在minion端下载master上的文件。

  salt '*' cp.get_file salt://vimrc /etc/vimrc
这个会通知所有的minion客户端来下载vimrc文件到/etc/vimrc salt '*' cp.get_file "salt://{{grains.os}}/vimrc" /etc/vimrc template=jinja
也可以用模版,表示只在OS系统名称一样的机器上下载文件 salt '*' cp.get_file salt://vimrc /etc/vimrc gzip=5
salt在传输大文件时还支持压缩:压缩比率是1-9 salt '*' cp.get_file salt://vimrc /etc/vim/vimrc makedirs=True
cp.get_file默认是不会创建目的端的目录的,如果该目录不存在的时候。要改变这种情况可以使用mkaedirs参数 salt '*' cp.get_dir salt://etc/apache2 /etc
salt '*' cp.get_dir salt://etc/{{pillar.webserver}} /etc gzip=5 template=jinja
cp.get_dir和cp.get_file一样,不过get_dir是用来下载整个目录的,也支持模版和压缩

saltstack花样输出结果

以yaml格式输出执行结果:

[root@test ~]# salt --out=yaml '*' cmd.run_all 'echo my salt'
test:
pid: 42817
retcode: 0
stderr: ''
stdout: my salt
confluence:
pid: 6514
retcode: 0
stderr: ''
stdout: my salt

以json格式输出执行结果:

[root@test ~]# salt --out=json '*' cmd.run_all 'echo my salt'
{
"test": {
"pid": ,
"retcode": ,
"stderr": "",
"stdout": "my salt"
}
}
{
"confluence": {
"pid": ,
"retcode": ,
"stderr": "",
"stdout": "my salt"
}
}
上一篇:机房收费系统个人重构关于SQLHelper


下一篇:Linux基础操作整理