saltstack安装配置使用

背景:puppet 用ruby开发,saltstack用python语言开发的包


环境:

修改hostname和hosts文件, 关闭selinux,清空iptables

172.16.115.157  master.huangzp.com  ;hostname master

172.16.115.203  agent.huangzp.com  ;hostname agent


一、配置认证

1. 安装和启动Saltstack服务

master上:

yum install  -y epel-release

yum install -y salt-master salt-minion

vim /etc/salt/minion    //修改

master: 172.16.115.157

service salt-master start

service salt-minion start


agent上:

yum install -y epel-release

yum install -y salt-minion

vim /etc/salt/minion    //修改

master: 172.16.115.157

service salt-minion start


2. 配置saltstack认证

master上:

salt-key -a agent.huangzp.com      // agent机器/etc/salt/pki/minion目录下生产一个minion_master.pub文件

salt-key        //查看已经签名的客户端

salt-key -a    //签名指定的主机

salt-key -A    //签名所有的主机

salt-key -d    //删除指定主机的签名

salt-key --help   //查看各命令的用法


3.salstack远程执行命令

3.1 ping测试

salt '*' test.ping    //*表示所有已经签名的客户端,也可以指定某一台;test为模块名,ping为函数


3.2 查看磁盘信息

salt '*' cmd.run 'df -h'  //*星号位置支持通配、正则、列表等


例如:

salt 'web*'

salt 'web[0123]'

salt -L 'web10,web11'    //多个机器用分号隔开,需要加-L

salt -E 'web(10|11)'        //使用正则,需加-E

支持grains               //加-G

支持pillar               //加-l



二、saltstack grains

grains概念

minion启动时,收集的一些系统信息,比如操作系统类型、网卡IP、内核版本、cpu架构等;

根据收集的信息可以做配置管理工作;

静态不实时信息;

支持自定义信息


salt 'agent.huangzp.com' grains.ls   //列出所有grains项目名字


salt 'agent.huangzp.com' grains.items  //列出所有grains项目以及值


1. 自定义编辑/etc/salt/grains  //minion端添加:

role: nginx   //分号后空一格

env: test

myname: silen

mydomian: silen.com


2. 重启minion服务,查看结果

service salt-minion restart

salt ‘agent.huangzp.com’ grains.item role env myname mydomian   //item没有s


3. 使用-G,指定机器

salt -G mydomian:silen.com cmd.run 'w'


三、saltstack pillar

pillar概念

和grains不一样,是在master上定义;

针对minion定义的重要数据信息,如密码等,存在pillar中

可以定义变量


1. 配置自定义pillar

vim /etc/salt/master    //修改配置文件,找到:

pillar_roots:                //相当于key-value

base:                        //相当于二层key,空2格

- /srv/pillar                //相当于value,空4格,,指定主目录

去掉前面的#号


2. mkdir /srv/pillar     //创建目录

vim /srv/pillar/test.sls  //自定义test模块,名称不能是纯数字

conf: /etc/123.conf       //自定义conf位置目录

myname: silen             //自定义

vim /srv/pillar/top.sls  //配置总入口配置文件,固定名称,否则test.sls不生效,指定客户端和同目录先的配置文件(test.sls也可直接放置在总配置文件中)内容:

base:                                   //固定格式开头

'agent':        //作用的机器,空两格,agent是master识别出来的名字

- test                                 //模块名称,空四格,也该目录下,为test.sls


3. /etc/init.d/salt-master restart   //重启master

salt '*' saltutil.refresh_pillar    //刷新pillar配置来获取新的pillar状态,不需要重启

salt '*' pillar.itme conf             //查看conf

salt '*' pillar.itmes                  //查看所有


pillar同样可以用来作为salt的匹配对象,大写I如

salt -l 'conf:/etc/123.conf' test.ping



四、saltstack配置apache

1. master上:

vim /etc/salt/master   //找到file_roots

file_roots:

base:

- /srv/salt

#去掉注释


2. mkdir /srv/salt ;cd /srv/salt

vim /srv/salt/top.sls    //加入

base:

'*':

- apache

# 即在所有的客户机上执行apache模块的安装


3. vim /srv/salt/apache.sls //加入

apache-service:  //显示的名称,当使用该配置文件中的pkg.installed时,名称可以被调用

pkg.installed:   //模块名称.函数名

- names:      //如果只有个一个服务,则直接写成-name: httpd

- httpd

- httpd-devel

service.running:   //保证服务启动的函数

- name: httpd

- enable: True  //开机启动


重启 /etc/init.d/salt-master restart


刷新配置文件 salt '*' saltutil.refresh_pillar


4. 执行

salt 'agent' state.highstate



五、saltstack文件和目录管理

1. vim /srv/salt/filetest.sls,关键函数 file.managed

file_test:   //名称

file.managed:     //模块名.函数

- name: /tmp/huanzp.com     //放到对方机器的文件名字

- source: salt://test/123/1.txt   //来源,salt:// == /srv/salt/

- user: root

- group: root

- mode: 644


2. vim /srv/salt/top.sls   //加入

base:

'agent':

- filetest


3. 执行

mkdir -p /srv/salt/test/123

echo "test123456">/srv/salt/test/123/1.txt

salt 'agent' state.highstate   // 只要是涉及配置的,都执行这个语法


4. vim /srv/salt/testdir.sls,关键函数 file.resurce

file_dir:   //名称

file.recurse:     //模块名.函数

- name: /tmp/testdir     //放到对方机器的目录

- source: salt://test/123   //来源,salt:// == /srv/salt/

- user: root

- group: root

- file_mode: 644

- dir_mode: 755

- mkdir: True

- clean: True  //加上它之后,源删除文件或者目录也会删除


5. vim /srv/salt/top.sls   //加入

base:

'agent':

- testdir


6. 执行

salt 'agent' state.highstate



六、saltstack远程执行命令

1. vim /srv/salt/cmdtest.sls,关键函数cmd.run

cmd_test:

cmd.run:

- onlyif: test -f /tmp/3.txt     //onlyif表示条件,与unless相反

- names:

- touch /tmp/4.txt       //没有冒号

- mkdir /tmp/dir1

- user: root  //user 使用哪个用户去操作


2. vim /srv/salt/top.sls //加入

base:

'agent':

- cmdtest


3. 执行

salt 'agent' state.highstate



七、saltstack远程执行shell脚本

1. vim /srv/salt/shelltest.sls,关键函数cmd.script

shell_test:

cmd.script:

- source: salt://test/1.sh

- user: root


2. vim /srv/salt/test/1.sh

#! /bin/bash

touch /tmp/5.txt


3. vim /srv/salt/top.sls //加入

base:

'agent':

- shelltest


4. 执行

salt 'agent' state.highstate



八、saltstack管理任务计划

1. vim /srv/salt/crontest.sls,关键函数 cron.present;cron.present    //删除计划任务

cron_test:

cron.present:

- name: /bin/touch /tmp/6.txt

- user: root

- minute: '*'     //*需要用单引号引起来

- hour: 18

- daymonth: '*'

- dayweek: '*'


2. vim /srv/salt/top.sls //加入

base:

'agent':

- cronlltest


3. 执行

salt 'agent' state.highstate



九、saltstack几个常用的命令

cp.get_file //拷贝master上的文件到客户端

salt '*' cp.get_file salt://test/1.txt /tmp/001.txt


cp.get_dir //拷贝目录

salt '*' cp.get_dir salt://test/conf  /tmp/     //自动在客户端创建conf目录


salt-run manage.up    //显示存活的minion


salt '*' cmd.script salt://test/1.sh  //命令行下在master上执行shell脚本











本文转自 huangzp168 51CTO博客,原文链接:http://blog.51cto.com/huangzp/1912901,如需转载请自行联系原作者
上一篇:FCKEditor的使用配置步骤


下一篇:详解 JavaScript 的私有变量