saltstack快速入门

SALTSTACK是什么?

Salt是一种和以往不同的基础设施管理方法,它是建立在大规模系统高速通讯能力可以大幅提升的想法上。这种方法使得Salt成为一个强大的能够解决基础设施中许多特定问题的多任务系统。远程执行引擎是Salt的核心,它能够为多组系统创建高速、安全的双向通讯网络。基于这个通许系统,Salt提供了一个非常快速、灵活并且容易使用的配置管理系统,称之为“Salt States”。通过部署SaltStack环境,我们可以在成千上万台服务器上做到批量执行命令,根据不同业务特性进行配置集中化管理、分发文件、采集服务器数据、操作系统基础及软件包管理等,SaltStack是运维人员提高工作效率、规范业务配置与操作的利器。

saltstack的三种运行方式:

  1. local 本地
  2. master/minion   主人批量管理方式
  3. salt ssh    ssh方式

saltstack的特点:

  1. 部署简单、方便;
  2. 主从集中化管理;
  3. 配置简单、功能强大、扩展性强;
  4. 主控端(master)和被控端(minion)基于证书认证,安全可靠;
  5. 支持API及自定义模块,可通过Python轻松扩展。

saltstack主要功能:

  1. 远程执行命令
  2. 配置管理
  3. 云管理 支持各种云平台

安装SALT

测试环境配置

系统版本 IP 主机名 
CentOS Linux release 7.2.1511 (Core) 192.16.14.58 master-node-01
CentOS Linux release 7.2.1511 (Core) 192.168.14.30 minion-node-01

我在centos7.2环境下

参考:

https://docs.saltstack.com/en/latest/topics/installation/index.html#quick-install1

配置好salt源,直接用yum安装

安装的版本是SALT 2016.11.5

1.安装master

master-node上安装

yum install salt-master

  

安装salt-master会自动把salt-minion安装上。

2.安装minion

minion-node上安装

yum install salt-minion

  

3.master-node开机自启master,minion-node开机自启minion

systemctl enable salt-master   

systemctl enable salt-minion

4.启动salt-master和salt-minion

master-node主机上执行:
systemctl start salt-master

minion-node上执行
systemctl start salt-minion

  

5.做上host解析(测试环境)有dns可以做dns解析

HOST文件如下

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.14.50 master-node-01
192.168.14.37 minion-node-01

  

master和minion的hosts文件都是一样

6.防火墙,(做测试我关掉了 )

iptables -I INPUT -m state --state new -m tcp -p tcp --dport 4505 -j ACCEPT
iptables -I INPUT -m state --state new -m tcp -p tcp --dport 4506 -j ACCEPT

  

master可以有多个,minion一样也是可以有多个

安装salt-master会默认把salt-minion安装上

master可以理解为主人,minion可以理解为奴才

修改配置文件

在master-node和minion-node上都修改/etc/salt/minion中16行的位置

去掉注释master哪行改为如下内容:

master: 192.168.14.50  

告诉主人是谁,master后面也可以是域名

修改了配置文件,记得重启服务

认证

认证一般都是在master上操作,可以简单理解是否管理这太机器

minion第一启动会产生认证文件,会把公钥发送给master

认证目录:/etc/salt/pki/minion

master第一次启动也会产生相应的认证文件

认证目录:/etc/salt/pki/master

在master上可以利用tree命令查看关系

[[email protected] ~]# cd /etc/salt/pki/master/
[[email protected] master]# tree
.
├── master.pem
├── master.pub
├── minions
├── minions_autosign
├── minions_denied
├── minions_pre
│   ├── master-node-01
│   └── minion-node-01
└── minions_rejected

  

master上操作

master需要管理那些minion,这时候就需要认证授权,

1.查看认证信息状态:salt-key

[[email protected] master]# salt-key
Accepted Keys:   #同意的key
Denied Keys:
Unaccepted Keys:  #未同意的key
master-node-01
minion-node-01
Rejected Keys:   #拒绝的key

  

2.同意认证

命令有如下:

salt-key -A   #同意所有
salt-key -a   key名(支持通配符)   #同意指定的主机
salt-key -a master-*    #同意管理master-开头的认证主机

  

[[email protected] master]# salt-key -a master-*
The following keys are going to be accepted:
Unaccepted Keys:
master-node-01
Proceed? [n/Y] y
Key for minion master-node-01 accepted.

  

3.查看所管理的主机

命令:

salt-key -L

  

4.在利用tree查看关系

minion也接收的master上的公钥

5.更多命令,查看详细的帮组信息

salt-key --help

master和minion认证过程

(1)、minion在第一次启动时,会在/etc/salt/pki/minion/(该路径在/etc/salt/minion里面设置)下自动生成minion.pem(private key)和 minion.pub(public key),然后将 minion.pub发送给master。
(2)、master在接收到minion的public key后,通过salt-key命令accept minion public key,这样在master的/etc/salt/pki/master/minions下的将会存放以minion id命名的 public key,然后master就能对minion发送指令了。

Master与Minion的连接

SaltStack master启动后默认监听4505和4506两个端口。4505(publish_port)为saltstack的消息发布系统,4506(ret_port)为saltstack客户端与服务端通信的端口。如果使用lsof 查看4505端口,会发现所有的minion在4505端口持续保持在ESTABLISHED状态。

远程执行

远程管理主机

salt  ‘key名(支持通配符)‘  test.ping

salt命令   引号中间是主机名   test是saltstack的一个模块   ping是test模块下的一个方法

* 表时在所有已管理的minion上执行

salt ‘*‘  cmd.run  ‘参数(具体的shell命令)‘

配置管理

1.简单master配置文件修改

修改master配置文件,修改内容如下,以及具体修改的行数

#号是注释,无实际意义

vim /etc/salt/master

535  file_roots:   #saltstack状态文件
536    base:    #指定一个坏境支持多种坏境(列开发,测试),base前面2个空格,默认必须要有一个base环境
537      - /srv/salt/  # -前面4个空格  ,状态文件存放的目录,注意本地是否有这个目录,没有则新建

  

重启master生效

本地新建目录/srv/salt/

2.配置安装httpd模板文件

在/srv/salt/目录下,新编辑apache.sls  内容如下

apache install:  #安装名称
  pkg.installed:  #前面两个空格,pkg是个模块,installed是个方法
    - names:    #前面4个空格
      - httpd     #前面6个空格,安装的软件包,会用yum安装
      - httpd-devel  #开发工具包
apache-server:
  service.running:  #前面两个空格   service是个模块,running也是个方法
    - name: httpd    # 安装软件包的名称  前面4个空格
    - enable: True   #前面4个空格   开机自启
    - reload: True   #前面4个空格   可以重载

  

往所有主机上安装apache

salt ‘*‘  state.sls apache

  

#在所有机器上执行apache这个文件的,apache后面不用写.sls 默认会给加上 这个状态文件所做的功能在所有机器上安装httpd和httpd-devel 以及开机自启

过程中可以查看是不是用在用yum装apache,       ps aux | grep yum

执行结果如下图:

状态管理

一个机器肯定有多个状态,用高级状态,会有一个入口文件,来监控哪些机器有哪些状态,默认入口文件名叫top.sls,必须放在base环境 

内容如下:

base:  #在base环境下
  ‘*‘:  #有所有minion机器上,可以写执行的minion的已认证的名字 ,支持通配符,前面连个空格
    - apache#所有的minion都执行apache这个文件的状态 ,前面四个空格,可以执定那些机器执行相应状态文件

  

执行高级状态

salt ‘*‘ state.highstate

  

效果如下:

  

时间: 2024-08-01 10:42:44

saltstack快速入门的相关文章

SaltStack实战之SaltStack快速入门

SaltStack实战之SaltStack快速入门 1. SaltStack介绍 1.1 SaltStack常用网址 1.2 SaltStack运行方式 1.3 SaltStack三大功能 2. SaltStack部署 2.1 SaltStack master配置 2.2 SaltStack minion配置 2.3 SaltStack认证 2.4 saltsatck远程执行 2.5 saltsatck配置管理 1. SaltStack介绍 Salt,一种全新的基础设施管理方式,部署轻松,在几分

saltstack 快速入门

三种模式 Local Master/minion Salt ssh 三大功能 远程执行 配置管理 云管理 配置系统环境 cat /etc/redhat-release CentOS release 6.6 (Final) setenforce 0 /etc/init.d/iptables stop [[email protected] ~]# cat /etc/hosts 127.0.0.1   localhost localhost.localdomain localhost4 localho

saltstack第一波《快速入门》

saltstack课程总结 第1章 saltstack快速入门 1.1 快速安装 项目,VM1: saltstack-node1.example.com,VM2: saltstack-node2.example.com 安装角色,master && minion,minion IP(eth0),10.0.0.21,10.0.0.22 网关(eth0),10.0.0.2,10.0.0.2 DNS,8.8.8.8, 114.114.114.114,8.8.8.8, 114.114.114.11

笔记:Spring Cloud Zuul 快速入门

Spring Cloud Zuul 实现了路由规则与实例的维护问题,通过 Spring Cloud Eureka 进行整合,将自身注册为 Eureka 服务治理下的应用,同时从 Eureka 中获取了所有其他微服务的实例信息,这样的设计非常巧妙的将服务治理体系中维护的实例信息利用起来,使得维护服务实例的工作交给了服务治理框架自动完成,而对路由规则的维护,默认会将通过以服务名作为 ContextPath 的方式来创建路由映射,也可以做一些特别的配置,对于签名校验.登录校验等在微服务架构中的冗余问题

javaweb-html快速入门

本文主要是进行HTML简单介绍(详细的属性查帮助文档就行了,这里主要为快速入门,赶时间,在最短的时间中看明白一个html文件的代码(如果能称之为代码的话)详细的样式表,布局啥的有时间再研究吧) HTML 1.html的简介 1.1,html的全称:HyperText Mark-up Language ,超文本标记型语言,是网页的语言. 超文本:比文本更加强大(后面还会讲到XML,可扩展标记性语言) 标记:就是标签,html所有操作都是通过标签直接或间接的操作(把需要操作的数据通过标签封装起来)

crosswalk 快速入门,利用WebRTC(html)开始开发视频通话

crosswalk 快速入门,利用WebRTC(html)开始开发视频通话 安装Python 从http://www.python.org/downloads/ 下载安装程序 安装完后,再添加到环境变量. 安装Oracle JDK 下载页面: http://www.oracle.com/technetwork/java/javase/downloads/ 选择要下载的Java版本(推荐Java 7). 选择一个JDK下载并接受许可协议. 一旦下载,运行安装程序. 安装Ant Ant:下载http

bash编程快速入门

首先,我们简单的介绍一下bash,bash是GNU计划编写的Unixshell,它是许多Linux平台上的内定shell,它提供了用户与系统的很好的交互,对于系统运维人员,bash的地位是举足轻重的,bash编程能很快处理日常的任务 bash入门,一个最简单的bash例子 #vim hello.sh #!/bin/bash #This is the first example of the bash #echo "Hello world" 下面,我们就这个简单的bash 脚本来介绍一下

定时器(Quartz)快速入门

Quartz概述 Quartz中的触发器 Quartz中提供了两种触发器,分别是CronTrigger和SimpleTrigger. SimpleTrigger 每 隔若干毫秒来触发纳入进度的任务.因此,对于夏令时来说,根本不需要做任何特殊的处理来"保持进度".它只是简单地保持每隔若干毫秒来触发一次,无论你的 SimpleTrigger每隔10秒触发一次还是每隔15分钟触发一次,还是每隔24小时触发一次. CronTrigger 在特定"格林日历"时刻触发纳入进程的

vue.js--60分钟快速入门

Vue.js--60分钟快速入门 Vue.js是当下很火的一个JavaScript MVVM库,它是以数据驱动和组件化的思想构建的.相比于Angular.js,Vue.js提供了更加简洁.更易于理解的API,使得我们能够快速地上手并使用Vue.js. 本文摘自:http://www.cnblogs.com/keepfool/p/5619070.html 如果你之前已经习惯了用jQuery操作DOM,学习Vue.js时请先抛开手动操作DOM的思维,因为Vue.js是数据驱动的,你无需手动操作DOM