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. linux服务器的所有服务web/dns/dhcp/vsftp-nfs-samba的配置

    nfs是sun开发的 network filesystem 网络文件系统,相当于win的映射网络驱动器, 可以将一台nfs服务器上的目录"挂载"到本地机器上的 一个 本地目录 一样 ...

  2. (转)Understanding, generalisation, and transfer learning in deep neural networks

    Understanding, generalisation, and transfer learning in deep neural networks FEBRUARY 27, 2017   Thi ...

  3. facebook api call——error

    Error Codes send-api error-codes whatsapp api errors marketing-api error-reference graph-api/using-g ...

  4. windows 如何不显示带点的文件名、文件夹?

    这些以点开头的文件夹和文件是为了在 linux 中隐藏的.但是在 windows 中如何不显示他们? 资源管理器: CMD:

  5. Python: 字典应用题

    Write a program to read through the mbox-short.txt and figure out who has sent the greatest number o ...

  6. 【BZOJ】3572: [Hnoi2014]世界树

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3572 算是细节题了吧.. 构出虚树,考虑z正反DP两次求出虚树中每个点最近的议事处是哪一个 ...

  7. Windows下Oracle创建数据库的3种方式

    1.   Creating a Database with DBCA DatabaseConfiguration Assistant (DBCA) is the preferred way to cr ...

  8. 清除div重叠浮动的方法

    在最后加入这样一个div. 并且为div加入以下属性: .clear { clear:both;}

  9. C#配置文件

    今天为大家讲一下为什么有时候我们创建项目的时候没有自带的配置文件项目,如下: 图1没有自己的配置文件,图二有自己的配置文件. 其实很简单,那是因为很多时候我们创建项目的时候,默认就会创建.NET Fr ...

  10. Java String删除字符串中间的某部分

    当你想删除字符串中的某部分时,java中并没有直接提供相关的方法,比如想删除 "cout<<\"Hello world\"<<endl" ...