一、安装部署

       实验环境:

       Server : 192.168.0.41

       Client-1: 192.168.0.42

       Client-2: 192.168.0.43

       1、安装epel源。

         rpm -Uvh http://mirrors.sohu.com/fedora-epel/6Server/x86_64/epel-release-6-8.noarch.rpm

       2. 服务端安装salt-master,客户端安装salt-minion

         

      wKiom1ZImBrz7dhgAABxCOjZ3Eg819.jpg

      wKioL1ZImGmAeAkmAABM9ur4gQk411.jpg


       3. 修改客户端配置文件/etc/salt/minion

          修改两个参数

          wKiom1ZIm9CQrmeNAAAJTb_z2Ls530.jpg   如不修改将使用默认值,分别为salt和自身主机名,需要将服务端主机名和IP写入到hosts文件

      wKiom1ZIm9GjBrvGAAAgP_WFoYg679.jpg

     4. 服务端启动服务

            /etc/init.d/salt-master start

          wKioL1ZInNKAWU-HAAAl_2zgOOc975.jpg

     5. 客户端启动服务

           /etc/init.d/salt-minion start

           wKiom1ZInS2zKZfZAAArXBbdvT0560.jpg


       6. 测试:配置/etc/salt/master文件 将log_level设置成debug,再看/var/log/master,看SALT的详细启动过程。

          wKioL1ZInqySogbeAAAYqe__ma0352.jpg


二、实战

       1、添加KEY授权

            wKiom1ZIqBySB6p8AADNQBMPDWg885.jpg


       2、实测命令:

            

       wKioL1ZIqOOzBTiAAAAXsS-7CSs708.jpg 

       wKiom1ZIqJWQPCLvAAAZ0x5diLk183.jpg

  

  

       3、实测命令:

            1. 工作中遇到主机名问题导致服务连接不了怎么办?

                删除/etc/salt/minion_id文件和pki/目录重启服务即可

                或者用salt-key -d删除该机器即可

            2. 如何在不停止minion服务的情况下来迁移master到更高性能的机器?

                解决方案原理:

                a、将旧master上所有的key复制到新master,保持所有key不变,保证minion服务不会关闭。

                b、将minion机器配置文件里的server改为新master。

wKioL1ZIxGfQUqkaAAMOIRqExTc995.jpg

wKiom1ZIxBmi4EoyAAKRowYF7J4309.jpg

            wKioL1ZIw-yhijv7AAB_UvqcZPw743.jpg

       3、SaltStack内置返回接口:

            wKiom1ZIxVuTkQy9AACKnBKulVo002.png

            1. 将return结果存入MySQL数据库,需要在minion客户端配置/etc/salt/minion配置文件,设置MySQL账号信息。

                注意:该方式需在minion端安装python的mysql模块!

               wKioL1ZIyvniUlPYAAATztHQXyE072.jpg

                配置文件添加参数:                

################################################

# MySQL-Return Paragram by asling on 2015-11-16

#


mysql.host:'192.168.0.90'

mysql.user:'salt'

mysql.pass:'123456'

mysql.db:'saltstack'

mysql.port:3306

#

################################################

        wKiom1ZIyenDJZWZAABdJLDfK0k347.jpg      


           2 MySQL服务器建库建表,使用以下建表语句:

             

CREATE TABLE `jids` (

    ->       `jid` varchar(255) NOT NULL,

    ->       `load` mediumtext NOT NULL,

    ->       UNIQUE KEY `jid` (`jid`)

    ->     ) ENGINE=InnoDB DEFAULT CHARSET=utf8;


CREATE TABLE `salt_returns` (

    ->       `fun` varchar(50) NOT NULL,

    ->       `jid` varchar(255) NOT NULL,

    ->       `return` mediumtext NOT NULL,

    ->       `id` varchar(255) NOT NULL,

    ->       `success` varchar(10) NOT NULL,

    ->       `full_ret` mediumtext NOT NULL,

    ->       KEY `id` (`id`),

    ->       KEY `jid` (`jid`),

    ->       KEY `fun` (`fun`)

    ->     ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

wKiom1ZI0E3y4HMtAAC4W8U5-FM027.jpg


            3. Python导入MYSQL模块

                python

                >>> import MySQLdb

                >>> exit()

            4. minion端测试看MySQL结果。

            

wKiom1ZI0M_iRezRAACtJYpz4kk555.jpg

wKiom1ZI0NHCoyXcAAMeAp7K8gk492.jpg



       4、SaltStack分组

参考 SaltStack 的官方文档 4.4 Compound matchers 和 4.3. Node groups 知道,对目标服务器分组有以下七种方式,这七种方式的标示符分别为:

  1. G -- 针对 Grains 做单个匹配,例如:G@os:Ubuntu

  2. E -- 针对 minion 针对正则表达式做匹配,例如:E@web\d+.(dev|qa|prod).loc

  3. P -- 针对 Grains 做正则表达式匹配,例如:P@os:(RedHat|Fedora|CentOS)

  4. L -- 针对 minion 做列表匹配,例如:L@minion1.example.com,minion3.domain.com or bl*.domain.com

  5. I -- 针对 Pillar 做单个匹配,例如:I@pdata:foobar

  6. S -- 针对子网或是 IP 做匹配,例如:S@192.168.1.0/24 or S@192.168.1.100

  7. R -- 针对客户端范围做匹配,例如: R@%foo.bar

wKiom1ZI11DCI5bqAAA37bFwLec690.png

           实测:

           wKiom1ZI2jDQGfO0AAA8rLgVkLY698.jpg

      wKioL1ZI2uHxZEszAAA7jZYHEr0158.jpg


       4、SaltStack模块

           见附件!



       5、SaltStack文件系统

            wKioL1ZI5h3QOmctAABeoIr2oas667.jpg

            wKioL1ZI6fuxJesPAABT_WHZ_oM826.jpg 

wKiom1ZI6jqBgPm0AADhxvjCg_A972.jpg


        wKioL1ZI7SDhLbUyAAC6mM7rh7g826.jpg