zoukankan      html  css  js  c++  java
  • saltstack highstate

    一、用top.sls文件管理状态文件

    highstate是state模块的一个函数,highstate函数是通过top.sls文件作为作为入口对模块和主机进行管理的,下面首先学习用highstate函数配合top.sls文件来管理状态文件。以上一篇的nginx为例:

    创建nginx文件夹

    [root@29-server]# mkdir /srv/salt/nginx
    [root@29-server]# tree /srv/salt/nginx/
    [root@29-server salt]# tree /srv/salt/
    /srv/salt/
    ├── apache.sls
    ├── _modules
    │   └── hello.py
    ├── nginx
    │   ├── nginx.j2
    │   ├── nginx.sls
    │   └── test_vhost.conf
    └── top.sls
    
    2 directories, 6 files
    

    注意调整一下和nginx.sls文件中source文件的路径。

    [root@29-server salt]# cat /srv/salt/top.sls 
    base:
     "minion-one":
        - nginx.nginx
        
    执行highstate命令
    [root@29-server]# salt "*" state.highstate
    

    二、状态文件的拆分和复用

    安装和管理Nginx的模块中包含了状态管理文件nginx.sls、模板文件nginx.j2和普通文本文件test_vhost.conf,所有这些文件都放在同一个目录下不便于区分和管理。另外,单一的nginx.sls也不能清晰地展现出Nginx这个模块都做了哪些操作,从便于书写和层次清晰的角度出发,需要改变现有这种结构。

    先把模块的目录结构化,对应的文件放入对应的目录:

    [root@29-server salt]# mkdir /srv/salt/nginx/{templates,files}
    [root@29-server salt]# mv /srv/salt/nginx/nginx.j2 /srv/salt/nginx/templates/
    [root@29-server salt]# mv /srv/salt/nginx/test_vhost.conf /srv/salt/nginx/files/
    

    对nginx.sls进行拆分:

    用init文件做入口文件来包含其他文件:

    [root@29-server nginx]# cat init.sls 
    include:
      - .install_nginx
      - .nginx_running
      - .nginx_conf
      - .vhost_conf
    

    安装nginx:

    [root@29-server nginx]# cat install_nginx.sls 
    install_nginx:
      pkg.installed:
        - name: nginx
    

    nginx服务管理:

    [root@29-server nginx]# cat nginx_running.sls 
    nginx_running:
      service.running:
        - name: nginx
        - enable: Ture
        - require:
          - pkg: install_nginx
        - watch:
          - file: nginx_conf
          - file: vhost_conf
    

    nginx配置模板文件的管理:

    [root@29-server nginx]# cat nginx_conf.sls 
    nginx_conf:
      file.managed:
        - name: /etc/nginx/nginx.conf
        - source: salt://nginx/templates/nginx.j2
        - user: root
        - group: root
        - template: jinja
        - mode: 644
    

    nginx虚拟主机文件的管理:

    [root@29-server nginx]# cat vhost_conf.sls 
    vhost_conf:
      file.managed:
        - name: /etc/nginx/conf.d/nginx.conf
        - source: salt://nginx/files/test_vhost.conf
        - user: root
        - group: root
        - mode: 644
    

    把这些具体的功能都单独写到对应文件的好处是可以方便地从文件名看出Nginx这个模块进行了哪些操作,并且可以方便地修改配置,现在让我们再看一下Nginx模块的目录结构:

    [root@29-server nginx]# tree /srv/salt/nginx/
    /srv/salt/nginx/
    ├── files
    │   └── test_vhost.conf
    ├── init.sls
    ├── install_nginx.sls
    ├── nginx_conf.sls
    ├── nginx_running.sls
    ├── nginx.sls
    ├── templates
    │   └── nginx.j2
    └── vhost_conf.sls
    
    2 directories, 8 files
    

    修改top.sls文件(Nginx模块的文件夹里面有init.sls,Salt会默认加载init.sls,不需要写成nginx.init这种格式):

    [root@29-server nginx]# cat /srv/salt/top.sls 
    base:
     "minion-one":
        - nginx
    

    执行命令:
    salt "*" state.highstate

    安装的结果和修改之前是一样的,但是现在的目录结构更为清晰可读。

  • 相关阅读:
    python模块
    python函数进阶
    python函数
    六.python的深浅拷贝
    五.集合及其推导式
    IOS微信显示NAN,中国标准时间日期转换
    Caused by: org.apache.ibatis.binding.BindingException: Parameter 'XXX' not found. Available parameters are [beginTime, endTime, param3, param1, vesselName, param2] 找不到参数的解决方式
    java的nullpointerexception空指针异常,关于使用了timer定时导致service调用问题
    java设置开始时间,定时执行任务
    java多层嵌套集合的json,如何获取多层集合中所需要的value
  • 原文地址:https://www.cnblogs.com/wangyajian/p/11663089.html
Copyright © 2011-2022 走看看