salt安装  https://docs.saltstack.com/en/latest/topics/installation/index.html#quick-install
 
salt远程执行命令
 salt  '<target>' <function> [arguments]
 # salt    '*'     service.status     mysqld
 
terget:
全局配置 * ?  []    
      salt  'tencen[a-z]'  test.ping
 -E  正则
     salt -E '[a-z]{0,8}' test.ping
     salt -E  '^ten.*t$'  test.ping
-L   列表
    salt -L 'minion01,minion02' test.ping
-G grains
     salt -G 'os:CentOS'  cmd.run 'w'
-C  复合
    salt -C 'G@os:Ubuntu and webser* or E@database.*'  cmd.run 'w'
  
查看function
salt '*' sys.list_modules
salt '*' sys.list_functions
salt '*' sys.list_functions test
salt '*' sys.doc test.ping
 
salt-key 密钥管理,通常在master端执行
salt-key [options]
salt-key -L #查看所有minion-key
 -a minionid | -A  #接受某个minion|接受所有
-d minionid  |-D    #删除某个minion|删除所有
 
salt-run
salt-run manage.status   #查看所有minion状态
salt-run manage.up|down     #查看所有在线|不在线minion
 
salt-call    minion端自己执行模块
salt-call cmd.run 'ifconfig'    #自己执行cmd.run
salt-call -l debug state.sls zabbix   # 自己执行master上的zabbix.sls文件
 
salt-cp
salt-cp  下发文件 不用写目标名
salt-cp 'minion01'  s2n.py  /root   #  将本地s2n.py发送到远程minion的root目录下

常用模块

cp模块
salt '*' cp.get_file salt://test.txt /root/test.txt    # 下发文件  从master到minion   要写目标文件名
salt "*" cp.get_dir salt://testdir/ /root    #下发目录   从master到minion的/root下
 
cp.push   从minion发文件到master
需要先在master设置 file_recv: True

salt 'minion01' cp.push /root/test.log

把minion01的文件发到了master /var/cache/salt/master/minions/minion01/files/root/test.log 下面

 
文件管理模块 file

# salt 'minion01'  file.copy /root/test.py /root/test.py.bak   # 将minion端的一个文件copy成另一个文件

#salt '*' file.chown /etc/passwd root root 修  改文件属组

 
# salt 'test01'  file.append /opt/test.txt 'salt test file001'   追加内容

远程执行命令 cmd
#salt -v --out=json "*" cmd.run "ps aux |wc -l"

master向minion推送脚本执行
salt '*' cmd.script salt://scripts/runme.sh 

安装包 pkg
#salt "*" pkg.install "httpd" 安装
pkg.version

pkg.remove

管理服务模块 service
salt "*" service.status "httpd"

service.start|stop|restart

用户管理模块 user
salt  '*'  user.add  'test' shell=/sbin/nologin

user.delete  
user.info

计划任务cron
查看:
# salt 'me' cron.ls root
添加:
# salt 'test*' cron.set_job root '0' '0' '*' '*' '*' '/bin/bash /root/scripts/nginxlogcron.sh' comment='Nginx 日志切分'
删除:
# salt 'test01' cron.rm_job root '/bin/bash /root/scripts/nginxlogcron.sh'
注意 :删除任务只能删除由salt 添加的计划任务,要想删除以前手动添加的, 需要在原本的计划任务上面添加一行:
# Lines below here are managed by Salt, do not edit
 
 
 
state.sls文件
https://docs.saltstack.com/en/latest/ref/states/all/

# salt '*' sys.list_state_modules          //查看state所有模块
# salt '*' sys.list_state_functions pkg // 查看state指定模块的所有方法
# salt '*' sys.state_doc pkg // 查看模块方法的详细用法
# salt '*' sys.state_doc pkg.upgrade // 查看某个方法的详细用法
 
yaml 格式
  • 缩进   两个空格,不能tab键。表示层级关系
  • 冒号   冒号后面一个空格,除了以冒号结尾和路径中的冒号
  • 短横线   后面跟一个空格。表示列表项。

state.sls的写法:

# cat  test.sls
lftp: # name
pkg.installed #状态模块 installed-ssh: # ID 必须唯一。一个id声明下,状态模块不能重复使用。
pkg.installed:
- names: # names复数,多个值,一行一个,列表项
- openssh-server
- openssh-clients

执行:  salt '*' state.sls test

jinja模板语法:变量用{{...}}, 表达式用{%...%}

1. 设置jinja变量

{% set var='hello world!' %}
test_var:
  cmd.run:
      - name: echo "var is {{var}}"

设置:

字符串: {% set var='hello world!' %}

引用: {{var}}

列表:    {% set list = ['one','two','three'] %}

{{ list[1] }}

字典:    {% set dic = {'a':'11','b':'22'} %}

{{ dic['a'] }}

2,流程控制语句

For循环

{% for user in users %}
{{user}}
{% endfor %}
#字典
{% for key,value in my_dict.iteritems() %}
{{ key }}
{{ value }}
{% endfor %}

举例:

举例:
dir-tomcat:
file.directory:
{% for Dir in ['bin','conf','lib','logs','temp','webapps','work'] %}
- names:
- /usr/local/tomcat/{{Dir}}
{% endfor %}
- makedirs: True
- user: root
- group: root
- dir_mode: 755
- file_mode: 644
例2:
grains   描述minion本身固有属性的静态数据。例如,操作系统版本,内存,网卡的mac地址等
# salt '*' grains.get fqdn

# salt "minion-2" grains.items
# salt "*" grains.ls

检索某一grains数据用如下命令:
#salt 'minion-2' grains.item os

了解操作系统信息后 ,可以使用grains定位主机,用-G或者--grains对只是centos的机器定位
#salt -G "os:CentOS" test.ping
#salt -G "hwaddr_interfaces:eth0:00:16:3e:06:39:af" test.ping

 
 
pillar
#配置pillar_roots
# vim /etc/salt/master
pillar_roots:
base:
- /srv/pillar

#  salt  '*' saltutil.refresh_pillar   pillar刷新

使用 jinja 模板
1.File状态使用template参数  - template: jiaja
2.File状态模块要指定变量列表:
 - defaults:
    Server: 192.168.1.10
3.模板文件里面调用  {{Server}}
 
file模块   
notice:只有file模块里才可以使用template函数
{% set confdir="/etc/zabbix" %}
zabbix-conf:
file.managed:
- name: {{confdir}}/zabbix_agentd.conf
- source: salt://file/zabbix_agentd.conf
- user: root
- group: root
- mode: 755
- require:
- pkg: zabbix-pkg
- template: jinja
- defaults:
SERVER: {{ pillar['zabbix-agent'] }} #SERVER变量 # 定义pillar值
# cat /srv/pillar/zabbix-agent.sls
zabbix-agent: 192.168.1.10

# cat /srv/pillar/top.sls
 base:
   '*':
     - zabbix-agent

# vim file/zabbix_agentd.conf      #文件里面使用变量
Server={{ SERVER }}
Hostname={{ grains['fqdn'] }}
 
pkgrepo模块  用来管理软件包存储库
zabbix-yum:    # ID号
pkgrepo.managed: # 方法名
- name: zabbix #参数 zabbix是文件名 发到客户端为/etc/yum.repos.d/zabbix.repo 文件
- humanname: Zabbix Official Repository - $basearch
- baseurl: http://repo.zabbix.com/zabbix/3.4/rhel/7/$basearch/
- enabled: 1
- gpgcheck: 0
- gpgkey: file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
 
 
 
 

salt相关的更多相关文章

  1. 从零开始搭建Salt Web之初探salt-api

    Salt-API入门 在Google搜索栏输入salt-api,会有一些讲述如何使用Salt-API的文章,确实有效,不过都是建立 在将Salt安装在默认目录下的情况下,即通过apt-get inst ...

  2. saltstack 开发相关命令记录

    SALT API开发相关命令记录. 查看当前的salt key信息salt-key -L 测试被控主机的连通性salt '*' test.ping 远程命令执行测试salt '*' cmd.run ' ...

  3. saltstack自动化运维系列12配置管理安装redis-3.2.8

    一.准备redis自动化配置的文件(即安装一遍redis,然后获取相关文件和配置在salt中执行上线) 1.源码安装redis3.2.8并注册为系统服务 安装依赖yum install -y tcl ...

  4. saltstack自动化运维系列⑩SaltStack二次开发初探

    saltstack自动化运维系列⑩SaltStack二次开发初探 1.当salt运行在公网或者网络环境较差的条件下,需要配置timeout时间vim /etc/salt/master timeout: ...

  5. 有道词典翻译(携带请求头和post参数请求)

    一.静态爬取页面信息 有道翻译网址:http://fanyi.youdao.com/ 在翻译中输入python 找到接口和请求的方式 参数是From Data类型 需要把参数数据转换为字典, 复制粘贴 ...

  6. YAML描述与Python的对应关系

    YAML是"YAML Ain't a Markup Language"的首字母缩写,其语法简单,结构通过空格来展示,(列表)项目使用"-"来代表,(字典)键值对 ...

  7. 记一次centos6升级salt-minion启动失败的问题

    记一次centos6升级salt-minion启动失败的问题 作者:耀耀 blog:https://www.liuyao.me 一.起因 升级Salt-minion后 使用/etc/init.d/sa ...

  8. Java 权限框架 Shiro 实战一:理论基础

    Apache Shiro 官网地址:http://shiro.apache.org/ Apache Shiro is a powerful and easy-to-use Java security ...

  9. saltstack安装+基本命令

    环境: node1:172.16.1.60 OS:centos 7.3 master hostname:centos7u3-1 node2:172.16.1.61 OS:centos 7.3 mini ...

随机推荐

  1. 第三章 Web页面建设

    认识<q>元素: 简短的引用. 问:你去掉了双引号,换成了一个<q>元素,只是为了显示双引号?这样不是更复杂了吗? 答:不.在增加<q>元素之前,浏览器只知道这是一 ...

  2. Ubuntu18.04 安装搜狗输入法后无法启动的问题

    ibus 改选成fcitx后搜狗输入法照样没出来. 这里需要im-config 没有的话需要安装: sudo apt install im-config 然后在Terminal中执行 im-confi ...

  3. HDU 4632 Palindrome subsequence & FJUT3681 回文子序列种类数(回文子序列个数/回文子序列种数 容斥 + 区间DP)题解

    题意1:问你一个串有几个不连续子序列(相同字母不同位置视为两个) 题意2:问你一个串有几种不连续子序列(相同字母不同位置视为一个,空串视为一个子序列) 思路1:由容斥可知当两个边界字母相同时 dp[i ...

  4. POJ 3903 Stock Exchange(LIS || 线段树)题解

    题意:求最大上升子序列 思路:才发现自己不会LIS,用线段树写的,也没说数据范围就写了个离散化,每次查找以1~a[i]-1结尾的最大序列答案,然后更新,这样遍历一遍就行了.最近代码总是写残啊... 刚 ...

  5. CF981D Bookshelves

    按位贪心+DP的好题qwq 首先看到题目的要求,统计价值的时候的操作是按位与,就要有按位分别计算的意识 开始没意识到结果想了好久还是看了题解才想到 由于统计价值的方式不是加和,所以可能会出现两个较大的 ...

  6. [蓝桥] 算法训练 P0505

    时间限制:1.0s 内存限制:256.0MB 一个整数n的阶乘可以写成n!,它表示从1到n这n个整数的乘积.阶乘的增长速度非常快,例如,13!就已经比较大了,已经无法存放在一个整型变量中:而35!就更 ...

  7. @PathVariable与@RequestBody的区别,及前段请求接口的写法。

    @PathVariable 1:接受参数时,地址栏为:/{args1}/{args2} 2:用法:(@PathVariable(value = "args")Long  id) 3 ...

  8. HDU 3635 Dragon Balls(带权并查集)

    http://acm.hdu.edu.cn/showproblem.php?pid=3635 题意: 有n颗龙珠和n座城市,一开始第i颗龙珠就位于第i座城市,现在有2种操作,第一种操作是将x龙珠所在城 ...

  9. 提高R语言速度--转载

    1.     参考<R语言编程艺术>(Norman Matloff) chapter 14 & chapter 15 2.     方法 (1)向量化 与非向量化-循环做个对比: ...

  10. Easyui使用心得(1)--DateGrid表格

    最近一直在用easyui这个控件,有一点心得,在这里和大家分享一下,也是对自己工作的一个小小的总结,希望可以形成一个完整的Easyui的笔记体系,可以方便更多的人 因为自己也是在摸索中前进,难免有遗漏 ...