saltstack

saltstack搭建:

saltstack是一个基础设施管理工具,保持了输入输出,配置文件的一致性,所有文件均使用了YAML格式,主要负责配置管理和远程执行。

三大功能:

远程执行命令,配置管理,云管理

saltstack是一主多从结构。

server1为主,server3/4为从

首先下好依赖包,或者是在安装时一步一步解决依赖性,比较复杂。

[[email protected]1 salt]# ls

libyaml-0.1.3-4.el6.x86_64.rpm

pciutils-3.1.10-4.el6.x86_64.rpm

pciutils-libs-3.1.10-4.el6.x86_64.rpm

python-babel-0.9.4-5.1.el6.noarch.rpm

python-backports-1.0-5.el6.x86_64.rpm

python-backports-ssl_match_hostname-3.4.0.2-2.el6.noarch.rpm

python-chardet-2.2.1-1.el6.noarch.rpm

python-cherrypy-3.2.2-4.el6.noarch.rpm

python-crypto-2.6.1-3.el6.x86_64.rpm

python-futures-3.0.3-1.el6.noarch.rpm

python-jinja2-2.8.1-1.el6.noarch.rpm

python-libcloud-0.20.0-1.el6.noarch.rpm

python-markupsafe-0.11-10.el6.x86_64.rpm

python-msgpack-0.4.6-1.el6.x86_64.rpm

python-ordereddict-1.1-2.el6.noarch.rpm

python-requests-2.6.0-3.el6.noarch.rpm

python-six-1.9.0-2.el6.noarch.rpm

python-tornado-4.2.1-1.el6.x86_64.rpm

python-urllib3-1.10.2-1.el6.noarch.rpm

python-zmq-14.5.0-2.el6.x86_64.rpm

PyYAML-3.11-1.el6.x86_64.rpm

salt-2016.11.3-1.el6.noarch.rpm

salt-api-2016.11.3-1.el6.noarch.rpm

salt-cloud-2016.11.3-1.el6.noarch.rpm

salt-master-2016.11.3-1.el6.noarch.rpm

salt-minion-2016.11.3-1.el6.noarch.rpm

salt-ssh-2016.11.3-1.el6.noarch.rpm

salt-syndic-2016.11.3-1.el6.noarch.rpm

yum-3.2.29-60.el6.noarch.rpm

yum-utils-1.1.30-30.el6.noarch.rpm

zeromq-4.0.5-4.el6.x86_64.rpm

[[email protected] salt]#

解决依赖性之后就可以安装.

安装master

[[email protected] salt]# ls |wc -l

31

[[email protected] salt]# yum install -y *

安装minion

安装minion要把和主相关的文件删除,不然minion无法启动。

[[email protected] salt]# ls |wc -l

27

[[email protected] salt]# yum install -y *

************

注意:所有修改必须添加两个空格,这是格式,不然会报错

修改master配置:

vim /etc/salt/master

修改接口interface为自己的IP

[[email protected] salt]# cat /etc/salt/master|grep ‘interface‘

# The address of the interface to bind to:

interface: 172.25.33.1

# the interface option must be adjusted, too. (For example: "interface: ‘::‘")

# The port used by the communication interface. The ret (return) port is the

# interface used for the file server, authentication, job returns, etc.

# The publisher interface ZeroMQPubServerChannel

# masters‘ syndic interfaces.

# The example below enables minion foo.example.com to get ‘network.interfaces‘ mine

#     - network.interfaces

修改minion配置:

vim /etc/salt/minion

修改master为master 的IP

[[email protected] salt]# cat /etc/salt/minion|grep ‘^  master‘

master: 172.25.33.1285

#auto_accept: False 是否接受自动认证。

启动服务。启动主服务。

[[email protected] salt]# service salt-master start

Starting salt-master daemon:                               [  OK  ]

启动minino服务

[[email protected] salt]# service salt-minion start

Starting salt-minion:root:server3.example.com daemon: OK

此时可可以在master 端查看到minion列表

[[email protected] salt]# salt-key -L

Accepted Keys:

Denied Keys:

Unaccepted Keys:

server3.example.com

Rejected Keys:

minion在第一次启动时会在/etc/salt/pki/minion(可以在/etc/salt/minion里设置。)生成key文件,在启动时将minion.pub发送给master

total 12

-rw-r--r-- 1 root root  450 Mar 13 11:09 minion_master.pub

-r-------- 1 root root 1674 Mar 13 10:59 minion.pem

-rw-r--r-- 1 root root  450 Mar 13 10:59 minion.pub

master在接受到minino的public key 后通过salt-key命令接受minion的public key,这样,就可以对minion发送指令了。

接受所有的key

[[email protected] salt]# salt-key -A

The following keys are going to be accepted:

Unaccepted Keys:

server3.example.com

Proceed? [n/Y] Y

Key for minion server3.example.com accepted.

[[email protected] salt]# salt-key -L

Accepted Keys:

server3.example.com

Denied Keys:

Unaccepted Keys:

Rejected Keys:

-a :accept ,-A:accept-all,-d:delete,-D:delete-all。可以使用 salt-key 命令查看到已经签名的客户端

向Minion发送测试:

[[email protected] salt]# salt ‘*‘ test.ping

server3.example.com:

True

至此,简单的saltstack搭建已经完成。

saltstack master 启动后会默认监控4505和4506端口,4505是salt的消息发送端口。4506是master 和minion的通信端口。

[[email protected] salt]# netstat -antlp |grep 4505

tcp        0      0 172.25.33.3:42094           172.25.33.1:4505            ESTABLISHED 1485/python2.6

[[email protected] salt]# netstat -antlp |grep 4506

[[email protected] salt]#

[[email protected] salt]# netstat -antlp |grep 4505

tcp        0      0 172.25.33.1:4505            0.0.0.0:*                   LISTEN      1101/python2.6

tcp        0      0 172.25.33.1:4505            172.25.33.3:42094           ESTABLISHED 1101/python2.6

[[email protected] salt]# netstat -antlp |grep 4506

tcp        0      0 172.25.33.1:4506            0.0.0.0:*                   LISTEN      1108/python2.6

查看minion的磁盘使用情况:

[[email protected] salt]# salt ‘*‘ disk.usage

server3.example.com:

----------

/:

----------

1K-blocks:

19134332

available:

15249116

capacity:

17%

filesystem:

/dev/mapper/VolGroup-lv_root

used:

2913236

/boot:

----------

1K-blocks:

495844

available:

436777

capacity:

8%

filesystem:

/dev/vda1

used:

33467

/dev/shm:

----------

1K-blocks:

251136

available:

251120

capacity:

1%

filesystem:

tmpfs

used:

16

[[email protected] salt]#

查看minion的文件。

[[email protected] salt]# salt ‘*‘ cmd.run "cat /etc/passwd" //*是minion的id,可以在minion中的id项设定,同时支持正则匹配。

server3.example.com:

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/sbin/nologin

daemon:x:2:2:daemon:/sbin:/sbin/nologin

adm:x:3:4:adm:/var/adm:/sbin/nologin

lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

sync:x:5:0:sync:/sbin:/bin/sync

shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

halt:x:7:0:halt:/sbin:/sbin/halt

mail:x:8:12:mail:/var/spool/mail:/sbin/no

在master配置文件中还可以对Minion进行分组:

1005 #####         Node Groups           ######

1006 ##########################################

1007 # Node groups allow for logical groupings of minion nodes. A group cons     ists of

1008 # a group name and a compound target. Nodgroups can reference other nod     egroups

1009 # with ‘[email protected]‘ classifier. Ensure that you do not have circular references     .

1010 #

1011 #nodegroups:

1012 #  group1: ‘[email protected],bar.domain.com,baz.domain.com or bl*.domai     n.com‘

1013 #  group2: ‘[email protected]:Debian and foo.domain.com‘

1014 #  group3: ‘[email protected]:Debian and [email protected]‘

配置管理apache

[[email protected] salt]# vim /etc/salt/master

524   file_roots:

525    base:

526      - /srv/salt/

/srv/salt/目录在系统中并不存在,需要自己创建

[[email protected] salt]# mkdir /srv/salt

[[email protected] salt]# cd /srv/salt/

[[email protected] salt]# ls

[[email protected] salt]# vim /etc/salt/master

[[email protected] salt]# ls

[[email protected] salt]# pwd

/srv/salt

[[email protected] salt]# vim top.sls

[[email protected] salt]# vim apache.sls

[[email protected] salt]# cat top.sls

base:

‘server3.example.com‘

-apache

[[email protected] salt]# cat apache.sls

apache-service:

pkg.instlled:

-names://如果是一个服务,可以使用,-name:httpd

-httpd

-httpd-devel

service running:

-name:httpd

-enable:Ture

[[email protected] salt]# service salt-master restart

Stopping salt-master daemon:                               [FAILED]//报错原因:格式错误,未留两个空格

Starting salt-master daemon:                               [  OK  ]

执行命令:

[[email protected] salt]# salt ‘server3.example.com‘ state.highstate

server3.example.com:

----------

ID: states

Function: no.None

Result: False

Comment: No Top file or external nodes data matches found.

Changes:

Summary for server3.example.com

------------

Succeeded: 0

Failed:    1

------------

Total states run:     1

Total run time:   0.000 ms

ERROR: Minions returned with non-zero exit code

[[email protected] salt]# tree /srv/salt/

/srv/salt/

├── apache.sls

└── top.sls

0 directories, 2 files

[[email protected] salt]# cat apache.sls

apache-service:

pkg.installed:

- name: httpd

service.running:

- name: httpd

- enable: True

[[email protected] salt]# cat top.sls

base:

‘*‘:

- apache

[[email protected] ~]# salt ‘server3.example.com‘ state.highstate

server3.example.com:

----------

ID: apache-service

Function: pkg.installed

Name: httpd

Result: True

Comment: The following packages were installed/updated: httpd

Started: 17:20:56.277491

Duration: 10208.904 ms

Changes:

----------

httpd:

----------

new:

2.2.15-29.el6_4

old:

----------

ID: apache-service

Function: service.running

Name: httpd

Result: True

Comment: Service httpd has been enabled, and is running

Started: 17:21:06.493284

Duration: 322.954 ms

Changes:

----------

httpd:

True

Summary for server3.example.com

------------

Succeeded: 2 (changed=2)

Failed:    0

------------

Total states run:     2

Total run time:  10.532 s

[[email protected] ~]# service httpd status

httpd (pid  2055) is running...

时间: 2024-10-29 19:10:29

saltstack的相关文章

Saltstack批量编译部署nginx(多模块)

最近一直在研究saltstack的同步文件和批量执行命令,随着架构的变大,批量部署的需求也变得明显起来了,我需要用一条命令就部署好nginx和tomcat,并且符合我所有的环境需求,可以直接投入生产环境使用,这就需要用到saltstack的批量安装部署功能了.这篇文章主要介绍nginx的批量部署,下篇讲解tomcat多实例的批量部署方法. 环境介绍: Centos 6.5 salt 2015.5.10 nginx 1.12.0 minion:test 1.修改master配置文件,修改后重启服务

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-rel

  Saltstack实战

一:saltstack简介 部署的工作,不能只用手来做了,我们需要用工具来完成,工具化和标准化是相辅相成的,工具化让线上运行的东西更标准 Saltstack是比较新的自动化工具,是python开发的,也提供了api,saltstack有三大功能,远程执行,配置管理和云管理,配置管理也可以叫做状态管理,运维三板斧,监控,执行,配置 Saltstack对不,Puppet是ruby写的不支持远程执行  ansible 也是python写的.Saltstack的官方网站就是saltstack.com 运

SaltStack 入门到精通 - 第一篇: 安装SaltStack

实际环境的设定: 系统环境: centos6 或centos5 实验机器: 192.168.1.100 软件需求: salt 套件,及其需求环境 实验目的: 成功安装salt,并实现salt主从间通讯 特殊设置: 其它目的: 安装SaltStack(下面简称为salt) epel安装:salt安装需要epel源支持,所以在安装salt前需要先安装epel包 # centos5 下载下面rpm  wget -O    epel.rpm https://dl.fedoraproject.org/pu

SaltStack 入门到精通 - 第七篇: Targeting

什么是Targeting? Targeting minions 是指那些minion会作为运行命令或是执行状态的目标.这些目标可以是一个主机名,系统信息,定义的分组,甚至是自定义的绑定的对象. 例如命令  salt web1 apache.signal restart 可以重启ID 为web1的minion的apache.当然也可以在top文件中使用web1来作为目标匹配的内容: base:   'web1':     - webserver Targing 有哪些匹配方式? Minion Id

使用saltstack集中部署zabbix服务

需求描述:使用saltstack在机器上部署zabbix服务. 思路:通过state sls实现. 安装zabbix的策略目录: 第一部分sls文件: 上面的策略是安装策略,目的是将安装包下载到minion,然后解压到安装目录. 第二部分是配置修改策略,修改后重启agentd服务. 模版配置文件一段信息,这个信息会被sls文件里的server变量替换掉 同步策略 salt '*' state.sls zabbix.config prod 这个会执行策略并安装zabbix. 是不是很简单啊 使用s

saltstack "ImportError: No module named salt.scripts"错误解决

一.问题描述 生产线上使用的自动化管理工具是saltstack,CentOS6.8 x64,python 2.6.6 ,正所谓不作不死,由于有些功能需要python2.7.x ,在升级好python2.7后,写了saltstack api 发现python2.7不好使,原理是python2.7下没有salt模块,因此pip install salt 即在python2.7下安装成功了salt模块,但是发现重启salt-master时报错.如下图: 生产线啊,这可不行,赶紧恢复吧.pip unin

Saltstack报错

最近学习saltstack,出现以下错误 [[email protected] ~]# salt 'minion.saltstack.com' state.sls init.pkg[ERROR   ] An un-handled exception was caught by salt's global exception handler:UnicodeDecodeError: 'ascii' codec can't decode byte 0xe8 in position 97: ordina

Saltstack Automatic grouping

一.要点: 知道key验证存放的目录 key在验证是手动还自动 对不在线的主机的处理 minion_id的命名规范 二.使用的技术栈 saltstack 相关的库:salt.config,salt.client,salt.runner 使用redis 存放两个数据库,第一个为存为字典,用于存放minion_id与物理IP的对应,另一个存为集合,用于项目_业务命名的方式包含相应的主机 使用watchdog对目录变更监控,事件触发机制 三.完整代码 # coding:utf8 # Created b

SaltStack部署

一.基础介绍 1.简介 SaltStack是一个服务器基础架构集中化管理平台,具备配置管理.远程执行.监控等功能,一般可以理解为简化版的puppet和加强版的func.SaltStack基于Python语言实现,结合轻量级消息队列(ZeroMQ)与Python第三方模块(Pyzmq.PyCrypto.Pyjinjia2.python-msgpack和PyYAML等)构建. 通过部署SaltStack环境,我们可以在成千上万台服务器上做到批量执行命令,根据不同业务特性进行配置集中化管理.分发文件.