Salt常用模块及示例

一:Saltstack和Ansible的使用区别:

 Ansile的配置文件以yml结尾,在.yml已经指明需要操作的主机与动作。

 Salt则更多以服务来进行区分,主要强调动作而不指定需要操作的主机。

在使用Salt时一般是将需要操作的动作写成.sls文件,对应的服务生成一个名字对应的目录,在目录下配置.sls文件和files目录,在files目录中存放.sls文件中需要的文件。

🌰🌰:安装并配置filebeat

[root@ns4jh] /srv/salt/filebeat$  ll             #在salt的目录中查看filebaet

总用量 4
drwxr-xr-x 2 root root 84 6月 21 15:34 files
-rw-r--r-- 1 root root 432 4月 12 15:01 init.sls

 

 [root@ns4jh] /srv/salt/filebeat$ cat init.sls                                #查看.sls文件
filebeat-package:
  pkg.installed:
  - sources:
    - filebeat: salt://filebeat/files/filebeat-6.8.13-x86_64.rpm           #filebeat的安装包

/etc/filebeat/filebeat.yml:
  file.managed:
    - source:salt://filebeat/files/filebeat.yml                                  #filebeat的配置文

    - user: root

    - group: root
    - mode: 600
    - template: jinja
    - require:
      - pkg: filebeat-package

filebeat:
  service.running:
    - enable: True
    - watch:
      - file: /etc/filebeat/filebeat.yml

 

[root@ns4jh] /srv/salt/filebeat/files$ ll             #.sls中需要的文件就存放在filebeat/files中
总用量 11652
-rw-r--r-- 1 root root 11904934 10月 22 2020 filebeat-6.8.13-x86_64.rpm
-rw------- 1 root root 12277 6月 21 15:34 filebeat.yml

 

~~大概流程清楚了就继续了解Saltstack常用的模块吧~~~

 

二.Salt常用模块

1. 状态模块:pkg

功能:管理软件包状态

官方文档:https://www.unixhot.com/docs/saltstack/ref/states/all/salt.states.pkg.html

常用方法:

pkg.installed              #安装软件包

pkg.latest                  #确保软件包是最新版本,不是的话就升级

pkg.remove               #如果之前安装了软件包就卸载

pkg.purge                 #卸载软件包并删除配置文件

 

示例:

filebeat-package:
  pkg.installed:
    - sources:
      - filebeat: salt://filebeat/files/filebeat-6.8.13-x86_64.rpm

 

 2.状态模块:file

功能:管理文件状态

官方文档:https://www.unixhot.com/docs/saltstack/ref/states/all/salt.states.file.html


常用方法:

file.managed                #保证文件存在并且内容一致

file.recurse                  #保证目录存在并且为对应状态

file.absent                   #如果文件存在就进行删除

 

3.状态模块:service
功能:管理服务状态

官方文档:https://www.unixhot.com/docs/saltstack/ref/states/all/salt.states.service.html


常用方法:

service.running                #确保服务处于运行状态,没有运行的话则启动

service.enabled               #让服务开机自动启动

service.disabled              #让服务开机不要自动启动

service.dead                   #确保服务处于停止状态,服务在运行的话则停止

 

4.状态模块:requisites
功能:处理状态间关系
常用方法:

require            #我依赖某个状态,比如安装软件时依赖某个软件包

require_in        #我被某个状态依赖

watch              #我关注某个状态

watch_in          #我被某状态关注

 

二. sls文件书写技巧

一般写sls文件可以按照pkg、file、service这样的模块顺序来写。鉴于我们平时操作也是先安装软件包,再写配置文件,最后启动服务。

举一个🌰:

filebeat-package:         #安装包
  pkg.installed:
    - sources:
      - filebeat: salt://filebeat/files/filebeat-6.8.13-x86_64.rpm

 

/etc/filebeat/filebeat.yml:

  file.managed:                        #配置文件
    - source: salt://filebeat/files/filebeat.yml
    - user: root
    - group: root
    - mode: 600
    - template: jinja
    - require:               #依赖于xxx,也可以理解为前提   配置文件的前提是已经安装该服务
      - pkg: filebeat-package

 

filebeat:

  service.running:           #启动服务
    - enable: True
      - watch:                  #监视配置文件,可以理解为当配置文件发生改变时重启服务
        - file: /etc/filebeat/filebeat.yml

补充:

apache-config: #状态id1
  file.managed:
    - name: /etc/httpd/conf/httpd.conf
    - source: salt://web/files/httpd.conf
    - user: root
    - group: root
    - mode: 644
    - require:
      - pkg: lamp-install

 

apache-conf: #状态id2
  file.recurse:
    - name: /etc/httpd/conf.d
    - source: salt://web/files/apache-conf.d
    - watch_in:
      - service: lamp-service lamp-service:

service.running:
    - name: httpd
    - enable: True
    - reload: True                         #如果加上reload: True 代表文件发生变化的时候,服务会重载,但是需要该服务支持重载才能有
    - watch:                                 #通过watch来监听状态id1和状态2的状态,如果他两有任何一个文件或目录发生变化,那么,重启httpd服务
      - file: apache-config
      - file: apache-conf

注:reload: True 这个需要服务支持重新加载,才能用该选项。

posted @ 2021-04-19 16:09  芒果~~  阅读(240)  评论(0编辑  收藏  举报