saltstack常用功能

本文详细介绍了SaltStack的Master-Minion架构及核心组件,包括States、Modules、Grains和Pillar。重点讲解了如何使用SaltStack进行用户管理、文件管理、目录管理、包管理和计划任务的配置。通过具体的SLS模板示例,展示了如何创建、删除用户,上传、管理文件,安装软件包以及设置计划任务。此外,还提到了 SaltStack 中的依赖关系处理和外部模板调用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

saltstack常用功能模块编写

 

一.简介

Master - 控制中心,salt命令运行和资源状态管理端

Minions - 需要管理的客户端机器,会主动去连接Master端,并从Master端得到资源状态信息,同步资源管理信息

States - 配置管理的指令集

Modules- 包含命令行下运行的指令,和在配置文件里面使用的指令模块可以的函数可以在命令行下运行

Grains - minion端的变量,静态

pillar - minion端的变量,动态,可自定义

highstate - 给minion永久添加状态,从sls配置文件读取到

salt schedule - 自动保持客户端配置

 

二.常用功能

       执行命令cmd.run

       Sls模板state.sls

Pillar

自定义模块

 

 

 

 

三.State.sls

       本文主要介绍state.sls常用基础功能写法,主要包含通过sls模板实现以下几块的管理:

1.    用户管理

2.    文件管理

3.    目录管理

4.    安装包管理

5.    计划任务

 

用户管理

用户管理分为创建和删除用户,分别对应user.present和user.absent,如下sls模板,如用户不存在,则新建用户admin和admin1,并设置相关属性:

[root@]# catinit.sls

admin:

  user.present:

    - shell: /bin/bash

    - home: /home/admin

    - uid: 888

admin1:

  user.present:

- uid: 1111

如下则是删除用户

  admin:

    user.absent:

      - purge:True

      - force:True

Purge:为True指删除该用户家目录以及下面的文件,类似于userdel –r

Force:为True指即使该用户当前在线也强制删除

添加用户的模板一般用于其他sls调用,如安装mysql的sls模板可以先调用此模板新建mysql用户。如果是临时需要新建用户,直接用cmd.run即可

 

 

文件管理:

文件管理主要分为文件的上传和文件附加内容

文件上传管理一般通过file.managed,如下sls,即为在minion端备份gz包之后,将gz包传到minion目录/usr/local下,并设置相关属性

[root@]# cat init.sls

/usr/local/nginx-2.1.2.tar.gz:

  file.managed:

    - source:salt://nginx/nginx-xxx.xxx.tar.gz

    - user: root

    - group:root

    - mode: 755

    - backup:minion

    - template:jinja

先备份在minion端的目录/var/cache/salt/minion/file_backup下,然后上传,长期使用备份目录会增大,恢复可用salt命令恢复或者直接手动考备份文件均可

 

file.append用于追加文件,如下,用于安装完jdk之后将环境变量追加入profile文件里面(假设jdk安装目录为下),用于jdk安装模块调用:

 

/etc/profile:

  file.append:

    - text:

      - "exportJAVA_HOME=/usr/local/jdk1.6.0_13"

      - "exportPATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH"

      - "exportCLASSPATH=$JAVA_HOME/lib/:$JAVA_HOME/jre/lib:$CLASSPATH"

 

 

 

目录管理

       file.recurse将目录下的所有文件覆盖到目标minion目录,目录递归复制,类似于rsync,如果master端减少了文件,minion端默认不会删除,如下将本地conf目录的文件全部同步到线上conf,并设置相关属性

/usr/local/nginx/conf:

  file.recurse:

    -source: salt://nginx/conf

    -user: root

    -group: root

    -file_mode: 644

    -dir_mode: 755

    -template: jinja

- backup: minion

- makedirs: True

- include_empty: True

- recurse:

  - user

  - group

  - mode

 

以上模板注意空格调整成一致,一般缩进空2格

 

新建目录,如新建/web/logstash目录,并设置相关属性,一般用于其他模板调用

/web/logstash:

 file.directory:

    - user: web

    - group: web

    - file_mode:644

    - dir_mode:755

    - makedirs:True

    -include_empty: True

    - template:jinja

    - backup:minion

 

包管理

       如下,如在linux下即调用系统yum命令安装相关包,常用于初始化环境或者其他模块调用依赖包,如nginx的pcre-devel等

installpackages:

   pkg.latest:

      - pkgs:

        - aspell

        - ncurses

        - ncurses-devel

        - pcre-devel

        - telnet

        - libcurl

        - libcurl-devel

计划任务

添加计划任务salt 'xxx' cron.set_job root 0 3 '*' '*' '*' "echo'abc'" "mytest"

删除计划任务salt 'xxx' cron.rm_job root "echo 'abc'“

第二种方式就是写sls也可做计划任务

/usr/local/test.sh >> /var/log/test.log2>&1:

  cron.present:

   - identifier:test cron  #计划任务描述,同上面的mytest

    -user: root

       -minute: '0'

 - hour: '4'

 

/usr/sbin/ntpdatetime.windows.com:

  cron.present:   

    - identifier: ntpdate rsync   

    - user: root   

    - minute: '*/30'

 

 

 

 

 

 

如下是一个完整的nginx安装模板:整个模板的功能就是讲nginx安装包通过file.managed上传到相关目录,调用cmd.run执行安装命令,调用用户管理模板新建用户,调用目录管理上传配置文件目录以及目录内部配置文件。

 

#用include调用引入外部模板,用于新建nginx需要的用户,新建用户模板见上面用户管理

include:  

  - nginx_user

#安装nginx

install_nginx:

  cmd.run:

    - name: tar -zxvf nginx-2.1.2.tar.gz&& cd nginx-2.1.2 && sh configure --prefix=/usr/local/nginx--with-http_ssl_module --with-http_stub_status_module && make&& make install

    - cwd: /usr/local  #执行上面的命令需要在此目录

    - unless: test -f/usr/local/nginx/sbin/nginx #测试nginx此文件不存在,则执行上面name后面的命令

    - require:

      - file: /usr/local/nginx-2.1.2.tar.gz  #执行之前需要先执行此模块,此模块写在下面

#上传nginx安装包模块

/usr/local/nginx-2.1.2.tar.gz:

  file.managed:

    - source: salt://nginx/nginx-2.1.2.tar.gz

    - unless: test -f /usr/local/nginx-2.1.2.tar.gz

    - user: root

    - group: root

    - mode: 755

    - template: jinja

    - require:

      - sls: nginx_user

#上传nginx配置文件模块

/usr/local/nginx/conf:

  file.recurse:

  - source: salt://nginx/conf

  - user: root

  - group: root

  - file_mode: 644

  - dir_mode: 755

  - template: jinja

  - backup: minion

  - makedirs: True

  - include_empty: True

  - recurse:

    - user

    - group

    - mode

  - require:

- cmd: install_nginx

 

注意上面用到的依赖关系和模板外部调用方法,如下,这里不做详解,可自行查询

•     include

   - modulename

•     require

    - file:

    - cmd:

    - sls:

 

此外还有:

变量使用

Watch用法

Pillar自定义变量

以及模块开发等,此文不做详述,后面文章可能会写到


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值