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

 

 

猜你喜欢

转载自www.cnblogs.com/zhangzhide/p/11707913.html
今日推荐