zoukankan      html  css  js  c++  java
  • 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

     

     

  • 相关阅读:
    Django知识总结(一)
    Django知识总结(二)
    Django知识总结(三)
    机器学习领域主要术语的英文表达
    Python的进程与线程--思维导图
    MySQL数据库--思维导图
    5.18 每日小三练
    5.14 每日小三练
    5.12 每日小三练
    5.9 每日小三练
  • 原文地址:https://www.cnblogs.com/zhangzhide/p/11707913.html
Copyright © 2011-2022 走看看