博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SaltStack配置管理
阅读量:5906 次
发布时间:2019-06-19

本文共 6458 字,大约阅读时间需要 21 分钟。

hot3.png

    States是SaltStack中的配置语言,在日常进行配置管理时需要编写大量的States文件。比如我们需要安装一个包,然后管理一个配置文件,最后保证某个服务正常运行。

    1.查看所有states列表

# 要查看Minion支持的所有states列表[root@salt-master-1 ~]# salt 'salt-minion-1' sys.list_state_modulessalt-minion-1:    - acl    - alias    - alternatives    - archive    - artifactory    - at    - augeas    - blockdev    - buildout    - cloud    - cmd    - composer    - cron    - disk    - environ    - event    - file    - gem    - gnomedesktop    - grafana    - grains    - group    - hipchat    - host    - http    - incron    - ini    - iptables    - jboss7    - keyboard    - kmod    - libvirt    - locale    - lvm    - lxc    - modjk    - modjk_worker    - module    - mongodb_database    - mount    - network    - openstack_config    - pagerduty    - pip    - pkg    - pkgng    - pkgrepo    - powerpath    - pyenv    - quota    - rbenv    - rvm    - salt    - schedule    - serverdensity_device    - service    - slack    - smtp    - ssh_auth    - ssh_known_hosts    - stateconf    - status    - supervisord    - sysctl    - syslog_ng    - test    - timezone    - user    - vbox_guest    - virtualenv    - winrepo

    2.查看指定States的所有function

# 查看file.states的所有function[root@salt-master-1 ~]# salt 'salt-minion-1' sys.list_state_functions filesalt-minion-1:    - file.absent    - file.accumulated    - file.append    - file.blockreplace    - file.comment    - file.copy    - file.directory    - file.exists    - file.managed    - file.missing    - file.mknod    - file.mod_run_check_cmd    - file.patch    - file.prepend    - file.recurse    - file.rename    - file.replace    - file.serialize    - file.symlink    - file.touch    - file.uncomment# 指定查看states用法[root@salt-master-1 ~]# salt 'salt-minion-1' sys.state_doc file# 查看指定states的指定function用法[root@salt-master-1 ~]# salt 'salt-minion-1' sys.state_doc file.absent

    3.states的流程

        编写top.sls文件(非必须)

        编写state.sls文件

    在大规模的配置管理工作中,我们需要编写大量的states.sls文件。top.sls是states系统的入口文件,它在大规模配置管理工作中负责指定哪些设备调用哪些states.sls文件。比如我们维护着一套LAMP架构,我们编写很多states.sls文件,这个时候我需要一键部署整个LAMP环境,这里就需要states.sls的top.sls入口文件去指定web服务器和DB机器分别起引用哪些states.sls文件。

[root@salt-master-1 ~]# cat /srv/salt/one.sls/tmp/foo.conf:                                #id    file.managed:                             #file states 的managed function        - source: salt://foo.conf             #文件来源        - user: root                          #文件属主        - group: root                         #文件属组        - mode: 644                           #文件属性        - backup: minion                      #备份原文件[root@salt-master-1 ~]# echo "SaltStack is good" >> /srv/salt/foo.conf[root@salt-master-1 ~]# salt 'salt-minion-1' state.sls onesalt-minion-1:----------          ID: /tmp/foo.conf    Function: file.managed      Result: True     Comment: File /tmp/foo.conf updated     Started: 07:40:18.079922    Duration: 14.378 ms     Changes:              ----------              diff:                  New file              mode:                  0644Summary------------Succeeded: 1 (changed=1)Failed:    0------------Total states run:     1

    以上列举了对Minion机器的简单文件管理。下面来介绍使用top.sls入口文件同时对多台机器进行一个简单的配置管理。

[root@salt-master-1 ~]# cat /srv/salt/top.slsbase:                        # base环境    '*':                     # Target        - one                # 引用one.sls或者one/init.sls states文件    'salt-minion-1':         # Target        - two                # 引用two.sls或者two/init.sls states文件    'salt-minion-2':         # Target        - three              # 引用three.sls或者three/init.sls states文件

    然后我们新建三个states文件:one.sls、two.sls、three.sls,最后我们就可以使用state.highstate命令同时对salt-minion-1和salt-minion-2两台机器进行配置管理。

    4.执行结果处理

    Return组件可以理解为SaltStack系统对执行Minion返回后的数据进行存储或者返回给其它程序,它支持多种存储方式,比如用Mysql、Mongodb、Redis等,通过Return我们可以对SaltStack的每次记录进行操作记录,对以后日志审计提供数据来源。

[root@salt-master-1 ~]# salt 'salt-minion-1' sys.list_returnerssalt-minion-1:    - carbon    - couchdb    - etcd    - hipchat    - local    - local_cache    - multi_returner    - slack    - smtp    - sqlite3    - syslog

    Return流程:Return是在Master端触发任务,然后Minion接受处理任务后直接与Return存储服务器建立连接,然后把数据Return到存储服务器。关于这点,要注意整个过程都是Minion端操作存储服务器,所以要确保Minion端的配置跟依赖包是正确的。

    5.jobs

    在SaltStack里面执行任何一个操作都会在Master上产生一个jid号。Minion端会cache目录下的proc目录创建一个以jid为名称的文件,这个文件里面的内容就是此次操作的记录,当操作处理完成后该文件会自动删除。而Master端会记录每次操作的详细信息,这个记录都是存到在Master端cache目录下jobs下。下面通过实例了解日常job管理,目前SaltStack提供salt-run跟module两种方式来管理job

    1)通过salt-run来管理job

[root@salt-master-1 ~]# 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

    2)通过SaltStack Module来管理job

    salt-run对job管理功能比较局限,不支持kill某个job,下面介绍SaltStack自带的Module来管理job

[root@salt-master-1 ~]# 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 
'saltutil.find_job:'                   # 查看job信息    Return the data for a specific job id        salt '*' saltutil.find_job 
'saltutil.kill_job:'                   # 杀掉job    Sends a kill signal (SIGKILL 9) to the named salt job's process        salt '*' saltutil.kill_job 
        salt '*' saltutil.runner jobs.list_jobs'saltutil.signal_job:'                 # 发送指定信号    Sends a signal to the named salt job's process        salt '*' saltutil.signal_job 
 15'saltutil.term_job:'                   # 删掉job    Sends a termination signal (SIGTERM 15) to the named salt job's process        salt '*' saltutil.term_job 

    6.Mine

    Mine是SaltStack收集Minion数据存储到Master的一个组件,它的功能与Grains有些类似,Mine可以指定任何Minion模块去采集数据。但是Master只能存储Minion收集上来的最近一段的数据,Mine的主要应用场景是配合前端负载均衡动态获取Mine汇报信息,来动态生成配置文件。

    例如:官网通过mine.get指定业务设备的网卡地址动态生成haproxy.cfg文件。Mine还支持get docker容器的地址,可简单实现动态添加业务。

    Mine的配置目前支持两种方式,第一种是通过Minion配置文件中定义,另一种是通过模块的方式去下发Mine采集任务。

转载于:https://my.oschina.net/u/2317144/blog/541204

你可能感兴趣的文章
java反射机制
查看>>
Android布局— — —线性布局
查看>>
scrapy效率提升篇
查看>>
构建之法 第二组第一周学习
查看>>
从游戏开挂谈谈数据类型
查看>>
多线程池
查看>>
php常用数组函数详解
查看>>
设计模式系列之单例模式(Singleton Pattern)
查看>>
网易前端JavaScript编码规范
查看>>
springMVC
查看>>
阶段性小结
查看>>
排序算法Nb三人组-快速排序
查看>>
JQ选择器
查看>>
团体程序设计天梯赛 L2-018. 多项式A除以B(模拟)
查看>>
基本数据类型---字典
查看>>
第一周:简单的计算程序
查看>>
网易2019校招C++研发工程师笔试编程题
查看>>
常用收藏与分享
查看>>
Lesson: Introduction to JAXP
查看>>
质量属性2
查看>>