saltstack学习实例

I、saltstack介绍

摘抄“葱油拌面  Lax” 翻译的一段

不久前的一天,当我自豪穿着Salt Stack 文化衫的时候,我的女儿看到后就当面问我,“Salt Stack 是什么呀?”
于是,我开始了作出了如下的解释,假如你有很多台服务器而且想要操作这些服务器,你也许需要一台一台的登录这些服务器,每次作出一次操作变更。这些操作可
能是相当简单的,比如重启他们或者检查他们已经运行了多久,更或者,你想要做些更复杂的事情,比如安装软件和按照你的特殊需求来配置他们,也许你只是想要
增加用户并且配置他们的权限。

假如你有百十来台服务器,你应该怎么做?想象一下你每次一台一台的登陆这些服务器,执行同样的命令在这些100台的服务器中并且编辑同一个配置文
件,你可以想象吗?这是多么的苦逼!仅仅更新一下用户的密码策划就要用掉数天的时间,并且你可能出现错误的操作,怎么样通过一个命令一次完成所有服务器的
操作?怎么解决?答案就是,Salt Stack!

简言之,saltstack是用python写的一个命令行工具,主要有两个功能:配置管理(puppet专属),远程执行命令(貌似fabric专属)。

II、安装(yum安装比较方便哈)

1、环境准备

OS 版本:CentOS6.5

master: 192.168.30.135

minion: 192.168.30.131    \192.168.30.133\192.168.30.134

Master就是salt的服务端,可以说是中心机器,minion就是客户端,就是我们即将管理的多台机器。

2、master端安装及配置

#导入EPEL YUM源 
rpm -Uvh http://mirror.pnl.gov/epel/6/x86_64/epel-release-6-8.noarch.rpm
#服务器master的安装 
yum -y install salt-master

配置启动:

vi /etc/salt/master
interface: 192.168.30.135  #此处是server端监听的地址。
auto_accept: True    #此处是自动接受客户端发送过来的key,如果服务器很多的话,需要开启该功能。
##启动
service satl-master start

3、client端安装

#导入EPEL YUM源 
rpm -Uvh http://mirror.pnl.gov/epel/5/i386/epel-release-5-4.noarch.rpm
yum -y install salt-minion

配置启动:

#vi /etc/salt/minion
master: 192.168.30.135  #这里改成你的master服务器地址
id: node1 #建议这里修改成主机名,便于master端分辨
  
#在配置文件末尾加入下面内容,每隔5分钟自动同步master配置,效果等同于在客户端执行salt-call state.highstate或在server端执行 salt ‘*‘state.highstate
schedule:
  highstate:
    function: state.highstate
    minutes: 5
##启动    
/usr/bin/salt-minion -d #后台启动
/usr/bin/salt-minion -d  #前台启动,方便调试
#注:minion启动后,自动会生成公钥私钥,并把公钥发送到master端。
#minion不监听端口,全靠和master保持长连接,可通过netstat -an|grep ES来查看是否有连接。    
#也可以类似service satl-minion start方式启动


III、常用命令使用

1、salt-key证书管理

master端证书存放路径:/etc/salt/pki/master/minions

salt-key  -L            #查询所有接收到的证书
salt-key  -a <证书名>   #接收单个证书
salt-key  -A            #接受所有证书
salt-key  -d <证书名>   #删除单个证书
salt-key  -D            #删除所有证书

2、salt执行远程主机命令

salt ‘*‘  test.ping   
#*为匹配所有主机,test.ping为salt一个函数,注:*号是正则,若分了多个组,可以类似于web*,只匹配web服务器
salt ‘*‘  cmd.run ‘df -h‘  
#查看所有主机的磁盘信息,cmd.run执行单个命令
salt ‘*‘  cmd.script salt://hello.sh 
salt ‘*‘  cmd.script  salt://scripts/runme.sh ‘arg1 arg2 "arg 3"‘
#cmd.script执行一个脚本,即把本地脚本拷贝到远程主机上执行,hello.sh要放在指定的文件存放路径,默认是/srv/salt/
salt ‘*‘  state.highstate
#向客户端推送master端配置。
salt ‘*‘ cmd.run ‘df -h ‘  -t 5   
#超时控制

3、salt分组管理

a、方法一

 vim /etc/salt/master   找到 nodegroups去掉注释,见如下:
    nodegroups:    
        test1: ‘[email protected],node2‘    
        test2: ‘[email protected]:CentOS and target‘
    重启master,service salt-master restart
    执行分组的命令及结果:
    [[email protected] ~]#  salt -N test1 cmd.run ‘hostname‘    
     node1:        
         node1.test.com    
     node2:        
         node2.test.com

b、方法二

    编辑/etc/salt/master配置文件,在大概12行左右 找到下面的情况去掉注释
    #default_include: master.d/*.conf
    然后在/etc/salt目录下建立master.d目录,新建一个配置文件,如:group.conf,内容如下:
    [[email protected] master.d]# more group.conf     
    nodegroups:        
        test1: ‘[email protected],node2‘        
        test2: ‘[email protected]:CentOS and ttarget‘
    重启后,执行结果和方法一一致

4、salt-run检查客户端up状态

注:该处状态检查salt使用的是test.ping,如果服务器禁ping,则该处不准。

salt-run manage.status #查看所有客户端up/down状态
salt-run manage.up    #只显示up状态的客户端
salt-run manage.down  #只显示down状态的客户端

5、salt-cp批量拷贝文件

在master端执行:

语法:
salt-cp [options] ‘<target>‘SOURCE DEST
    
示例:
 salt-cp ‘*‘  /etc/hosts   /etc/hosts #把master上的hosts文件分发到所有主机。


IV、salt-ssh

---待完成

V、自动同步文件

1、编辑top.sls

[[email protected] salt]# cat /srv/salt/top.sls
base:
  "*":
    - test.test

2、在/srv/salt下建立test目录,然后进入test目录,编辑test.sls

[[email protected] test]# more test.sls 
/home/eric/test/UserParameter.conf:   ##minion里放置文件的位置
  file.managed:
    - source: salt://test/UserParameter.conf     ##master里面源文件的位置
    - backup: minion        #当文件发生变化时,都会把原文件备份,备份文件目录:/var/cache/salt/minion/file_backup/
    - mode: 744
    - user: root
    - group: root

3、把要同步的配置文件(例如:UserParameter.conf)放到/srv/salt/test下面;/srv/salt目录下的目录结构如下:

[[email protected] salt]# tree
.
├── test
│   ├── test.sls
│   └── UserParameter.conf
└── top.sls
1 directory, 3 files
时间: 2024-10-13 12:14:03

saltstack学习实例的相关文章

saltstack学习记录

安装 pip 安装 注意  依赖到zeromq3 minion过一段时间去请求master salt-api  可以访问salt去远程执行 ruby puppet   DSL配置   erb文件  模块  加载  模板支持最差 chef     定义直接是ruby代码   erb模板系统   原生支持 python saltstack   yaml配置文件    python程序模板   模板支持很好 python写模块 ipc 进程间通信 都使用key认证    安全 salt-key  -L

SaltStack 学习笔记 - 第十二篇: SaltStack Web 界面

SaltStack 有自身的用python开发的web界面halite,好处是基于python,可以跟salt的api无缝配合,确定就比较明显,需要个性化对web界面进行定制的会比较麻烦,如果喜欢体验该界面的可以参考下面的文章  http://rfyiamcool.blog.51cto.com/1030776/1275443/ 我是运用另一个python+php来进行web开发,具体需要的工具有在我的另一篇文章里面介绍过,这里再重新进行整个开发介绍 首先介绍php 跟python通信的工具 pp

saltstack学习

一.安装 1.master安装 yum install salt-master vi /etc/salt/master interface: 192.168.55.1 /etc/init.d/salt-master start 2.minion安装 yum install salt-minion vi /etc/salt/minion master: 192.168.55.1 id: 192.168.5.31 /etc/init.d/salt-minion start 配置文件interface

Struts2+Spring+Ibatis用户注册、登录、管理入门学习实例源码下载

原文:Struts2+Spring+Ibatis用户注册.登录.管理入门学习实例源码下载 源代码下载地址:http://www.zuidaima.com/share/1550463735532544.htm Struts2+Spring+Ibatis用户注册.登录.管理入门学习实例源码下载 项目截图: jar包和sql文件都在源码包中. 运行截图: 用户注册页面: 用户管理页面:

Saltstack 学习之target minions(一)

本文总结saltstack如何定位目标主机,以及介绍一些常见使用样例. > 为什么需要定位主机? 作为配置管理软件,首先要解决的是如何确定一次推送的主机,或者说特定配置的推送目标.试问如果无法很好的确定一次或多次推送的目标,又何谈实现大批主机的分类配置管理的自动化呢? > saltstack的target机制? saltstack 为此建立了一套很是完善的minion定位机制.官方术语叫"target minions",即通过多种途径,指定minion具有的属性(比如正则匹

Saltstack 学习之target minions(二)

本文紧接上一篇,就target的各分类方式的详细用法予以讲解. > Grains 首先一点,需要注意的是,minion的grains信息在minion启动时便会生成和加载,之后便以静态数据的形式存在. Grains的匹配在前文已经有所提及,实现原理便是读取grains的dict数据,而后与tgt字串进行匹配,当然,它支持嵌套key-value形式,如: salt -G 'ec2_tags:environment:*production*' test.ping -v 上述命令即寻找grains的e

Saltstack学习笔记(2)

1.5 Salt  命令介绍(常用的这些一定要多练习) 命令           功能描述 salt           Salt 主命令,比如执行命令模块 satl-cp        复制文件到指定的系统上去 salt-key       和 Minion 之间进行身份验证 salt-master    Master 主守护进程,用于控制 Minion salt-run       前端命令执行 salt-syndic    Salt syndic 守护进程,用于多级 salt-master

saltstack学习笔记7-States

States是saltstack中的配置语言,日常进行配置管理时需要编写大量的states文件.比如安装一个包,然后管理一个配置文件,最后保证某个服务正常运行. 编写一些states sls文件(描述状态配置的文件)去描述和实现我们的功能.编写states sls文件都是YAML语法.当然states sls文件也支持使用Python语言,其实编写states sls文件并不难,官方提供大量的示例,我们只需要记住编写格式,然后根据自己的实际需求去编写适合自己业务的states sls文件 查看所

saltstack学习笔记9-JOB

saltstack里面执行任何一个操作都会在master上产生一个jid号,就像上一节存储到redis上的数据显示的一样 ./redis-cli monitor OK 1461054358.412376 [0 127.0.0.1:58564] "SELECT" "0" 1461054358.412717 [0 127.0.0.1:58564] "SET" "minion1:20160419162558137768" "