点击架构师成长之路

架构师成长之路5.1-Saltstack安装及入门

(安装、配置、启动)

配置管理工具:

  • Pupper:1. 采用ruby编程语言;2. 安装环境相对较复杂;3.不支持远程执行,需要FUNC工具配置才可以
  • Ansible:1.采用python编程语言;2.被红帽收购;3.轻量级;4.基于模块工作的,本身没有批量部署的能力,真正批量部署的是ansible所运行的模块。
  • Saltstack:采用python编程语言,同时提供Rest API方便二次开发以及和其它平台进行集成(目前企业使用率最高)

Saltstack最基本的三大功能:

  • Remote execution远程执行:同时在上百上千台机器批量执行命令
  • Configuration management配置管理:状态管理(一种状态描述,但是这种状态很难回滚)
  • Event-Driven infrastucture事件驱动基础设施:监听对象,状态变化产生事件捕捉事件自动编排,故障自愈
  • Salt cloud 云管理:几乎可以管理所有的公有云和私有云

Saltstack常用的网址:

  • 官方网站:http://www.saltstack.com
  • 官方文档:http://docs.saltstack.com
  • Github:https://github.com/saltstack
  • 中国Saltstack用户组:http://www.saltstack.cn

Saltstack组件:

  • Salt Master组件:用于向在Salt Minion设备上运行的Salt管理器发送命令和配置。
  • Salt Minion组件:管理系统。此系统运行Salt minion,它从Salt master接收命令和配置。
  • Execution Modules组件:从命令行对一个或多个受管系统执行的特殊命令。用于:实时监控、状态和库存;一次性命令和脚本;部署关键更新。
  • Formulas(status)组件:系统配置的声明性或命令式表示。
  • Grains组件:系统变量。Grain是关于底层托管系统的静态信息,包括操作系统、内存和许多其他系统属性。您还可以为任何系统定义自定义Grain。
  • Pillar组件:用户定义的变量。这些安全变量定义并存储在Salt Master上,然后使用目标“分配”给一个或多个Salt Minion。Salt Pillar数据存储端口、文件路径、配置参数和密码等值。
  • Top File组件:将公式和Salt Pillar数据与Salt Minion匹配。
  • Runners组件:在Salt Master执行以执行支持任务的模块。Salt runner报告作业状态、连接状态、从外部api读取数据、查询连接的Salt minions等等。
  • Returners组件:将Salt minions返回的数据发送到另一个系统,如数据库。Salt Returners可以运行在Salt minions或Salt Master上。
  • Reactor组件:在你的Saltstack环境中发生事件时触发反应。
  • Salt Cloud / Salt Virt组件:在云提供商/管理程序上提供系统,并立即对其进行管理。
  • Salt SSH组件:

    在没有Salt minion的系统上通过SSH运行Salt命令。

Saltstack支持的操作系统:

  • Centos
  • Redhat
  • Debian
  • Ubuntu
  • FreeBSD
  • Solaris
  • Fedora
  • Gentoo
  • MAC OS X
  • Archlinux
  • Windows
  • Suse

Saltstack四种运行方式:

  • local:一台本地自运行
  • Minion/Master: 就是C/S模式
  • Syndic 代理组件管理(可以理解成zabbix proxy模式)
  • Salt SSH: 不用安装agent,也能通过SSH收集信息

1. Saltstack的安装

配置两台设备:

  • 一台安装命名为Saltstack01(172.18.20.226):安装salt-master和salt-minion;

    yum install -y salt-master salt-minion
  • 一台命名为Saltack02(172.18.20.227)只安装salt-minion。
    yum install -y salt-minion

Saltstack提供自己官方repo仓库 请点击 ,里面存在各个系统版本安装步骤

yum install https://repo.saltstack.com/yum/redhat/salt-repo-latest.el7.noarch.rpm

建议安装一个本地仓库,我才用的aliyun,如下:

关闭Saltstack01和Saltstack02防火墙:

systemctl stop firewalld.service    #临时关闭firewall
systemctl disable firewalld.service #禁止firewall开机启动

2. Saltstack的配置

2.1  启动Saltstack01的salt-master

systemctl start salt-master  #先启用salt-master

Saltstack01的目录

Saltstack02的目录

2.2 配置Saltstack01和Saltstack02minion配置文件, 并启动salt-minion

cd /etc/salt
vi minion # minion配置文件(多一个空格都能报错,配置master的ip地址或域名,前提要有DNS)

注意:

        配置文件采用YAML语言,切记不要使用TAB键。

默认配置master就可以,还有一个ID选项:如果不设置Id的话,默认获取到主机名:socket.getfqdn()。

systemctl start salt-minion

没有设置id的时候,查看一下minion_id默认就是FQDN名,就是Saltstack02。

minion_id 值的生成过程:

minion 默认按照如下顺序,试图在找到一个不是localhost的值作为ID:

Python函数socket.getfqdn() 获取的值;
/etc/hostname 定义的值(仅限于非Windows系统);
/etc/hosts (%WINDIR%\system32\drivers\etc\hosts on Windows hosts) 中定义的任何映射 127.0.0.0/8 的主机名做ID值

如果以上都能够产生一个ID, 并且不是localhost,then a sorted list of IP addresses on the minion (excluding any within 127.0.0.0/8) is inspected. The first publicly-routable IP address is used, if there is one.Otherwise, the first privately-routable IP address is used.如果一切都失败了,那么则使用localhost作为备用,最终获取的ID将记录在/etc/salt/minion_id文件中,该文件可以手动更改,重启服务后不会被重新覆盖。

注意:如果minion端主配置文件 /etc/salt/minion 中启用了 id: xxxx , 那么这个ID值将覆盖 /etc/salt/minion_id 中记录的ID数值.

此时Saltstack01的目录

此时Saltstack02的目录(启动minion之后就有了pki目录,并生成两个公钥和私钥文件)

2.3  Salt minion和Salt master如何通信???

通信之前需要认证,采用公钥和私钥。

  • 未配置minion的时候:Saltack02的pk/minion下面没有任何目录。
  • 配置完minion的时候:Saltack02的pk/minion下面会多出两个文件minion.pem私钥和minion.pub公钥。
  • Saltack02的公钥会发给Saltack01(Master),Saltack01(Master)收到以后放置在pki/master/minons_pre。命名方式是通过ID命名的,如果改过ID这个位置也要更改。
salt-key    # 查minion公钥认证  

salt-key 常用参数:

  • -L # 列出所有未被接受的公钥
  • -a # 接受(Accept)指定的主机公钥,后面接主机名
  • -r # 拒绝(Reject)指定的主机公钥,后面接主机名
  • -d # 拒绝(Deny)指定的主机公钥,后面接主机名
  • -A # 接受(Accept)所有的主机公钥
  • -R # 拒绝(Reject)所有的主机公钥
  • -D # 拒绝(Deny)所有的主机公钥
  • -y # 我们在接受主机公钥时需要按y确认,加上该参数可以省略交互
Accepted Keys 表示已经接受的公钥
Denied Keys 表示已经拒绝的公钥
Unaccepted Keys 表示还没有被接受的公钥
Rejected Keys 表示已经被拒绝的公钥
其中:Deny 是直接把包丢掉,不会有任何回应,相对粗暴点,而 Reject 则是会通知对方你的包被我拒绝了

 总结:

当初始化安装 minion 启动服务启动后:
minion端生成一个秘钥对,并产生一个ID值,minion服务会安装ID值命名的公钥发送给 master ,直到接受为止;
master认证完毕后,会将minion 端发送来的,以ID值命名的公钥存放在 /etc/salt/pki/master/minions_pre 目录中(无ID值默认就是FQDN名);
master认证完毕后,会将自身的公钥发送给 minion,并存储为 /etc/salt/pki/minion/minion_master.pub。  

 扩展:

master 秘钥对默认存储在/etc/salt/pki/master/master.pub  /etc/salt/pki/master/master.pem
master 端认证的公钥存储在:/etc/salt/pki/master/minions/
minion 秘钥对默认存储在/etc/salt/pki/minion/minion.pub /etc/salt/pki/minion/minion.pem
minion 存放的master公钥/etc/salt/pki/minion/minion_master.pub
minion_id 默认存储在/etc/salt/minion_id

master会将master的公钥发给minior,此时miniors的目录:

master开始可以管理miniors,此时master的目录(会将pki/master/minons_pre下的目录转移到pki/master/minons下):

此时master已经可以和miniors通信,测试一下

salt '*' test.ping  #

salt ‘*’ test.ping涉及的组件比较多,包括Master Req Server,Master Publisher,Minion,Master EventPubliser等,现在概要地介绍下整个实现流程:

在salt-master机器执行salt ‘*’ test.ping命令;
salt向Master Req Server发送带publish命令的消息;
Master Req Server收到消息后向publish_pull.ipc push消息;
Master Publisher向Minion Publish消息;
Minion收到消息后启动一个新进程来执行消息中fun指定的函数;
函数执行完成后,返回结果给Master Req Server;
Master Req Server把结果push给Master EventPublisher;
这时因为salt客户端订阅了Master EventPublisher,将收到返回结果,之后直接输出到终端。整个流程结束。

master有端口4505和4506,minior无端口:

lsof -n -i:4505  #检查所有和端口4505有关的连接
lsof -n -i:4506 #检查所有和端口4506有关的连接

......

架构师成长之路5.1-Saltstack安装及入门的更多相关文章

  1. 架构师成长之路2.2-PXE+Kickstart安装部署

    点击返回架构师成长之路 架构师成长之路2.2-PXE+Kickstart安装部署 系统测试环境: 实验环境:VMware Workstation 12 系统平台:CentOS Linux releas ...

  2. 架构师成长之路3.1-Cobber原理及部署

    点击返回架构师成长之路 架构师成长之路3.1-Cobber原理及部署 Cobbler是一个Linux服务器安装的服务,可以通过网络启动(PXE)的方式来快速安装.重装物理服务器和虚拟机,同时还可以管理 ...

  3. 架构师成长之路5.2-Saltstack远程执行

    点击架构师成长之路 架构师成长之路5.2-Saltstack远程执行 配置管理工具: Pupper:1. 采用ruby编程语言:2. 安装环境相对较复杂:3.不支持远程执行,需要FUNC工具配置才可以 ...

  4. 架构师成长之路5.7-Saltstack数据系统

    点击架构师成长之路 架构师成长之路5.7-Saltstack数据系统 1. Saltstack的两种数据系统 Grains Pollars 2. Saltstack数据系统---Grains Grai ...

  5. 架构师成长之路5.6-Saltstack配置管理(jinja模板)

    点击架构师成长之路 架构师成长之路5.6-Saltstack配置管理(jinja模板) 配置管理工具: Pupper:1. 采用ruby编程语言:2. 安装环境相对较复杂:3.不支持远程执行,需要FU ...

  6. 架构师成长之路5.5-Saltstack配置管理(状态间关系)

    点击架构师成长之路 架构师成长之路5.5-Saltstack配置管理(状态间关系) 配置管理工具: Pupper:1. 采用ruby编程语言:2. 安装环境相对较复杂:3.不支持远程执行,需要FUNC ...

  7. 架构师成长之路5.4-Saltstack配置管理(LAMP架构案例)

    点击架构师成长之路 架构师成长之路5.4-Saltstack配置管理(LAMP架构案例) 配置管理工具: Pupper:1. 采用ruby编程语言:2. 安装环境相对较复杂:3.不支持远程执行,需要F ...

  8. 架构师成长之路5.3-Saltstack配置管理(State状态模块)

    点击架构师成长之路 架构师成长之路5.3-Saltstack配置管理(State状态模块) 配置管理工具: Pupper:1. 采用ruby编程语言:2. 安装环境相对较复杂:3.不支持远程执行,需要 ...

  9. 架构师成长之路7.1 CDN理论

    点击返回架构师成长之路 架构师成长之路7.1 CDN理论 CDN,Content Distribute Network,内容分发网络:CDN解决的是如何将数据快速可靠从源站传递到用户的问题.用户获取数 ...

随机推荐

  1. http常见状态码分析

    200:这个是最常见的http状态码,表示服务器已经成功接受请求,并将返回客户端所请求的最终结果 301:客户端请求的网页已经永久移动到新的位置,当链接发生变化时,返回301代码告诉客户端链接的变化, ...

  2. LoadRunner中的Web 函数列表

    LoadRunner中的Web 函数列表 web test LoadRunner fuction_list D:\Program Files (x86)\Mercury Interactive\Mer ...

  3. 网站集成Paypal

    国际化Paypal是一个不错的选择,现在很多的app都是H5,所以网站集成即可操作了. 最方便快捷的集成方式,目前Paypal的网站收款需要企业账号,不过它最开始的老版本是可以个人账号收款的.如下是个 ...

  4. ELK 日志平台构建

    elastic中文社区 https://elasticsearch.cn/ 完整参考 ELK实时日志分析平台环境部署--完整记录 https://www.cnblogs.com/kevingrace/ ...

  5. yum安装epel源

    国内yum源的安装(163,阿里云,epel)   国内yum源的安装(163,阿里云,epel) ----阿里云镜像源 1.备份 mv /etc/yum.repos.d/CentOS-Base.re ...

  6. 【BZOJ4766】文艺计算姬

    让你求一个两边各有n和m个点的完全二分图有多少个生成树. 这是一道比较经典的利用prufer序列结论求解答案的计数题. 大致思路考虑一张二分图求解prufer序列,由于prufer序列求解时最后剩下的 ...

  7. OKR工作法 目标明确的写下来 - 结果记录- 校准

    1.o - objective - 旅程的目的地 - 方向 - 定性的 2.kr - key result - 旅途的下一跳和关键节点 - 定量的 - 需要停下来校准 ################ ...

  8. 菜鸟系列k8s——k8s快速入门(1)

    k8s快速入门 1.快速创建k8s集群 参考网站:https://kubernetes.io/docs/tutorials/kubernetes-basics 点击教程菜单 1. Create a C ...

  9. Linux 磁盘卷扩容

    首先识别磁盘,成功之后会显示在/dev下 [root@oracle01 ~]# fdisk /dev/sda ## /dev/sda为通过fdisk -l 查看到的物理磁盘(第一行) Welcome ...

  10. Mybatis动态SQL之使用foreach完成复杂查询

    一.foreach概述 对于一些SQL语句中含有in条件.需要迭代条件集合来生产的情况,就需要使用foreach标签来实现SQL条件的迭代.foreach主要用在构建in条件中,它可以在SQL语句中迭 ...