zoukankan      html  css  js  c++  java
  • 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 选项,下面会介绍到。

  • 相关阅读:
    Python常用模块学习
    如何在cmd下切换不同版本的Python
    Python3
    Python第二模块(文件和函数)
    Hibernate教程一览
    struts2框架一览
    Java正式day_04——嵌套循环
    AJAX
    JS+JQUERY
    Mybatis注意问题
  • 原文地址:https://www.cnblogs.com/liujunjun/p/12669325.html
Copyright © 2011-2022 走看看