Saltstack 介绍、安装、配置语法(一)
Slatstack 介绍
官方源:http://repo.saltstack.com/ (介绍各操作系统安装方法)
yum install https://repo.saltstack.com/yum/redhat/salt-repo-latest-2.el7.noarch.rpm #cenyos7官方yum源
saltstack功能介绍
三大功能:
1.远程执行
2.配置管理(配置某个服务状态)
3.云管理 (对接openstack)
saltstack的优点
(1)、部署简单,方便
(2)、支持大部分UNIX/Linux及Windows环境;
(3)、主从集中化管理;
(4)、配置简单、功能强大、扩展性强;
(5)、主控端(master)和被控端(minion)基于证书认证,安全可靠;
(6)、支持API及自定义模块,可通过Python轻松扩展。
staltstack的四种运行方式:
1.Local
2. Minion/Master C/S
3.Syndic - 类似于zabbix proxy
4. Salt SSH
一.安装saltstack
服务端
yum install salt-master salt-minion -y
客户端
yum install salt-minion -y
启动服务端
systemctl start salt-master systemctl enable salt-master
配置客户端
vim /etc/salt/minion
master: 10.0.0.11#可以是主机名需要解析(指定服务端的IP地址),冒号有空格
id: # 每台主机的唯一标识,不配置默认为主机名
启动客户端
systemctl start salt-minion systemctl enable salt-minion
注意事项
minion配置中有一个id配置,默认是hostname,如果id配置和hostname不一致会导致无法进行通信,那么当hostname做了修改,或者错误的时候该怎么配置呢?
①关闭salt-minion
②salt-key -d id 在master上删除minion的id
③minion上删除pki目录
④minion上删除minion_id文件
⑤修改完成,启动minion
#此处必须先停掉minion修改,并删除相应的文件,否则会默认地去查找原先的配置,已踩坑 #以下是刚装完查看minion_id变成了www.test123.com。进行修改成linux-node2.example.com
[root@linux-node2 salt]# cat minion_id
www.test123.com
[root@linux-node2 salt]# systemctl stop salt-minion
[root@linux-node2 salt]# rm -rf pki
[root@linux-node2 salt]# rm -rf minion_id
[root@linux-node2 salt]# systemctl start salt-minion
[root@linux-node2 salt]# cat minion_id
linux-node2.example.com
- master和minion启动后pki介绍
第一次启动minion在/etc/salt下生成pki文件目录
包含minion的公钥minion.pub和私钥minion.pem
第一次启动master在/etc/salt下生成pki文件目录,因为之前在配置文件/etc/salt/
包含master的公钥master.pub和私钥master.pem
linux-node1.example.com和linux-node2.example.com为minion的公钥,名称为id名minions_pre为预认证目录
通过查看MD5之可知,minions_pre目录下的文件就是客户端上的公钥
- 认证过程
salt-key
salt-key命令介绍:
-L 列出所有
-d 删除指定的支持通配符
-D 删除所有
-A 添加所有
-a 指定添加
Accepted Keys 已同意的key
Denied Keys 拒绝的key
Unaccepted Keys 未认证的key
[root@7mini-node1 ~] salt-key -a 7mini-node2 #指定认证某台机器
[root@7mini-node1 ~] salt-key -a 7mini* # 通配符
说明:-a :accept ,-A:accept-all,-d:delete,-D:delete-all
验证是否认证
两台minion已认证成功,此时再次查看master pki文件目录,minion的公钥文件放入了minions目录下
再次查看minion pki文件目录,存在minion_master.pub公钥文件
- 远程执行
语法: 命令 目标 模块.方法 方法参数
检查所有主机状态
salt '*' test.ping #常用
检查指定主机状态
[root@7mini-node1 salt]# salt "7mini-node2" test.ping
7mini-node2:
True
指定主机,远程执行shell命令
salt "7mini-node2" cmd.run "ls -lrt /root"
- 状态模块
state 写一个描述文件。格式:YAML ,后缀:.sls
YAML介绍 (重要)
YAML是"YAML Ain't a Markup Language"(YAML不是一种置标语言)的递归缩写。(可以查看百度百科介绍)
格式:数据结构可以用类似大纲的缩排方式呈现,结构通过缩进来表示,连续的项目通过减号“-”来表示,map结构里面的key/value对用冒号“:”来分隔。
salt管理理解YAML介绍 https://docs.saltstack.com/en/latest/topics/yaml/index.html
YAML:三板斧
1、 缩进 (2个空格,不能使用Tab)
2、 冒号 key: value (注意key后面需要有空格)
3、 短横线 – list1 - list2 可以写多个
缩进和冒号表示层级关系:
冒号表示key: value 表示层级关系
短横线 – list 列表,后面都有空格
/etc/salt/master配置文件也是YAML语法
- master配置
vim /etc/salt/master
file_roots # 定义base、测试、灰度、生产环境配置文件路径,base名称不能改
设置base、测试、灰度、生产环境
[root@linux-node1 ~]# vim /etc/salt/master #定义yaml文件放的位置,base环境是必备的
file_roots:
base:
- /srv/salt/base
dev:
- /srv/salt/dev
test:
- /srv/salt/test
prod:
- /srv/salt/prod
[root@7mini-node1 ~]# systemctl restart salt-master.service
创建目录
[root@7mini-node1 ~]# mkdir -p /srv/salt/{base,dev,test,prod}
- sls文件创建
apache.sls,放入到/srv/salt/base/web目录下
[root@linux-node1 ~]# cd /srv/salt/base/
[root@linux-node1 base]# mkdir web
[root@linux-node1 web]# vim apache.sls #编写安装apache的YAML文件
apache-install:
pkg.installed:---------->模块pkg,方法installed,会匹配操作系统进行选择安装的方法
- name: httpd--------->装的包的名称 apache-service:----------->id要唯一
service.running:-------->状态模块service,running为模块的方法
- name: httpd--------->管理服务的名称
- enable: True-------->设置开机自动启动 [root@7mini-node1 ~]# salt '7mini-node2' state.sls web.apache
#如果apache.sls的位置是在prod目录下,需要在后面增加saltenv=prod
#salt '7mini-node2' state.sls web.apache saltenv=prod
- top.sls文件
实现自动化安装,需要写一个top.sls
[root@linux-node1 base]# pwd
/srv/salt/base
[root@linux-node1 base]# vim top.sls #必须在base环境下写
base:
'linux-node1.example.com':
- web.apache
'linux-node2.example.com':
- web.apache
****************************
如果只有一个任务在全部机子上执行,也可以:
base:
'*'
- web.apache
****************************
[root@linux-node1 ~]# salt '*' state.highstate #去top.sls读取,*代表通知哪些主机 salt '*' state.highstate test=True #在不想影响当前主机的运行情况,可以使用test=True 进行预测试
Saltstack 介绍、安装、配置语法(一)的更多相关文章
- saltstack自动化运维系列⑥SaltStack实践安装配置HAproxy的Keepalived
saltstack自动化运维系列⑥SaltStack实践安装配置HAproxy的Keepalived 安装配置Keepalived 1.编写功能模块 #创建keepalived目录# mkdir -p ...
- saltstack自动化运维系列⑥SaltStack实践安装配置HAproxy
saltstack自动化运维系列⑥SaltStack实践安装配置HAproxy 下载haproxy1.6.2.tar.gz下载地址:http://www.haproxy.org/download/1. ...
- SaltStack自动化安装配置haproxy的Keepalived
keepalived配置安装 什么是vrrp,阿里云不支持组播,所以阿里云上不能配置keepalived,但是它有自己的slb.运维的大忌,在命令行复制粘贴,一般是先复制到文本中查看确认以后salt编 ...
- SaltStack自动化安装配置haproxy
准备环境node1:192.168.217.149 (saltstack master)node2:192.168.217.150(saltstack minion)下载haproxy1.6.2.ta ...
- saltstack syndic安装配置使用
salt-syndic是做神马的呢?如果大家知道zabbix proxy的话那就可以很容易理解了,syndic的意思为理事,其实如果叫salt-proxy的话那就更好理解了,它就是一层代理,如同zab ...
- Nginx介绍,安装,配置
引言 为什么要学习Nginx 问题一: 客户端到底要将请求发送给哪台服务器? 问题二: 如果所有客户端的请求都发送给了服务器1,那另一台岂不是废了 问题三: 客户端发送的请求可能是申请动态资源的,也可 ...
- IntelliJ IDEA使用教程一 介绍&安装&配置
http://blog.csdn.net/nextyu/article/details/47206015 全套
- 长平狐 Android-x86虚拟机安装配置全攻略
Android-x86虚拟机安装配置网上有很多,但是全部说明白的确不多,希望这篇文章能把主要的配置介绍给您,帮助您少走一些弯路. 本文分别针对VMWare和Virtual Box两种虚拟机介绍安装配置 ...
- Android-x86虚拟机安装配置全攻略
转自Android-x86虚拟机安装配置全攻略 注:这里安装从简,具体请参考虚拟机Vmware安装运行安卓4.0详细教程 Android-x86虚拟机安装配置网上有很多,但是全部说明白的确不多,希望这 ...
- Ubuntu 16.04 + CUDA 8.0 + cuDNN v5.1 + TensorFlow(GPU support)安装配置详解
随着图像识别和深度学习领域的迅猛发展,GPU时代即将来临.由于GPU处理深度学习算法的高效性,使得配置一台搭载有GPU的服务器变得尤为必要. 本文主要介绍在Ubuntu 16.04环境下如何配置Ten ...
随机推荐
- stout代码分析之一:Duration类
Duration类用于表示时间长度,可精确到纳秒. 代码实现在duration.hpp中,测试代码:duration_tests.cpp 相关api如下: parse, 将字符串转化成Duration ...
- 个人最常用的vim操作
本文只记录个人工作中最常用到的vim快捷键,不是很全,但是已经覆盖了绝大多数功能. 参考:<鸟哥Linux私房菜>以及https://www.cnblogs.com/momofan/p/5 ...
- Mac(Linux)上安装memcached步骤
Mac上安装memcached类似于在Linux平台上安装memcached. 主要需要做两块: 一.安装libevent库: 二.安装memcached; 一.安装libevent库 libeven ...
- libiconv的注意项
编译后有用的头文件zlib.h和zconf.h,使用时#include "zlib.h". 其中有三个核心的函数: iconv_ticonv_open(constchar*toco ...
- DES解码
DES加解密算法是一个挺老的算法了,现在给出它的C语言版. des.h #ifdef __cplusplus extern "C" { #endif ]); char* des(c ...
- centos7 nginx开启启动
centos 7以上是用Systemd进行系统初始化的,Systemd 是 Linux 系统中最新的初始化系统(init),它主要的设计目标是克服 sysvinit 固有的缺点,提高系统的启动速度.关 ...
- tomcat8在centos7.5下配置开机启动
本文参考这篇文章 一.在/etc/init.d下新建一个文件tomcat,并添加内容如下: #!/bin/sh # chkconfig: 345 99 10 # description: Auto-s ...
- 新Linux系统配置yum源
新的Linux系统安装好以后,yum的源还是需要配置一下的,我使用的是redhat6.6版本,同时为了不注册而使用更多的yum源的资源,也需要做一下的修改. 1. 删除redhat原有的yum源 # ...
- SpringCloud(四)服务发现与消费:以ribbon为例
说明: ribbon是spring-cloud中作为服务消费者的一种角色,客户端可以通过它来对服务提供者的服务进行消费, 比如本例中是服务提供者注册到注册中心,服务提供者提供了一个服务接口,返回一个h ...
- How to ignore SSL certificate errors in Apache HttpClient 4.4
public static CloseableHttpClient acceptsUntrustedCertsHttpClient() throws KeyStoreException, NoSuch ...