首页 > 其他分享 >saltstack使用介绍

saltstack使用介绍

时间:2024-09-09 11:07:25浏览次数:15  
标签:slave Keys root 介绍 master key 使用 saltstack salt

saltstack使用介绍

saltstack是什么

早期运维人员会根据自己的生产环境来写特定脚本完成大量重复性工作,这些脚本复杂且难以维护。系统管理员面临的问题主要是1、系统配置管理,2、远程执行命令,因此诞生了很多开源软件,系统维护方面有fabric、puppet、chef、ansible、saltstack等,这些软件擅长维护系统状态或方便的对大量主机进行批量的命令执行。

  salt灵活性强大,可以进行大规模部署,也能进行小规模的系统部署。salt的设计架构适用于任意数量的服务器,从少量本地网络系统到跨越数个数据中心,拓扑架构都是c/s模型,配置简单。

  不管是几台、几百台、几千台服务器,都可以使用salt在一个中心节点上进行管控,灵活定位任意服务器子集来运行命令。

安装saltstack

安装python依赖

    pip3 install pyzmq pycryptodome msgpack pyyaml jinja2

安装saltstack软件

centos7通过储存库和密钥安装:官方文档

    # 配置密钥和储存桶
    sudo rpm --import https://repo.saltproject.io/salt/py3/redhat/7/x86_64/SALT-PROJECT-GPG-PUBKEY-2023.pub
    curl -fsSL https://repo.saltproject.io/salt/py3/redhat/7/x86_64/3007.repo | sudo tee /etc/yum.repos.d/salt.repo

    # 清除其他元数据
    yum clean expire-cache

    # 安装salt-master/salt-minion
    # 管理主机安装 salt-master
    # 被管理机器安装 salt-minion
    sudo yum install salt-master
    sudo yum install salt-minion

关闭系统防护策略

# 关闭防火墙
systemctl disable firewalld
systemctl stop firewalld

# 关闭iptables
iptables -F
# 关闭selinux
sestatus
# 放宽策略
setenforce 0

如果是云服务器,记得开放4505(publish_port 提供远程命令发送功能)和4506(ret_port 提供认证,文件服务,结果收集等功能)端口

saltstack部署

进行主salt和从salt配置

注意master和slave的配置都是yaml格式的文件。(注意yaml对格式要求很严格。不能缺少和增加空格)

ps: yaml文件格式

  • 键值对:以键值对的形式:key: value (注意key和value之中有一个空格)
  • 列表:一组按次序排列的值。类似于list。- list1 (注意空格)
  • 嵌套字典: 使用key: \n的形式,写个键、冒号、空格然后换行

img

给个例子

salt-master配置文件:

    # master机器配置文件位置为/etc/salt/master
    # 文件内容如下

    #绑定到本地的0.0.0.0地址
    interface: 0.0.0.0
    # 远程命令发送端口
    publish_port: 4505
    # 执行salt的用户
    user: root
    # 认证端口
    ret_port: 4506
    pidfile: /var/run/salt-master.pid
    worker_threads: 5
    # 是否自动接受密钥
    auto_accept: False

salt-slave配置文件:

    # slave机器配置文件位置为/etc/salt/minion
    # 文件内容如下
    
    # 绑定的主机ip
    master: saltmain
    # 主机ip开放的接受端口
    master_port: 4506
    # 执行salt的用户
    user: root
    # 我的个人识别id
    id: saltslave
    acceptance_wait_time: 10
    log_file: /var/log/salt/minion

设置dns伪解析

在/etc/hosts当中配置dns解析(方便不用写主机ip)

    127.0.0.1	localhost

    # The following lines are desirable for IPv6 capable hosts
    ::1	localhost	ip6-localhost	ip6-loopback
    ff02::1	ip6-allnodes
    ff02::2	ip6-allrouters
    127.0.1.1	localhost.vm	localhost
    127.0.1.1	hcss-ecs-b72a	hcss-ecs-b72a

    # 加上最后两行解析的ip
    124.71.140.179 saltslave
    47.109.190.455 saltmain

重新分别启动salt-master和salt-minion

  • 键入命令重新启动salt-master和salt-minion
    systemctl restart salt-master
    systemctl restart salt-minion
  • 注意下,可以直接通过查看status看到这两个服务启动有没有报错
    systemctl status salt-master
    systemctl status salt-minion

img

img

saltstack统计服务器信息

salt密钥接受

在确定端口开放和配置没有问题之后,就可以进行这步了。

# 在master机器上运行
[root@saltmain ~]# salt-key -L
Accepted Keys:
Denied Keys:
Unaccepted Keys:
saltslave # 在slave当中设置的id
Rejected Keys:

出现这个情况就是设备已经连接上了。这个时候其实就是接受到了原本机器的密钥

# 接受密钥
[root@saltmain ~]# salt-key -a saltslave
# 或者使用 -A 参数全部接受
salt-key -A

# 然后就可以看到这样的salt-key列表
[root@saltmain ~]# salt-key -L
Accepted Keys:
saltslave
Denied Keys:
Unaccepted Keys:
Rejected Keys:

# 参数描述
[root@linux-node1 ~]# salt-key -L
Accepted Keys:  #已经接受的key
Denied Keys:    #拒绝的key
Unaccepted Keys:#未加入的key
Rejected Keys:#吊销的key

#常用参数
-L  #查看KEY状态
-A  #允许所有
-D  #删除所有
-a  #认证指定的key
-d  #删除指定的key
-r  #注销掉指定key(该状态为未被认证)

ps.在接受密钥之前,也可以查看收到的密钥是否和slave机器中匹配

# 宿主机
[root@saltmain ~]# salt-key -f saltslave
Accepted Keys:
saltslave:  c9:66:e4:d2:b4:4b:4d:19:b5:c2:9a:0e:81:6c:9b:da:9b:1f:15:b5:30:12:a7:97:40:02:a9:db:fd:ce:9a:bb

# 从属机
root@saltslave1:~# salt-call --local key.finger
local:
    c9:66:e4:d2:b4:4b:4d:19:b5:c2:9a:0e:81:6c:9b:da:9b:1f:15:b5:30:12:a7:97:40:02:a9:db:fd:ce:9a:bb

salt命令介绍

这里介绍一些简单命令,有需要可以查看某些大佬的模块合集:掘金

    # 万能命令 cmd模块的run命令去执行命令行
    salt '*' cmd.run 'ls /opt/' # 在所有的子机器当中执行ls /opt/

    # 运行并显示运行概要(--summary)
    salt --summary '*' cmd.run 'hostname'

    # 测试机器是否联通
    salt '*' test.ping
    # 测试echo命令
    salt '*' test.echo 'chaoge nb666'

    # 查看所有模块
    salt '*' sys.list_modules
    # 查看test模块的所有函数(同样的也可以查看cmd模块等等)
    salt '*' sys.list_functions test

    # 安装包(例如nginx)
    salt 'slave' pkg.install "nginx"
    # 卸载包
    salt 'slave' pkg.remove "nginx"
    # 查看包版本
    salt 'slave' pkg.version "nginx"

    # 启动服务
    salt 'slave' service.start "nginx"
    # 查看服务状态
    salt 'slave' service.status "nginx"
    # 停止服务
    salt 'slave' service.stop "nginx"

    # --out 控制输出结果
    [root@saltmain ~]# salt --out=json '*' cmd.run_all 'hostname'
    {
        "saltslave": {
            "pid": 158105,
            "retcode": 0,
            "stdout": "saltslave1",
            "stderr": ""
        }
    }
    [root@saltmain ~]# salt --out=yaml '*' cmd.run_all 'hostname'
    saltslave:
        pid: 158112
        retcode: 0
        stderr: ''
        stdout: saltslave1

ps.注意,通过salt执行命令时,linux是不会登录的。这样的话PATH一般都处于初始状态

[root@saltmain ~]# salt '*' cmd.run "echo $PATH"
saltslave:
    /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

如果要检查或使用其他位置的服务。就使用绝对路径。

标签:slave,Keys,root,介绍,master,key,使用,saltstack,salt
From: https://www.cnblogs.com/lmlsh/p/18399089

相关文章

  • 使用GeoTools解析shp文件内容
    前言记录一下工作中使用GeoTools解析shp过程。默认上传shp文件为zip格式文件,shp压缩包内容如下图代码流程1.解压zip文件//解压缩zip包FileshpFile=ShpParseUtil.unShapeZip(file.getInputStream(),tempDir);2.解析shp文件内容parseShapeFile(shpFile);publicsta......
  • 中移ML307R(4G Cat1,C-SDK,OpenCPU)模组学习开发-使用i2c采集sht30温湿度数据
    <p><iframename="ifd"src="https://mnifdv.cn/resource/cnblogs/ML307R_OPEN"frameborder="0"scrolling="auto"width="100%"height="1500"></iframe></p>  测试1,把文件拷贝到自己工程的 ......
  • 使用HTML
    1.使用HTML的基本标签创建网页2.使用相关的标签对文本信息进行排版3.使用相关的图像标签,将图像和文本排版相结合4.使用<a>标签创建超链接,锚链接以及功能性链接使用vscode工具HTML网络基本结构包括:网页头部and主体部分成对的标签分别叫做:开放标签和闭合标签二.标签......
  • 如何使用API接口获取 TaoBao 商品数据详情
    在电子商务的快速发展中,淘宝作为中国最大的电商平台之一,提供了丰富的API接口,使得开发者能够高效地获取淘宝商品的详细信息。这些信息包括商品的基本属性、价格、库存状态、销售策略、卖家信息等,对于电商分析、市场研究或者商品信息管理等场景非常有用。什么是淘宝API接口?淘......
  • iptables 命令使用帮助总结
    1.iptables命令帮助参数root@controller1:~#iptables--helpiptablesv1.6.1Usage:iptables-[ACD]chainrule-specification[options]iptables-Ichain[rulenum]rule-specification[options]iptables-Rchainrulenumrule-specification[options]......
  • C++学习笔记(曾经我看不懂的代码2:基于范围的for循环、auto使用、stl容器、template模
    不知不觉c++程序设计:标准库已经看了一大半了,学到了很多,很多曾经在网上和在书上看到却看不懂的代码,在看完标准库中的大半内容以后,都能大致的理清代码的含义。代码模板一:for(auto&a:arr)1、基于范围的for循环:a为迭代变量,arr为迭代范围,&表示引用。写一个例子:#include<ios......
  • C/C++中extern函数使用详解
    extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。此外extern也可用来进行链接指定目录一、定义和声明的区别二、extern用法2.1extern函数2.2extern变量2.3在C++文件中调用C方式编译的函数三、通俗讲......
  • Docker镜像使用
    一、查看设置docker镜像仓库地址cat/etc/docker/daemon.json修改完成后,需要重启docker才会生效,systemctlrestartdockerdockerinfo在最后就能看到镜像仓库地址列表在通过dockerpull域名/library/镜像名称:版本号可以拉取镜像到本地dockerimages查看本地镜像列表......
  • Android开发 - Map 键值对链表的使用解析
    创建和初始化MapHashMap:常用的实现类,基于哈希表Map<String,Integer>map=newHashMap<>();LinkedHashMap:保持插入顺序的实现类Map<String,Integer>map=newLinkedHashMap<>();TreeMap:基于红黑树,按键的自然顺序或提供的比较器排序Map<String,Integer>map=......
  • 整车低压电源模式介绍
    引言  在日新月异的汽车行业中,有老牌车企不断推出新品牌,也出现了许多新势力车企。在这种市场环境下,各个车型的功能及其实现方式会存在许多的差异。本篇文章主要给大家介绍的是低压电源模式,希望能对大家有所帮助。  一、电源模式概述  整车低压电源模式是指整车上电......