介绍一些常用的saltstack模块,更多模块参考官方网站

1、跟安装包相关的模块:salt.states.pkg

salt.states.pkg.downloaded(name, version=None, pkgs=None, fromrepo=None, ignore_epoch=None, **kwargs)

当同时使用了name,pkgs那么name将会被忽略
 
salt.states.pkg.installed(name, version=None, refresh=None, fromrepo=None, skip_verify=False, skip_suggestions=False, pkgs=None, sources=None, allow_updates=False, pkg_verify=False, normalize=True, ignore_epoch=False, reinstall=False, update_holds=False, **kwargs)

salt.states.pkg.removed(name, version=None, pkgs=None, normalize=True, ignore_epoch=False, **kwargs)
removed卸载某包

2、远程执行命令的模块

salt.states.cmd.run(name, onlyif=None, unless=None, creates=None, cwd=None, runas=None, shell=None, env=None, stateful=False, umask=None, output_loglevel='debug', quiet=False, timeout=None, ignore_timeout=False, use_vt=False, **kwargs)

  name:The command to execute, remember that the command will execute with the path and permissions of the salt-minion.

  cwd:The current working directory to execute the command in, defaults to /root

  unless:当执行的命令为false时,那么才执行name中的命令

  require:执行name中命令的依赖关系:

  pkg:必须安装了python包
  file:该file文件路径下有这个py文件
3、文件管理操作方面的模块
salt.states.file.managed(name, source=None, source_hash='`, source_hash_name=None, user=None, group=None, mode=None, template=None, makedirs=False, dir_mode=None, context=None, replace=True, defaults=None, backup='`, show_changes=True, create=True, contents=None, tmp_ext='`, contents_pillar=None, contents_grains=None, contents_newline=True, contents_delimiter=':', encoding=None, encoding_errors='strict', allow_empty=True, follow_symlinks=True, check_cmd=None, skip_verify=False, win_owner=None, win_perms=None, win_deny_perms=None, win_inheritance=True, **kwargs)

file.managed:文件管理,多用于复制,如果没有就创建该文件

salt.states.file.append(name, text=None, makedirs=False, source=None, source_hash=None, template='jinja', sources=None, source_hashes=None, defaults=None, context=None, ignore_whitespace=True) 
append-memcache-php:
file.append:
- name: /usr/local/php/etc/php.ini
- text:
- extension=memcache.so
cmd.run:
- name: /etc/init.d/php-fpm restart

file.append:向某文件中添加内容text=内容,name为需要添加的文件

salt.states.file.directory(name, user=None, group=None, recurse=None, max_depth=None, dir_mode=None, file_mode=None, makedirs=False, clean=False, require=None, exclude_pat=None, follow_symlinks=False, force=False, backupname=None, allow_symlink=True, children_only=False, win_owner=None, win_perms=None, win_deny_perms=None, win_inheritance=True, **kwargs)

file.directory:创建一个文件目录

/etc/keepalived:
file.directory:
- user: root
- group: root
- mode: 755

4、跟系统服务相关:state.service

salt.states.service.running(name, enable=None, sig=None, init_delay=None, no_block=False, unmask=False, unmask_runtime=False, **kwargs)

service.running:开启系统某服务enable为添加到自启动,name表示该启动的服务名称

  service.running:
- name: nginx
- enable: True
- reload: True
- require:
- file: /etc/init.d/nginx
- cmd: nginx-init
- watch:
- file: /usr/local/nginx/conf/nginx.conf

5、跟系统内核相关的设置:

salt.states.sysctl.present(name, value, config=None) Ensurethatthenamedsysctlvalueissetinmemoryandpersistedtothenamedconfigurationfile. Thedefault sysctl configuration file is /etc/sysctl.conf name The name of the sysctl value to edit value The sysctl value to apply config Thelocationofthesysctlconfigurationfile. Ifnotspecified,theproperlocationwillbedetectedbased on platform.

sysctl.present:修改系统内核参数

[root@node1 init]# cat sysctl.sls
vm.swappiness:
sysctl.present:
- value: 0 net.ipv4.ip_local_port_range:
sysctl.present:
- value: 10000 61000 fs.file-max:
sysctl.present:
- value: 186981

6、创建用户user和group用到的模块

www-user-group:
group.present:
- name: www
- gid: 1000 user.present:
- name: www
- fullname: www
- shell: /sbin/nologin
- uid: 1000
- gid: 1000

7、状态配置中require、unless详解:

[root@node1 base]# cat if_unless.sls
getshell:
file.managed:
- name: /tmp/echo.sh
- source: salt://init/files/echo.sh
cmd.run:
- name: /bin/bash /tmp/echo.sh
- unless: test -f /tmp/if_unless.sh
- require:
- file: /tmp/echo.sh

详解:

require:require要求下面的file必须事先经过了file.managed进行了设置,才能使用作为依赖条件
unless:测试tmp下面是否有if_unless.sh这个文件,如果测试成功有那么不会再执行,如果测试命令返回的code不是0那么才会执行
unless:一行表示,如果该文件存在,就不需要再执行name中的命令了(包如果安装了就需要再安装)
 
8、使用template: jinja来定义变量
zabbix-agent-service:
file.managed:
- name: /etc/zabbix/zabbix_agentd.conf
- source: salt://init/files/zabbix_agentd.conf
- template: jinja
- defaults:
Server: {{ pillar['zabbix-agent']['Zabbix_Server'] }}

在该salt://init/files/zabbix_agentd.conf配置文件中将Server={{ Server }}引用上面定义的变量即可

或者使用grains和pillar使用变量:

keepalived-service:
file.managed:
- name: /etc/keepalived/keepalived.conf
- source: salt://cluster/files/haproxy-outside-keepalived.conf
- user: root
- group: root
- mode: 644
- template: jinja
{% if grains['fqdn'] == 'node1' %}
- ROUTEID: haproxy_node1
- STATEID: MASTER
- PRIORITYID: 150
{% elif grains['fqdn'] == 'node2' %}
- ROUTEID: haproxy_node2
- STATEID: BACKUP
- PRIORITYID: 100
{% endif %}

saltstack常用模块的更多相关文章

  1. Saltstack常用模块及API

    Saltstack提供了非常丰富的功能模块,涉及操作系统的基础功能.常用工具支持等,更多模块信息可以查看官网模块介绍.也可以通过sys模块列出当前版本支持的模块. salt '*' sys.list_ ...

  2. Saltstack系列3:Saltstack常用模块及API

    说明 salt '*' sys.list_modules #列出当前版本支持的模块 API原理是通过调用master client模块,实例化一个LocalClient对象,再调用cmd()方法来实现 ...

  3. saltstack 常用模块

    cp模块 功能:实现远程文件.目录的复制,以及下载URL文件等操作 使用cp模块配置管理之前,要首先指定saltstack所有状态文件的根目录,在master上做如下操作: 指定根目录(确定指定的目录 ...

  4. Linux saltstack常用模块

    所有模块 salt '172.30.100.126' sys.list_modules #列出当前版本支持的模块 salt '*' sys.doc cp #显示指定模块的文档 archive模块 实现 ...

  5. SaltStack系列(二)之常用模块

    一.saltstack的内置模块汇总 acl,    aliases,    alternatives,    apache,    archive,    artifactory,    block ...

  6. SaltStack常用的模块

    目录 1. SaltStack模块介绍 2. SaltStack常用模块 2.1 SaltStack常用模块之network 2.1.1 network.active_tcp 2.1.2 networ ...

  7. Saltstack 安装与常用模块

    一.介绍 saltstack是基于C/S服务模式,在该架构中,服务器端叫做Master,客户端叫做Minion.传统的C/S模式我们这样理解,客户端发送请求给服务器端,服务器端接受到来自客户端的请求并 ...

  8. saltstack自动化运维系列③之saltstack的常用模块使用

    saltstack自动化运维系列③之saltstack的常用模块使用 1.命令的常用方法: 指定主机运行命令 # salt 'mini1' cmd.run 'date'mini1: Fri Apr 7 ...

  9. SaltStack学习系列之state常用模块

    常用模块:cron,cmd,file,mount,ntp,pkg,service,user,group cmd模块 参数: name:要执行的命令 unless:用于检查的命令,只有unless指向的 ...

随机推荐

  1. FluentNhibernate 不支持存储过程

    一直以为没有使用FN进行存储过程的操作,这次因为后台首页想统计下数据,就利用了存储过程,但在使用中却发现FN目前还不支持存储过程(点击查看官方),没有办法,只能利用Fluent Configurati ...

  2. IE edge是怎么了??

    IE edge 怎么不能通过$.getJSON(url,function(data){ alert(''); });获取数据呢?,其他浏览器和IE的10以下版本都没问题获取到了,这是什么情况!本来是想 ...

  3. js 正则 exec() 和 match() 数据抽取

    js 的正则表达式平常用的不多,但以前抽取数据的时候用到过,主要是有这样的需求: var text='<td class="data">2014-4-4</td& ...

  4. Groovy中的脚本与类

    包名 当你在groovy中定义类的时候需要指定包名,这和java中类似不多介绍. 导入 groovy中的导入也跟java类似,有一下五种: 默认导入 groovy默认导入了一下几个包和类: impor ...

  5. 使用arc进行code review

    https://secure.phabricator.com/book/phabricator/article/arcanist_quick_start/ 使用流程: 流程 本部分来自arcanist ...

  6. 系统架构--分布式计算系统spark学习(三)

    通过搭建和运行example,我们初步认识了spark. 大概是这么一个流程 ------------------------------                 -------------- ...

  7. how to use greendao in android studio

    http://www.arjunsk.com/android/use-greendao-android-studio/ 1.新建一个java文件MainGenerator.java: import d ...

  8. django+celery 实现定时任务

    利用 celery 实现定时任务 celery支持定时任务,设定好任务的执行时间,celery就会定时自动帮你执行, 这个定时任务模块叫celery beat Celery安装 由于celery 4. ...

  9. strtoul函数的使用

    函数原型: unsigned long strtoul(const char *nptr,char **endptr,int base ) 参数1:字符串起始地址参数2:返回字符串有效数字的结束地址, ...

  10. centos7部署PaaS平台环境(mesos+marathon)

    假如有5台主机可以使用,ip地址如下 规划(2master+3slave) master: 192.168.248.205 ---master1 192.168.248.206 ---master2 ...