文档章节

SaltSack入门(三)Salt相关命令和Pillar应用

香胖
 香胖
发布于 2015/12/05 16:51
字数 1179
阅读 69
收藏 0

1.先了解下管理端(master)常用相关命令
1.1 salt     #
主要管理命令
   
命令格式:salt [options]  <target> [arguments]
   
例:salt ‘*’ test.ping
1.2 salt-key #
证书管理
   # salt-key –L            #
查看所有minion-key
    # salt-key –a  <keys-name>   #
接受某个minion-key
    # salt-key –d  <keys-name>   #
删除某个minion-key
    # salt-key –A            #
接受所有的minion-key
    # salt-key –D            #
删除所有的minion-key
1.3 salt-run #
管理minion
   # salt-run manage.up #
显示当前活着的minion
    # salt-run manage.down  #
显示未存活的minion
    # salt-run manage.status #
显示当前updown minion
    # salt-run manage.downremovekeys-True #
显示未存活的minion,并将其移除
1.4 salt-cp #
master文件复制到minion,不支持复制目录
   
命令格式:salt-cp [options]<target> SRC DST
   
例:salt-cp '*'/root/test.sh  /root/test.sh
1.5 salt-ssh   
   #
通过ssh连接被管理端,被管理端不用安装minion,管理端也不用安装mastersalt-ssh是一个独立的包,安装后即可使用saltstack大部分功能,没有通讯机制ZeroMQ,命令执行速度会下降。一般没有客户端没有安装minion时候才考虑先用salt-ssh批量安装minion
   # apt-get install salt-ssh sshpass     #salt-ssh
用的sshpass进行密码交互,必须要安装
   1.5.1 salt-ssh
常用参数
    -r
-raw-shell  执行shell命令
    --key-deploy  
配置keys
    -i
-ignore-host-keys    ssh连接时,忽略keys
     -passwd   
指定默认密码
     -roster-file  
指定roster文件
   1.5.2 salt-ssh
使用
    1.5.2.1 sat-ssh
通过调用roster配置文件实现,所以先定义roster,让salt-ssh生效,就可以执行操作了
    # vi /etc/salt/roster
    db:
      host: 192.168.18.212
      user: root
      passwd: 123456
      port: 22
      timeout: 10
    1.5.2.1
测试
    # salt-ssh 'db' test.ping
    db:
        True
    1.5.2.3
执行shell命令及salt本身的模块
    #
第一次运行时会提示是否接受秘钥,如果不想再提示可以加入—key-deploy参数
    # salt-ssh 'db' -r 'uptime'     
    # salt-ssh 'db' disk.usage          #
调用salt本身的模块
    # salt-ssh 'db' grains.itemcpu_model   #
获取grains信息
2
Pillar
上节讲过Salt StateSalt状态系统的核心SLS,也可叫做配置管理,SLS描述了系统的目标状态,由简单的格式来包含这些数据。
Pillar
Salt最重要的系统之一,可用于提供开发接口,用于在master端定义数据,然后再minion中使用,一般传输敏感的数据,例如ssh key,加密证书等。
pillar
states建立方式类似,由sls文件组成,有一个入口文件top.sls,通过这个文件关联其他sls文件,默认路径在/srv/pillar,可通过/etc/salt/master里面pillar_roots:指定位置。
pillar
到底什么作用呢?那么下面介绍一个简单的例子,你就明白了。
zabbix监控新上架的服务器(10台),需要将zabbix_agentd.conf分发到被监控主机,这个文件中hostnameip每台都不同,我们不可能写10分配置文件吧!那么如何让hostname在分发的时候就根据被监控主机IP,修改成自己的呢?这时就可以用渲染了。
2.1
创建pillar目录和top.sls文件

1
2
3
4
5

# mkdir /srv/pillar
# vi /srv/pillar/top.sls
base:
   '*':
- ip



2.2
先通过pillar获取minion主机IP

1
2

# vi /srv/pillar/ip.sls
ip: {{ grains['ipv4'][1] }}



#
写完后,执行sls命令,可以看到已经获取到IP

1
2
3
4
5
6
7
8
9

# salt '*' pillar.item ip
host2:
     ----------
     ip:
         192.168.18.213
host1:
     ----------
     ip:
         192.168.18.212



2.3
随后写个sate文件,将文件分发到minion

1
2
3
4
5
6
7
8
9

# mkdir /srv/salt/zabbix
# vi /srv/salt/zabbix/agentd_conf.sls
zabbix:
   file.managed:
     - source: salt://zabbix/zabbix_agentd.conf
     - name:/usr/local/zabbix/conf/zabbix_agentd.conf
     - template: jinja
     - defaults:
      ip: {{ pillar['ip'] }}



2.4
修改zabbix_agentd.conf要渲染的IP

1
2
3
4
5

# vi /srv/salt/zabbix/zabbix_agentd.conf
LogFile=/tmp/zabbix_agentd.log
Server=192.168.18.214
ServerActive=127.0.0.1
Hostname={{ ip }}



2.5
执行单sls命令,不用将sls文件关联到top.sls文件                         

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35

# salt '*' state.slszabbix.agentd_conf
host1:
----------
           ID: zabbix
     Function: file.managed
         Name:/usr/local/zabbix/conf/zabbix_agentd.conf
        Result: True
       Comment: File/usr/local/zabbix/conf/zabbix_agentd.conf is in the correct state
      Started: 11:48:35.261683
     Duration: 139.733 ms
      Changes:  
  
Summary
------------
Succeeded: 1
Failed:    0
------------
Total states run:     1 
host2:
----------
          ID: zabbix
    Function: file.managed
        Name:/usr/local/zabbix/conf/zabbix_agentd.conf
      Result: True
     Comment: File/usr/local/zabbix/conf/zabbix_agentd.conf is in the correct state
     Started: 11:31:41.906766
    Duration: 141.928 ms
     Changes:  
  
Summary
------------
Succeeded: 1
Failed:    0
------------
Total states run:     1




#
这时再通过命令查看,已经更新成功

1
2
3
4
5
6
7
8
9
10
11

# salt '*' cmd.run 'cat/usr/local/zabbix/conf/zabbix_agentd.conf'      
host1:
    LogFile=/tmp/zabbix_agentd.log
    Server=192.168.18.214
    ServerActive=127.0.0.1
    Hostname=192.168.18.212
host2:
    LogFile=/tmp/zabbix_agentd.log
    Server=192.168.18.214
    ServerActive=127.0.0.1
    Hostname=192.168.18.213



pillar
相关命令:

#
刷新pillar数据到minion
# salt "*" saltutil.refresh_pillar
#
查看所有pillar信息
# salt "*" pillar.items
#
查看某个pillar信息
# salt "*" pillar.item ip
既然grainspillar类似,就说下区别:
1.grains
minion每次加载时获取本地系统信息数据,是静态的,固定的,而pillar是动态加载数据,随时变化的,比grains更灵活。
2.grains
数据存储在minion本地,pillar存储在master

 

本文转载自:http://www.iyunv.com/thread-64852-1-13.html

香胖
粉丝 0
博文 40
码字总数 20679
作品 0
苏州
私信 提问
自动化-----saltstack基础技术

saltstack比puppet出来晚几年,基于python开发,如果你仔细对比会发现saltsack和puppet很像,随着saltstack的使用量越来越多,它的发展也是越来越迅猛,可以说saltstack可以实现puppet的所有...

super李导
2017/03/17
0
0
saltstack state模块-状态管理

一、说明 本文基于前两篇的salstack的安装部署和使用的基础上,又一个常用的功能, State模块是saltstack核心的功能,状态管理包括:Package,File,Network, Service, User等常用功能,其...

dyc2005
2017/09/29
0
0
自动化运维工具之Saltstack

一、简介 what is Saltstack? Saltstack是一个具备puppet与func功能为一身的集中化管理平台,saltstack基于python实现,功能十分强大,适合大规模批量管理服务器,并且它比 Puppet 更容易配置...

SoulMio
2017/11/22
0
0
集中化管理平台saltstack--pillar(4)

pillar Pillar是用来产生特定于minions的任意数据的接口。它跟grains的结构一样,也是一个字典格式,数据通过key/value的格式进行存储。作用是定义与被控主机相关的任何数据,定义好的数据可...

东丶
2017/02/27
0
0
运维自动化之Saltstack( 三)Saltstack的数据信息采集者Grains和Pillar

Saltstack的数据信息采集者Grains和Pillar 一、SaltStack 的配置文件格式及写法 在谈到grains和pillar之前,要和大家先谈一下SaltStack的配置文件写法 因为下面谈到的自定义grains和如何配置...

xiguatian
2016/09/02
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Shell学习记录(持续更新)

一、shell定时备份数据库任务通用脚本 目标:根据定时任务启动脚本,执行数据库备份任务,按照日期进行每日备份,如已经备份则脚本停止,备份任务完成后将结果发送邮件提醒 1.执行数据库备份...

网络小虾米
今天
3
0
PHP计算两个经纬度地点之间的距离

/** * 求两个已知经纬度之间的距离,单位为米 * * @param lng1 $ ,lng2 经度 * @param lat1 $ ,lat2 纬度 * @return float 距离,单位米 * @author www.Alixixi.com */function get...

子枫Eric
今天
14
0
Linux—day 4

ch2 需要掌握的命令 (1)cat -n 1.txt (2)more 1.txt (3)head -n 15 initial-setup-ks.cfg (4)tail -n 17 initial-setup-ks.cfg;tail -f initial-setup-ks.cfg (5)cat -n anaconda-ks.c......

呵呵暖茶
今天
31
0
【Kubernetes社区之路】我的PR被抢了

2019年11月的某天,我无意间发现一个PR作者在自己的PR中抱怨自己的PR没被合入,而另一个比自己提交晚且内容几乎一样的PR则被合入了。 字里行间透露些许伤感外加无奈,原文如下: 作为一名开源...

恋恋美食
今天
40
0
阻塞队列

对于许多线程问题, 可以通过使用一个或多个队列以优雅且安全的方式将其形式化。生产者线程向队列插人元素, 消费者线程则取出它们。 使用队列, 可以安全地从一个线程向另 一个线程传递数据...

ytuan996
今天
48
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部