saltstack配置管理之states

发表于:2018-9-07 14:55

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:风住    来源:博客园

  states是saltstack中的配置语言,我们安装一个包,管理一个配置文件,最后保证服务的正常运行,都需要我们编写一些states sls文件(描述状态的文件)去描述和实现我们的功能。sls文件都是YAML语法编写,也可以用python。
  YAML语法规则:每个缩进级别由两个空格组成,不要使用tab键。冒号后面也有一个空格。想要表示列表项,使用短横杠加一个空格,多个同样的缩进级别为同一列表的一部分。
  sls指salt state,常见的就是用于state中的/srv/salt和pillar中的/srv/pillar。
  salt和数据息息相关,YAML是python中字典类型数据结构的序列化格式。它们是一组键值对,每项都有一个唯一的键,引用一个值。值可以是一个单项,一个列表项,也可以是其他的键值对。
  sls文件中每个小节的key为id。如果小节内没有显示声明name属性,那么id会作为那么,id必须全局唯一。
  state和pillar系统中都有一个名为top.sls文件,用于将sls文件绑定在一起并指定在哪个环境下为minion提供哪些sls文件。top.sls文件中的每个key都定义一个环境,一般情况下,定一个base环境,此环境下包含所有minion,也可以定义其他环境和包含其他minion的子集。
  如:
  base:
  '*':
  - common
  dev:
  '^minion':
  - lamp

  而include块的实现,可以使得一个sls文件引用其他sls文件,通常放在sls文件顶部。include作为一个顶级声明,不能在一个文件中出现多次。
  Include:
  - base
  - macs
  此处sls文件将include块内容替换成base.sls(或者base/init.sls),macs.sls(或者macs/init.slsl)的内容。sls文件中不能包含已存在于include的sls文件的id。
  sls文件目录可以有多层深度,每一个层级将在sls名后面加点,比如有top.sls:
  base:
  '*':
  - web.httpd.httpd
  首先读取top.sls文件,去找配置根目录下web目录下httpd目录下的httpd.sls文件。
  (没有httpd.sls文件,再去找配置根目录下web目录下httpd目录下httpd目录下的init.sls文件),都没有则报错。
  查看states列表 #salt 'minion-01' sys.list_state_modules
  查看指定states用法 #salt 'minion-01' sys.state_doc file
  查看指定states的所有function #salt 'minion-01' sys.list_state_functions file
  查看指定states的指定function用法 #salt 'minion-01' sys.state_doc file.copy
  使用states:
  编写top.sls文件(易于管理,但非必须)
  编写states.sls文件
  top.sls是states系统的入口文件,指定了哪些设备调用哪些states.sls文件。
  我们来查看一个sls文件的例子:
   
  state sls文件具有声明式和命令式的的特性,state可以通过requisite来改变命令实际执行的顺序,require是最基本的requisite。还是这个例子:
   
  cmd.run这个模块下,定义了require,在此模块运行的前提是profile.sls文件和id为java-source-install的模块要已经运行。
  通过添加watch requisite,强制state在发现它watch的项目发生了变更时执行一个指定的动作。
   
  如此例,我修改了tomcat-users.xml文件,然后重新salt 'minion-01' state.highstate可以看到如下tomcat service restarted。
   
  当一个服务通过watch出发时,如果服务此时时关闭的,则salt会尝试启动它;当服务在运行中,则salt会根据情况尝试service.reload、service.fullrestart或者service.restart中的一个。
  onchanges requisite和watch类似,只有当state成功完成并且有变化时,那些onchanges关联到的列表项才会执行。
  onfail requisite,告警给用户或自动进行正确处理。
  use只会继承非requisite选项。如下面的sls,mysql_conf会从apache2_conf中继承user、group、及mode,并且不会出发apache重启。
   
  prereq,salt会先对prereq中指定关联的项目运行test模式来预计是否会进行变更,如果有,则salt会用prereg标记该state需要执行。
   
  反转requisite,都可以在最后添加_in的方式来进行反转。一般情况下在一个sls文件中定义好配置,在另一个sls文件中include,并通过使用use_in requirsite使其具有更多的特性。

   上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号