Hi 你好,欢迎访问!登录
当前位置:首页 - 自动化运维 - 正文 忍人所不忍,能人所不能。

Linux自动化工具之SaltStack组件

2020-02-24自动化运维90root117°c
A+ A-
之前已经介绍过两个组件了, 分别为Grains 和  Pillar .
一.  Return组件
   return组件可以理解为SaltStack系统对执行Minion返回后的数据进行存储或者返回给其它程序. 它支持多种存储方式, 比如用MySQL、MongoDB、Redis、Memcache等. 通过return我们可以对saltstack的每次操作进行纪录, 对以后日志审计提供了数据来源. 
      1.1 查看所有return列表
[[email protected]_210 salt]# salt 'docker_211' sys.list_returners
docker_211:
- carbon
- couchdb
- etcd
- hipchat
- local
- local_cache
- multi_returner
- slack
- smtp
- sqlite3
- syslog
      1.2 return流程
return是在master端触发任务, 然后minion接受处理任何后直接与return存储服务器建立连接, 然后把return存到存储服务器. 
二. 使用Redis作为return存储方式
      2.1 在minion配置文件里定义return存储服务器信息. 添加redis服务器信息即可.
           2.1.1 修改salt-minion端配置文件
[[email protected]_211 src]# tail -n4 /etc/salt/minion                ->新增如下内容
redis.db: '0'
redis.host: '172.168.200.210'
redis.port: 6379
[[email protected]_211 python-redis-2.8.0]# /etc/init.d/salt-minion restart
           2.1.2 安装redis(salt-master)
[[email protected]_210 ~]# cd /usr/local/src
[[email protected]_210 src]# wget http://download.redis.io/releases/redis-2.8.1.tar.gz
[[email protected]_210 src]# tar -zxvf redis-2.8.1.tar.gz
[[email protected]_210 src]# cd redis-2.8.1
[[email protected]_210 redis-2.8.1]# make
[[email protected]_210 redis-2.8.1]# make PREFIX=/data/src/redis2.8 install
[[email protected]_210 redis-2.8.1]# cp redis.conf /data/src/redis2.8/
[[email protected]_210 redis-2.8.1]# /data/src/redis2.8/bin/redis-server /data/src/redis2.8/redis.conf
          2.1.3 安装python
[[email protected]_210 redis-2.8.1]#  cd /usr/local/src
[[email protected]_210 src]#  wget --no-check-certificate https://pypi.python.org/packages/source/r/redis/redis-2.8.0.tar.gz
[[email protected]_210 src]#  tar zxvf redis-2.8.0.tar.gz
[[email protected]_210 src]#  mv redis-2.8.0 python-redis-2.8.0
[[email protected]_210 python-redis-2.8.0]#  python setup.py install
[[email protected]_210 python-redis-2.8.0]#  python -c 'import redis;print redis.VERSION'
(2, 8, 0)
         2.1.4 salt-master端执行return
[[email protected]_210 ~]# redis-cli monitor
OK
1471603978.923042 [0 172.168.200.211:54214] "SELECT" "0"
1471603978.923132 [0 172.168.200.211:54214] "SET" "docker_211:20160819065258787802" "{\"fun_args\": [], \"jid\": \"20160819065258787802\", \"return\": true, \"retcode\": 0, \"success\": true, \"fun\": \"test.ping\", \"id\": \"docker_211\"}"
1471603978.923240 [0 172.168.200.211:54214] "LPUSH" "docker_211:test.ping" "20160819065258787802"
1471603978.923346 [0 172.168.200.211:54214] "SADD" "minions" "docker_211"
1471603978.923407 [0 172.168.200.211:54214] "SADD" "jids" "20160819065258787802"
[[email protected]_210 ~]# salt 'docker_211' test.ping --return redis
docker_211:
    Tru

Linux自动化工具之SaltStack组件 SaltStack Linux 自动化运维 第1张

三. job管理

   在SaltStack里面执行任何一个操作都会在Master上产生一个jid号。 Minion端会在cache目录下的proc目录创建一个以jid为名称的文件, 这个文件里面的内容就是此次操作的记录, 当操作处理完成后该文件会自动删除. 而Master端会记录每次操作的详细信息. 这个记录都是存到在Master端cache目录下jobs下.
     3.1  通过salt-run来管理job
[[email protected]_210 ~]#  salt-run -d |grep jobs
'jobs.active:'                                                                                                            -> 查看当前在正运行的jobs
    Return a report on all actively running jobs from a job id centric
        salt-run jobs.active
'jobs.list_job:'                                                                                                            -> 指定jid查看jobs详细信息
        salt-run jobs.list_job 20130916125524463507
'jobs.list_jobs:'                                                                                                          -> 查看所有jobs信息
    List all detectable jobs and associated functions
        salt-run jobs.list_jobs
'jobs.lookup_jid:'                                                                                                     -> 指定jid查询jobs结果
        salt-run jobs.lookup_jid 20130916125524463507
        salt-run jobs.lookup_jid 20130916125524463507 outputter=highstate
'jobs.print_job:'                                                                                                        -> 指定jid查询jobs详细信息
        salt-run jobs.print_job 20130916125524463507
[[email protected]_210 ~]# salt 'docker_211' cmd.run 'sleep 100;whoami'
^CExiting on Ctrl-C
This job's jid is:
20160822232427070518
The minions may not have all finished running and any remaining minions will return upon completion. To look up the return data for this job later run:
salt-run jobs.lookup_jid 20160822232427070518
因为等待时间长, 笔者停止了.
我们可以通过salt-run job管理绿色地方的job号.
[[email protected]_210 ~]#  salt-run jobs.lookup_jid 20160822232427070518
docker_211:
    root
      3.2 查看这个job的详细信息
[[email protected]_210 ~]# salt-run jobs.list_job 20160822232427070518
Arguments:
    - sleep 100;whoami
Function:
    cmd.run
Minions:
    - docker_211
Result:
    ----------
    docker_211:
        ----------
        return:
            root
StartTime:
    2016, Aug 22 23:24:27.070518
Target:
    docker_211
Target-type:
    glob
User:
    root
jid:
    20160822232427070518
      3.3 通过SaltStack Module来管理job
salt-run对job管理功能比较局限, 目前salt-run还不支持kill某个job. 现在我们开始用saltstack自带的module来管理job. 
[[email protected]_210 ~]# salt \* sys.doc saltutil | grep job
'saltutil.find_cached_job:'                                                                        -> 查看job cache信息
    Return the data for a specific cached job id
        salt '*' saltutil.find_cached_job <job id>
'saltutil.find_job:'                                                                                        -> 查看job信息
    Return the data for a specific job id
        salt '*' saltutil.find_job <job id>
'saltutil.kill_job:'                                                                                          -> 杀掉job(发送Sigterm 9信号方式)
    Sends a kill signal (SIGKILL 9) to the named salt job's process
        salt '*' saltutil.kill_job <job id>
        salt '*' saltutil.runner jobs.list_jobs
'saltutil.signal_job:'                                                                                    -> 发送执行信号
    Sends a signal to the named salt job's process
        salt '*' saltutil.signal_job <job id> 15
'saltutil.term_job:'                                                                                      -> 删掉job
    Sends a termination signal (SIGTERM 15) to the named salt job's process
        salt '*' saltutil.term_job <job id>
[[email protected]_210 ~]# salt 'docker_211' cmd.run 'sleep 100;whoami'
^CExiting on Ctrl-C
This job's jid is:
20160822234534774178
The minions may not have all finished running and any remaining minions will return upon completion. To look up the return data for this job later run:
salt-run jobs.lookup_jid 20160822234534774178
[[email protected]_210 ~]# salt 'docker_211' saltutil.find_job 20160822234534774178
docker_211:
    ----------
    arg:
        - sleep 100;whoami
    fun:
        cmd.run
    jid:
        20160822234534774178
    pid:
        4477
    ret:
    tgt:
        docker_211
    tgt_type:
        glob
    user:
        root
[[email protected]_210 ~]# salt 'docker_211' saltutil.kill_job 20160822234534774178
    Signal 9 sent to job 20160822234534774178 at pid 4477
Linux自动化工具之SaltStack组件 SaltStack Linux 自动化运维 第2张
四、Event   
Event是SaltStack里面对每个事件的一个记录,它相比job更加底层,Event能记录更加详细的SaltStack事件,比如minion服务启动后请求Master签发证书或者证书校验的过程,都能通过Event事件来查看整个过程。 Event也为扩展SaltStack提供了更加友好的接口。
        4.1 查看Event事件
开两个终端, 分别执行以下命令:
[[email protected]_210 ~]# salt-run state.event pretty=True
[[email protected]_210 ~]# salt 'docker_211' test.ping
Linux自动化工具之SaltStack组件 SaltStack Linux 自动化运维 第3张
  移步手机端
Linux自动化工具之SaltStack组件

1、打开你手机的二维码扫描APP
2、扫描左则的二维码
3、点击扫描获得的网址
4、可以在手机端阅读此文章
标签:

发表评论

选填

必填

必填

选填

请拖动滑块解锁
>>


  用户登录