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

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介:

1.先了解下管理端(master)常用相关命令

 1.1 salt     #主要管理命令

   命令格式:salt [options]  <target> [arguments]

    例:salt ‘*’ test.ping

 1.2 salt-key #证书管理

1
2
3
4
5
     # 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

1
2
3
4
     # salt-run manage.up           #显示当前活着的minion
     # salt-run manage.down           #显示未存活的minion
     # salt-run manage.status         #显示当前up和down 的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,管理端也不用安装master,salt-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生效,就可以执行操作了

1
2
3
4
5
6
7
     # vi /etc/salt/roster
     db:
       host: 192.168.18.212
       user: root
       passwd : 123456
       port: 22
       timeout: 10

    1.5.2.1 测试

1
2
3
     # salt-ssh 'db' test.ping
     db:
         True

    1.5.2.3 执行shell命令及salt本身的模块

    #第一次运行时会提示是否接受秘钥,如果不想再提示可以加入—key-deploy参数

1
2
3
     # salt-ssh 'db' -r 'uptime'     
     # salt-ssh 'db' disk.usage          #调用salt本身的模块
     # salt-ssh 'db' grains.itemcpu_model   #获取grains信息

2、Pillar

 上节讲过Salt State,Salt状态系统的核心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分发到被监控主机,这个文件中hostname的ip每台都不同,我们不可能写10分配置文件吧!那么如何让hostname在分发的时候就根据被监控主机IP,修改成自己的呢?这时就用到渲染了,默认渲染器是jinja,支持for in循环判断,格式是{%...%}{% end* %},这样一来salt会先让jinja渲染,然后交给yaml处理。

 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.sls zabbix.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

既然grains与pillar类似,就说下区别:

1.grains是minion每次加载时获取本地系统信息数据,是静态的,固定的,而pillar是动态加载数据,随时变化的,比grains更灵活。

2.grains数据存储在minion本地,pillar存储在master。


相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
目录
相关文章
|
JavaScript 定位技术
vue中滚轮缩放事件
vue中滚轮缩放事件
183 0
|
移动开发 前端开发 安全
最强大的 iOS 应用源码保护工具:Ipa Guard,保护你的商业机密代码
最强大的 iOS 应用源码保护工具:Ipa Guard,保护你的商业机密代码
ly~
|
11月前
|
监控 安全 生物认证
针对身份验证错误和漏洞,有哪些应急响应措施 发消息、输入 @ 或 / 选择技能
针对身份验证错误和漏洞,应立即停止相关服务,锁定受攻击账户,排查问题,修复漏洞,加强密码安全,完善身份验证流程,强化会话管理,建立安全监控和预警机制,通知用户并进行沟通,最后进行事后评估和总结。
ly~
345 2
|
8月前
|
机器学习/深度学习 人工智能 分布式计算
我的阿里云社区年度总结报告:Python、人工智能与大数据领域的探索之旅
我的阿里云社区年度总结报告:Python、人工智能与大数据领域的探索之旅
272 35
|
存储 缓存 Unix
Linux 设备驱动程序(三)(上)
Linux 设备驱动程序(三)
172 3
|
Kubernetes Devops 持续交付
容器化技术在DevOps中的应用
【7月更文挑战第6天】容器化技术在DevOps中的应用极大地提高了软件开发的效率和可靠性。通过自动化部署、持续集成与持续交付、环境一致性以及资源管理和监控等功能,容器化技术为开发人员和运维人员提供了更加便捷、高效的管理和部署方式。随着云计算技术的不断发展和普及,容器化技术将在DevOps中发挥越来越重要的作用。
|
关系型数据库 MySQL 数据库
轻松入门:使用Docker安装MySQL数据库的完全指南
轻松入门:使用Docker安装MySQL数据库的完全指南
|
人工智能 NoSQL MongoDB
国内唯一!阿里云荣膺MongoDB “2024年度DBaaS认证合作伙伴奖”
这是阿里云连续第五年斩获 MongoDB 合作伙伴奖项,也是唯一获此殊荣的中国云厂商。
3336 0
|
消息中间件 Java Kafka
【RabbitMQ】RabbitMQ快速入门 通俗易懂 初学者入门
【RabbitMQ】RabbitMQ快速入门 通俗易懂 初学者入门
366 0
|
机器学习/深度学习 人工智能 编解码
AI绘画提示词创作指南:DALL·E 2、Midjourney和 Stable Diffusion最全大比拼 ⛵
随着Diffusion Model的普及,AI绘画只需要你输入文本描述,模型就能在几分钟内生成精准匹配的精美图像。本文从使用步骤、费用和商用等角度对3个主流平台进行比较:DALL·E2、Midjourney、Stable Diffusion。
2759 2
AI绘画提示词创作指南:DALL·E 2、Midjourney和 Stable Diffusion最全大比拼 ⛵