一、SaltStack介绍

       SaltStack是一个服务器基础架构集中化管理平台,SaltStack基于Python语言实现,也是基于C/S架构,结合轻量级消息队列(ZeroMQ)与Python第三方模块(Pyzmq、PyCrypto、Pyjinjia2、python-msgpack和PyYAML等)构建,SaltStack整合了Puppet和Chef的功能,更适合大规模批量管理服务器,配置简单。

三大主要功能:远程执行、配置管理、云管理

运行方式:local、Master/Minion、Salt SSH

二、SaltStack工作原理

       salt-master服务启动后会开启两个端口:4505和4506,minion没有端口,通过“双向密钥交换”(可通过tree /etc/salt/pki命令查看)来实现安全管理。salt-master每执行一条命令,所有minion均可收到。

[root@m01 haproxy]# lsof -n -i:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
salt-mini root 24u IPv4 0t0 TCP 172.16.1.61:->172.16.1.61: (ESTABLISHED)
salt-mast root 12u IPv4 0t0 TCP *: (LISTEN)
salt-mast root 14u IPv4 0t0 TCP 172.16.1.61:->172.16.1.7: (ESTABLISHED)
salt-mast root 15u IPv4 0t0 TCP 172.16.1.61:->172.16.1.61: (ESTABLISHED)
salt-mast root 16u IPv4 0t0 TCP 172.16.1.61:->172.16.1.3: (ESTABLISHED)
[root@m01 haproxy]# lsof -n -i:4506 #所有的minion都与master通信,而回复的时候,master则使用4506端口
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
salt-mini root 13u IPv4 0t0 TCP 172.16.1.61:->172.16.1.61: (ESTABLISHED)
salt-mast root 20u IPv4 0t0 TCP *: (LISTEN)
salt-mast root 27u IPv4 0t0 TCP 172.16.1.61:->172.16.1.61: (ESTABLISHED)
salt-mast root 28u IPv4 0t0 TCP 172.16.1.61:->172.16.1.7: (ESTABLISHED)
salt-mast root 29u IPv4 0t0 TCP 172.16.1.61:->172.16.1.3: (ESTABLISHED)

三、SaltStack安装部署

1、环境

[root@m01 ~]# cat /etc/redhat-release
CentOS release 6.9 (Final)
[root@m01 ~]# uname -r
2.6.32-696.el6.x86_64

2、master服务端安装

rpm -ivh http://mirrors.zju.edu.cn/epel/6/x86_64/epel-release-6-8.noarch.rpm#安装epel源
yum install salt-master salt-minion -y
sed -i 's/#master: salt/master: 172.16.1.61/g' /etc/salt/minion#修改minion配置文件指定master
/etc/init.d/salt-master start
/etc/init.d/salt-minion start
chkconfig salt-master on
chkconfig salt-minion on

3、minion客户端安装配置

yum install salt-minion -y
sed -i 's/#master: salt/master: 172.16.1.61/g' /etc/salt/minion#直接替换指定master地址
/etc/init.d/salt-minion start
chkconfig salt-minion on

4、SaltStack常用命令参数

常用命令参数

命令说明

salt-key -L

查看minion列表

salt-key -A

同意接管所有的minion

salt-key -a

同意接管指定的一个minion

salt-key -D

删除所有认证的minion

salt-key -d

删除指定的minion

salt-run manage.up

查看存活的minion

salt-run manage.down

查看死掉的minion

salt-run manage.status

查看minion的相关状态

salt-run manage.versions

查看salt的所有master和minion的版本信息

salt -d

查看帮助文档

salt '*' sys.doc

查看帮助文档

salt -d|grep service

查看service相关模块命令

salt '*' service.get_all

获取minion所有服务

salt '*' service.reload sshd

重新加载sshd服务

salt '*' pkg.list_pkgs

显示软件包版本列表

salt '*' pkg.version python

显示软件包版本信息

salt '*' pkg.install httpd

安装软件包

salt '*' service.status mysql

查看mysql服务状态

salt '*' service.start mysql

启动mysql服务

salt '*' sys.list_modules

模块列表

salt-cp'*'/etc/hosts /etc/hosts

分发hosts文件到所有minion端

salt'*'file.copy/tmp/zabbix.sls /tmp/sls

把服务端对应文件拷贝到minion端相应目录下

salt '*' cp.get_dir salt://zabbix /tmp

把服务端对应目录拷贝到minion端相应目录下

5、远程执行

①cmd.script远程执行脚本

salt '*' cmd.script salt://scripts/runme.sh
salt '*' cmd.script salt://scripts/runme.sh 'arg1 arg2 "arg 3"'

②cmd.shell远程执行命令

salt '*' cmd.shell "ls -l | awk '/foo/{print \$2}'"
salt '*' cmd.shell template=jinja "ls -l /tmp/{{grains.id}} | awk '/foo/{print \$2}'"

③测试到客户端的连通性

[root@m01 ~]# salt '*' test.ping
m01:
True
haproxy01:
True
web02:
True

 ④遇到的问题

#问题
salt-minion dead but pid file exists
#解决
rm -fr /etc/salt/pki/minion/minion_master.pub
/etc/init.d/salt-minion restart

linux运维、架构之路-SaltStack快速入门的更多相关文章

  1. linux运维架构师职业规划

    1.假如你从来未接触过Linux的话,首先要做的就找一本指导书来学习.现在公认的Linux的入门书籍是“鸟哥的私房菜”,讲的很全面,鸟哥的私房菜一共分为两部,一部是基础篇,一部是服务器篇.“鸟哥的私房 ...

  2. linux运维、架构之路-Docker快速入门

    一.Docker介绍        Docker是Docker.lnc公司开源的一个基于LXC技术之上构建的Container容器引擎,源代码托管在Github上,基于Go语言并遵从Apache2.0 ...

  3. 从苦逼到牛逼,详解Linux运维工程师的打怪升级之路

    做运维也快四年多了,就像游戏打怪升级,升级后知识体系和运维体系也相对变化挺大,学习了很多新的知识点. 运维工程师是从一个呆逼进化为苦逼再成长为牛逼的过程,前提在于你要能忍能干能拼,还要具有敏锐的嗅觉感 ...

  4. Linux 运维入门到跑路书单推荐

    一.基础入门 <鸟哥的Linux私房菜基础学习篇>:最具知名度的Linux入门书<鸟哥的Linux私房菜基础学习篇>,全面而详细地介绍了Linux操作系统. https://b ...

  5. Linux运维企业架构实战系列

    Linux运维企业架构项目实战系列 项目实战1-LNMP的搭建.nginx的ssl加密.权限控制的实现 项目实战2-LVS.nginx实现负载均衡系列 2.1 项目实战2.1-实现基于LVS负载均衡集 ...

  6. Linux运维企业架构项目实战系列

    Linux运维企业架构项目实战系列 项目实战1—LNMP的搭建.nginx的ssl加密.权限控制的实现 项目实战2—LVS.nginx实现负载均衡系列2.1 项目实战2.1—实现基于LVS负载均衡集群 ...

  7. 初学者怎么快速掌握Linux运维?

    2018年里,Linux运维的职位数量和平均薪资水平仍然持续了去年的强劲增幅,比很多开发岗位涨的都快.从研究机构的数据来看,Linux职位数量和工资水平涨幅均在IT行业的前五之列,比去年的表现还要好一 ...

  8. Nginx+Lua+Redis整合实现高性能API接口 - 网站服务器 - LinuxTone | 运维专家网论坛 - 最棒的Linux运维与开源架构技术交流社区! - Powered by Discuz!

    Nginx+Lua+Redis整合实现高性能API接口 - 网站服务器 - LinuxTone | 运维专家网论坛 - 最棒的Linux运维与开源架构技术交流社区! - Powered by Disc ...

  9. 如何快速成为一名Linux运维工程师

    如今的互联网,绝大多数的网站.服务.游戏均是跑在Linux上面的,虽说Linux发行版众多,只要玩熟了一种发行版,了解了Linux精髓.基本架构.设计原理,其他都是触类旁通的,千万不要在选择哪一发行版 ...

随机推荐

  1. CBAM: Convolutional Block Attention Module

    1. 摘要 作者提出了一个简单但有效的注意力模块 CBAM,给定一个中间特征图,我们沿着空间和通道两个维度依次推断出注意力权重,然后与原特征图相乘来对特征进行自适应调整. 由于 CBAM 是一个轻量级 ...

  2. 【tensorflow使用笔记二】:tensorflow中input_data.py代码有问题的解决方法

    由于input_data网页打不开,因此从博客找到代码copy: https://blog.csdn.net/weixin_43159628/article/details/83241345 将代码放 ...

  3. 如何把一些字符串用dict组织成json格式?(小算法)

    说明: 1. 数据库中的一条记录取出来是这样的(直接复制):'value1','value2' ,'value3' 2. 我希望使用的数据格式是:{key1:'value1',key2:'value2 ...

  4. base64加密小案例

    python终端下: import base64 >>> dict='{"name":"tom"}' >>> dict.en ...

  5. day47—JavaScript事件基础应用

    转行学开发,代码100天——2018-05-02 1.事件对象 JavaScript中事件对象通常用定义变量ev或event表示.为了兼顾浏览器兼容问题,定义事件对象为 var oEvent = ev ...

  6. Delphi XE2 之 FireMonkey 入门(2)

    FireMonkey 的控件都是自己绘制的(而不是基于系统组件), 我想它们应该是基于一些基本图形; 就从基本图形开始吧. FMX.Objects 单元给出的类: TShape //基本图形的基类 T ...

  7. 应用安全-web安全-WebShell整理

    shellcode.aspx <%@ Page Language="C#" AutoEventWireup="true" Inherits="S ...

  8. 20191105 《Spring5高级编程》笔记-第9章

    第9章 事务管理 一些名词: 2PC(2 Phase Commit) XA协议 JTS(Java Transaction Service) JCA(Java EE Connector Architec ...

  9. [Vim 填坑] 01 Vim 中替换与注释的补充

    目录 1. print( 坑的信息 ) 2. 开始填坑 (1) :n1,n2s/old/new/gc 的后续命令 ^E ^Y (2) 利用"V-可视"模式进行多行注释 1. pri ...

  10. windows 端 nginx怎么配置 虚拟机的fastdfs文件管理系统

    FastDFS的安装这里不演示 nginx.conf #图片服务 upstream img_server_pool{ server 192.168.133.131:80 weight=10; } #学 ...