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的安装

准备两台机器,这两台机器都关闭 selinux,清空 iptables 规则并保存。
master:192.168.1.220
node01:192.168.1.221

编辑 hosts 文件

两台都设置,若机器太多,可以通过搭建 DNS,则不用在每台机器上设置这个

[root@master ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.1.220   master
192.168.1.221   node01
192.168.1.222   node02
[root@node01 ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.1.220   master
192.168.1.221   node01
192.168.1.222   node02

设置 hostname

[root@node01 ~]# cat /etc/hostname
node01
[root@master ~]# cat /etc/hostname
master

1)服务端安装

[root@master ~]# cd /etc/yum.repos.d/
[root@master yum.repos.d]# wget http://mirrors.aliyun.com/repo/Centos-7.repo
[root@master yum.repos.d]# yum install https://repo.saltstack.com/yum/redhat/salt-repo-latest.el7.noarch.rpm
[root@master yum.repos.d]# yum install -y salt-master salt-minion

2)客户端安装

[root@node01 ~]# cd /etc/yum.repos.d/
[root@node01 yum.repos.d]# wget http://mirrors.aliyun.com/repo/Centos-7.repo
[root@node01 yum.repos.d]# yum install https://repo.saltstack.com/yum/redhat/salt-repo-latest.el7.noarch.rpm
[root@node01 yum.repos.d]# yum install -y salt-minion

服务端和客户端都要配置 master

[root@master ~]# vi /etc/salt/minion
master: 192.168.1.220  //在第16行添加,冒号后有一个空格

启动服务

1)服务端

[root@master ~]# systemctl start salt-master
[root@master ~]# systemctl start salt-minion

2)客户端

[root@node01 ~]# systemctl start salt-minion

配置认证

1)在服务端上操作

[root@master ~]# salt-key -a master
The following keys are going to be accepted:
Unaccepted Keys:
master
Proceed? [n/Y] y
Key for minion master accepted.
[root@master ~]# salt-key -a node01
The following keys are going to be accepted:
Unaccepted Keys:
node01
Proceed? [n/Y] y
Key for minion node01 accepted.
[root@master ~]# salt-key
Accepted Keys:
master
node01
Denied Keys:
Unaccepted Keys:
Rejected Keys:

说明:-a :accept ,-A:accept-all,-d:delete,-D:delete-all。可以使用 salt-key 命令查看到已经签名的客户端。此时我们在客户端的 /etc/salt/pki/minion 目录下面会多出一个minion_master.pub 文件。

2)测试验证

示例1: salt '*' test.ping                  //检测通讯是否正常,也可以指定其中一个 'node01'

[root@master ~]# salt '*' test.ping
node01:
    True
master:
    True
[root@master salt]# salt 'node01' test.ping
node01:
    True

示例2:  salt '*' cmd.run   'df -h'        //远程执行命令

[root@master ~]# salt '*' cmd.run   'df -h' 
node01:
    Filesystem               Size  Used Avail Use% Mounted on
    /dev/mapper/centos-root   19G  1.9G   17G  10% /
    devtmpfs                 475M     0  475M   0% /dev
    tmpfs                    487M   60K  487M   1% /dev/shm
    tmpfs                    487M   14M  473M   3% /run
    tmpfs                    487M     0  487M   0% /sys/fs/cgroup
    /dev/sda1                197M  111M   87M  56% /boot
    tmpfs                     98M     0   98M   0% /run/user/0
master:
    Filesystem               Size  Used Avail Use% Mounted on
    /dev/mapper/centos-root   19G  1.9G   17G  10% /
    devtmpfs                 475M     0  475M   0% /dev
    tmpfs                    487M  240K  487M   1% /dev/shm
    tmpfs                    487M   14M  473M   3% /run
    tmpfs                    487M     0  487M   0% /sys/fs/cgroup
    /dev/sda1                197M  111M   87M  56% /boot
    tmpfs                     98M     0   98M   0% /run/user/0

说明: 这里的 * 必须是在 master 上已经被接受过的客户端,可以通过 salt-key 查到,通常是我们已经设定的 id 值。关于这部分内容,它支持通配、列表以及正则。 比如两台客户端 web10、web11, 那我们可以写成  salt 'web*'    salt 'web1[02]'  salt -L 'web10,web11'   salt -E 'web(10|11)' 等形式,使用列表,即多个机器用逗号分隔,而且需要加-L,使用正则必须要带-E选项。 它还支持 grains 和 pillar,分别加 -G 和 -I 选项,下面会介绍到。

 

posted @ 2020-04-09 20:25  星火撩原  阅读(262)  评论(0编辑  收藏  举报