• salt stack学习笔记


    saltstack运行模式:

      local  

      master/minion

      salt ssh

    saltstack三大功能

      远程执行命令

      配置管理(状态管理)

      云管理

    安装:

      master  salt-master

          agent    salt-minion

    salt-key命令

      accepted keys:  接受的key

          denied keys:   拒绝的key

          unaccepted keys:  没有接受的key

          rejected keys:  拒绝的key

          agent的minion_id保存路径:/etc/salt/minion_id

       

    全部接受使用:salt-key -A -y

    查看结果:salt-key -L

    salt执行单条命令

    salt 被执行主机   模块  命令

    salt '*' test.ping  对所有主机执行ping命令;

        cmd.run 'hostname' 执行命令

              state.highstate  master状态同步

              state.highstate test=True  同步之前测试语法

          -E  对被执行主机可以用正则;

          -L  指定执行列表

        salt -L 'minion1,minion2' com.run 'hostname'

          -S  指定子网段

            -S '192.168.1.0/24'

    配置管理

    1、定义环境

    /etc/salt/master

    file_roots:

      base:  基础环境  2个空格

        - /srv/salt/  4个空格

      dev:   开发环境

        - /srv/salt/dev/services

        - /srv/salt/dev/states

      prod:  生产环境

        - /srv/salt/prod/services

        - /srv/salt/prod/states

    2、定义入口

    所有salt的配置文件都是以sls结尾;

    路径:/srv/salt/

    vim top.sls

    定义top示例:

    base:

      '*':

        - apache

     

     

    应用内容示例:

    apache-pkg:

      pkg.installed:

        - names:

          - httpd

          - mod_ssl

    apache-service:

      service.running:

        - name: httpd

        - enable: True

        

    数据系统Grains

      grains里面收集了minion启动时候的所有系统信息,存储在minion端;

    salt 'host' grains.ls  所有的grains信息

                grains.item os os的值

                            osrelease  系统版本

    示例:

        salt -G 'osrelease:7.3.1611' test.ping

       

    自定义Grains

    方法

     

     

    /etc/salt/minion

     

    #grains:

     

    #  roles:

     

    #    - webserver

     

    #    - memcache

     

    #  deployment: datacenter4

     

    #  cabinet: 13

     

    #  cab_u: 14-15

     

    数据系统Pillar

    master端设置,提供给minion端;

    pillar在saltstack中主要作用是存储和定义配置管理中需要的一些数据,比如软件版本好,用户名密码信息,它的存储格式跟Grains类似,都是yaml格式;

    /etc/salt/master

    #pillar_roots:

    #  base:

    #    - /srv/pillar

    #

    #ext_pillar:

    #  - hiera: /etc/hiera.yaml

    #  - cmd_yaml: cat /etc/salt/yaml

     

    定义pillar的入口

    vim /srv/pillar/top.sls

    base:

      "*":

        - packages

        - services

        - command

        - isp

     

    刷新pillar

    salt '*' saltutil.refresh_pillar

     

    master端验证

    salt -I 'roles:ftpserver' cmd.run 'uptime'

     

    远程执行Targeting

    与minion_id相关

      Globbing(通配符)

       *  ? []都支持;

      Regex(正则)

      List(列表)

    与Minion_id无关:

      Subnet/IP (子网)

      Grains

      Pillar

      Compound matchers(复合匹配)

        -C 指定

        salt -C 'I@roles:deserver and I@deployment:datacenter4' test.ping

      Node Groups(节点组)

        -N 指定

     

    当在sls文件中使用正则时:

    base:

      'slatstack0[^23].test.com':

        - match: pcre  #必须引入salt的pcre库;

        - apache

    当在ssl文件中使用Grains时:

    base:

      'os:CentOS':

        - match: grain #引入grain库

        - apache

      

    salt  modules

     

    https://docs.saltstack.com/en/latest/

     

    salt '*' sys.list_modules  列出所有模块

    salt '*' sys.list_functions grains  列出grains模块的用法

             sys.doc grains 查看grains帮助

             sys.doc grains.item  查看item帮助

             sys.doc pkg

     

    service.available  服务是否可用

           .missing  包是否缺失

    state.show_top  应用了哪些模块

    state.show_highstate 更详细的状态

    state.sls httpd  只同步某一个任务

    salt 'test04' state.sls apache env=base 将base环境中的apache环境应用给test04主机;

     

    salt远程执行returners

      return组件可以理解为saltstack系统对执行minion返回后的数据存储和返回给其他程序;支持多种存储方式,例如mysql;mongodb;memcache等;通过return可以对saltstack每次的操作进行记录,对以后的日志审计提供数据;

     

    mysql_secure_installation 设置mysql密码;

     

    配置管理states

      states是saltstack系统的配置语言,在日常韵味中需要编写大量的states文件,例如创建用户,安装软件包,管理相应配置文件;则需要编写一些states sls文件,即状态配置文件去描述和实现相应的功能;states sls 主要使用yaml语言;也可以支持使用python语言;

     

    配置管理状态关系

    unless  主要用于cmd状态模块,仅当unless选项指向的命令;

            返回false时才执行name指向的命令,test -d /usr/local/nginx

    require 我依赖某个状态,我依赖谁

      示例:

    lamp-pkg-install:

      pkg.installed:

        - names:

          - httpd

          - php

          -php-mysql

    httpd-files:

      file.managed:

        - name: /etc/httpd/conf/httpd.conf

        - source: salt://files/httpd.conf

        - require:

          - pkg: lamp-pkg-install

    httpd-service:

      server.running:

        - name : httpd

        - enable: True

        - reload: True  (如果不写则是restart)

        - require:

          - file: httpd-files

        - watch:

          - file: httpd-files  只要配置文件发生改变即reload服务

     

    require_in 我被某个状态依赖 谁依赖我

    watch   我关注某个状态,当状态发生改变,则restart

    watch_in 我被某个状态关注;

     

    配置管理jinja模版

    {{ 变量 }}与变量列表defaults必须一一对应;

     

    vim httpd.conf

    Listen {{ IP }}:{{ PORT }}

     

    httpd-files:

      file.managed:

        - name: /etc/httpd/conf/httpd.conf

        - source: salt://files/httpd.conf

        - template: jinja  #必须要告诉它是jinja模版

        - require:

          - pkg: lamp-pkg-install

        - defaults:

          IP: {{ grains['fqdn_ip4'][0] }}

          PORT: 7777

     

     

  • 相关阅读:
    【Azure 应用服务】在Azure App Service多实例的情况下,如何在应用中通过代码获取到实例名(Instance ID)呢?
    【Azure 应用服务】App Service For Windows 中如何设置代理实现前端静态文件和后端Java Spring Boot Jar包
    【Azure Developer】使用Azure Key Vault 的Key签名后,离线验证的一些参考资料
    【Azure Function】调试 VS Code Javascript Function本地不能运行,报错 Value cannot be null. (Parameter 'provider')问题
    【Azure 应用服务】App Service 使用Tomcat运行Java应用,如何设置前端网页缓存的相应参数呢(Xms512m Xmx1204m)?
    【Azure API 管理】APIM添加Logtoeventhub的策略后,一些相关APIM与Event Hub的问题
    【Azure API 管理】为调用APIM的请求启用Trace 调试APIM Policy的利器
    【Azure 事件中心】China Azure上是否有Kafka服务简答
    【Azure 应用服务】探索在Azure上设置禁止任何人访问App Service的默认域名(Default URL)
    【Azure 微服务】记一次错误的更新Service Fabric 证书而引发的集群崩溃而只能重建
  • 原文地址:https://www.cnblogs.com/zhangzhide/p/11707913.html
Copyright © 2020-2023  润新知