#运维管理工具

ansible #支持ssh,不需要客户端

saltstack #也是只是ssh,不需要客户端的
安装架构是,master /minion

安装salt的依赖模块
  python
  zeromq 是一个消息队列 ,master和minion通信,需要将master发送的命令,放入一个队列中
  rabbitmq
  rpc 远程消息调用
  pyzmp
  pycrypto
  msgpack-python
  yaml

  jinja2
yaml-是一个新兴的语法格式
  salt
  ansible
  python
  k8s
都是遵循yaml语法的配置文件格式
jinja2
模板语言

-----------------------------------------------------------------------------------------------------

#服务器环境准备
1.master   node1

ip 192.168.12.96 node1 安装salt-master

2.准备多个客户端,被管控端,学生机 安装salt-minion

192.168.12.89 minion1
192.168.12.121 minion2
192.168.12.8 minion3

3.关闭所有节点的防火墙,以免影响实验

iptables -F

systemctl stop firewalld

关闭selinux

4.配置本地文件解析,用于加速身份验证 编辑 /etc/hosts
通过主机名通信

192.168.12.96 node1
192.168.12.89 minion1
192.168.12.121 minion2
192.168.12.8 minion3

5.确保环境准备ok,确保每个节点的yum源配置正确
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum clean all #清空缓存
yum makecache #生成yum缓存

6.安装salt软件
1.node1端安装salt-master
yum install salt-master -y

2.在3个minion地址中安装salt-minion
yum install salt-minion -y

7.修改master和minion的配置文件
1.master的配置文件
interface: 0.0.0.0 #绑定到本地的0.0.0.0地址
publish_port: 4505  #管理端口,命令发送
user: root      #运行salt进程的用户
worker_threads: 5  #salt运行线程数,线程越多处理速度越快,不要超过cpu个数
ret_port: 4506  #执行结果返回端口
pidfile: /var/run/salt-master.pid #pid文件位置
log_file: /var/log/salt/master  #日志文件地址

#自动接收minion的key
auto_accept: False

2.三个minion的配置文件
master: node1
master_port: 4506
user: root
id: s14minion1 #表示minion身份信息的,这里要修改,三个节点,为不同的id
acceptance_wait_time: 10
log_file: /var/log/salt/minion

8.启动salt-master和salt-minion
systemctl start salt-master
systemctl start salt-minion

9.在salt软件启动的时候,会进行通信连接,master可以检测到minion的身份地址,此时还未接收key,还未通信,需要认证秘钥才可以通信
salt-key -L #查看所有主机秘钥信息
#salt-key参数解析
-L #查看KEY状态
-A #允许所有
-D #删除所有
-a #认证指定的key
-d #删除指定的key
-r #注销掉指定key(该状态为未被认证)

#在秘钥通信之前,最好进行秘钥检验
master端:
salt-key -f 指明节点id #查看节点的秘钥信息

minion端:
salt-call --local key.finger #查看自己的秘钥信息,与master端的进行对比

salt-key -a minion-id #指明接收一个minion

salt-key -A # 接收所有minion的秘钥

salt "*" test.ping #通过salt主命令 匹配所有的已接收的主机 发送ping命令,会得到True 或false

salt "*" cmd.run #通过执行命令接口,对所有主机,执行命令

salt "*" cmd.run "yum install nginx -y #对所有主机发送安装nginx的命令

10.salt常用命令
1.salt的命令直接输入,叫做执行模块
2.saltstack提供了自己的脚本语言 s14salt.sls ,状态模块
3.salt的命令语法格式

salt --summary '*' cmd.run 'yum remove nginx -y'
--summary是返回salt命令的执行成功状态
"*" 目标匹配字符串
cmd.run 模块函数,对所有匹配到的机器,执行后面的参数
'yum remove nginx -y' #参数如下

salt --out=json '*' cmd.run_all 'hostname'
--out=json #返回salt执行结果为json格式 #json数据反馈给API

salt "*" cmd.run "ls /tmp"

salt "*" cmd.run_all "ls /tmp"
#cmd.run和cdm.run_all是返回结果的详细的差别

#目标定位字符串
salt 'minion[1,2,3]' pkg.version redis

'minion[1,2,3]' #匹配minion1、minion2、minion3
salt 'minion[1,2,3]' pkg.download redis#只下载redis的rpm包,不安装这是pkg.download函数的功能

pkg模块对应着yum工具
pkg.install
pkg.version
pkg.remove
pkg.version

#列出pkg所有的方法
salt '*' sys.list_functions pkg

#service模块,练习远程安装启动nginx
salt 'minion[1,2,3]' pkg.install nginx

salt "*" service.status/start/stop/restart nginx
#通过service模块管理服务

#命令执行结果,返回为yaml
salt --out=yaml "*" service.status nginx

#python班,有男同学,有女同学

#python的数据结构
#大字典 python值是字典,字典中有两个key,一个是男同学key,值是列表,一个是女同学key,值是列表
{
python:
{
"男同学":['py1','py2'],
"女同学":['pp1','pp2','pp3'],
}
}

#yaml语言解析
在线yaml配置文件编写
http://www.bejson.com/validators/yaml_editor/

#yaml语法
#yaml的对象,就是python的字典通过冒号指明字典
#yaml的数组,就是python的列表,通过 横杠 表示 -
#作用域通过缩进层级关系区分
#空格数量保持一致即可,不要求是几个,默认是2个空格

#salt直接在命令行输入的命令,叫做
在命令行输入的命令都是      执行模块

等到命令写入到文件中, 就叫做状态模块
#state模块可以执行salt的sls文件

#sls之salt脚本的编写与使用
1.更改配置文件,添加如下参数,注意yaml的语法(修改了文件要重启salt服务)
file_roots:
base:
- /srv/salt/base
dev:
- /srv/salt/dev
test:
- /srv/salt/test/

2.重启所有的salt服务
systemctl restart salt-master
systemctl restart salt-mion
#注意重启了服务,秘钥需要再次接受

3.编写nginx.sls文件,放在/srv/salt/base底下,(注意,nginx.sls文件,需要在所有机器上都有)
salt-cp "*" /srv/salt/base/nginx.sls /srv/salt/base/ #将master机器上的nginx.sls,批量分发到所有节点上

4.调用state模块,执行nginx.sls文件

salt "*" state.sls nginx #执行命令

#saltstack两大数据管理中心 grains(静态采集数据) 与pillar(动态采集数据)
#

salt "*" grains.items #采集所有minion机器的硬件信息,返回字典数据,key和value
salt "*" grains.item osfullname #通过item方法,通过key,返回单独的value
salt "*" grains.item ipv4
salt "*" grains.item ipv4 os hostname #支持多key的方式查看信息

#通过-G参数,指明是grains模块,匹配到所有的 操作系统是7系列的机器,然后执行命令
salt -G 'osrelease:7*' cmd.run "echo 'i am from master....' > /tmp/salt.txt"

#自定义设置granis数据
salt "*" grains.setval my_class s14

#删除自定义grains的值
salt "*" grains.delval my_class

#如果想永久删除这个key,需要删除minion底下的/etc/salt/grains文件

saltstack实战笔记的更多相关文章

  1. SaltStack实战

    SaltStack实战 #安装 安装注意几点 python-libs-2.6.6-64.el6.x86_64 conflicts with file from package python-2.6.6 ...

  2. mysql颠覆实战笔记(五)--商品系统设计(二):定时更新商品总点击量

    继续回到沈老师的MYSQL颠覆实战,首先回顾下上一节课的内容,请大家会看下上节课写的存储过程. 打开prod_clicklog表, 我们只要把日期(不含时分秒)的部分存在数据库中, 如果同一日期有相同 ...

  3. mysql颠覆实战笔记(四)--商品系统设计(一):商品主表设计

    版权声明:笔记整理者亡命小卒热爱自由,崇尚分享.但是本笔记源自www.jtthink.com(程序员在囧途)沈逸老师的<web级mysql颠覆实战课程 >.如需转载请尊重老师劳动,保留沈逸 ...

  4. mysql颠覆实战笔记(一)--设计一个项目需求,灌入一万数据先

    版权声明:笔记整理者亡命小卒热爱自由,崇尚分享.但是本笔记源自www.jtthink.com(程序员在囧途)沈逸老师的<web级mysql颠覆实战课程 >.如需转载请尊重老师劳动,保留沈逸 ...

  5. mysql颠覆实战笔记(七)--白话理解事务

    今天我们学习web开发级mysql颠覆实战课程第9课没MYSQL事务(一):白话理解事务.前面有两节课第7讲:商品系统设计(四):商品属性设计之自定义属性,第8讲:商品系统设计(五):一维属性的商品价 ...

  6. mysql颠覆实战笔记(六)--商品系统设计(三):商品属性设计之固定属性

    今天我们来讲一下商品属性 我们知道,不同类别的商品属性是不同的. 我们先建一个表prod_class_attr:

  7. mysql颠覆实战笔记(三)-- 用户登录(二):保存用户操作日志的方法

    版权声明:笔记整理者亡命小卒热爱自由,崇尚分享.但是本笔记源自www.jtthink.com(程序员在囧途)沈逸老师的<web级mysql颠覆实战课程 >.如需转载请尊重老师劳动,保留沈逸 ...

  8. mysql颠覆实战笔记(二)-- 用户登录(一):唯一索引的妙用

    版权声明:笔记整理者亡命小卒热爱自由,崇尚分享.但是本笔记源自www.jtthink.com(程序员在囧途)沈逸老师的<web级mysql颠覆实战课程 >.如需转载请尊重老师劳动,保留沈逸 ...

  9. Unity3D项目实战笔记(10):Unity3D编译IPA的PostEvents–节约时间利器

    最近,SDK支付等接入差不多了,就从Unity3D生成IPA (企业版License), 然,需要手动执行的PostEvents竟然多大10项+, 这些我默默的承受了1周时间,每次约浪费20分钟-额外 ...

随机推荐

  1. RESTful API设计规范收集

    说明:其实没有绝对的规范,达到90%即可. 理解RESTful架构:http://www.ruanyifeng.com/blog/2011/09/restful.html RESTful API 设计 ...

  2. java比较两个日期大小

    方法一 /** * 比较两个日期之间的大小 * * @param d1 * @param d2 * @return 前者大于后者返回true 反之false */ public boolean com ...

  3. TDBXJSONStream(BERLIN新增)的使用

    DELPHI 10.1 BERLIN新增TDBXJSONStream类,用于方便地将数据序列为JSON,和将JSON还原出来数据. DATASNAP远程方法也相应地增加了支持返回TDBXJSONStr ...

  4. Error Code: 2006 - MySQL 鏈嶅姟鍣ㄥ凡绂荤嚎

    将sql文件导入到mysql时候,就一直报这个错误. 我试过网上各种方法都行不通. 最后将以下一句运行了一下就能够了,并且没有重新启动mysql. SET GLOBAL max_allowed_pac ...

  5. 2&gt;MSVCRTD.lib(MSVCR100D.dll) : error LNK2005: _calloc 已经在 LIBCMTD.lib(dbgcalloc.obj) 中定义

    使用VS2010,在FireBreath里面调用ortp库和Speex库.编译的时候出现错误: 2>MSVCRTD.lib(MSVCR100D.dll) : error LNK2005: _ca ...

  6. 用Lazarus编写第一个程序Pascal版的hello world

    安装 Lazarus的过程不用多说,都是傻瓜式的. 打开Lazarus.Lazarus会自己主动新建一个窗体形式的应用程序. 你会看到五个窗体. 主窗体 这个窗体显示有标题栏.菜单条和工具栏. 对象视 ...

  7. Atomic Builtins - Using the GNU Compiler Collection (GCC) GCC 提供的原子操作

    http://gcc.gnu.org/onlinedocs/gcc-4.4.3/gcc/Atomic-Builtins.html gcc从4.1.2提供了__sync_*系列的built-in函数,用 ...

  8. 剑指Offer面试题15(Java版):链表中倒数第K个结点

    题目: 输入一个链表.输出该链表中倒数第k哥结点.  为了符合大多数人的习惯,本题从1開始计数.即链表的尾结点是倒数第1个结点. 比如一个链表有6个结点.从头结点開始它们的值依次是1.2.3,4,5, ...

  9. 4 Ionic导航和核心组件--旅游应用

    简介:在本节课中,我们将会通过一个虚构的旅游景点来构建一款功能完善的应用.本应用的核心特性是管理用户的应用内导航.本节课的主要目的,是展现构建一个完整的应用的过程. 无论是什么移动应用,最重要的功能之 ...

  10. 在CentOS上把MySQL从5.5升级到5.6

    在CentOS上把MySQL从5.5升级到5.6 摘要:本文记录了在CentOS 6.3上,把MySQL从5.5.28升级到5.6.19的过程. 1. 概述 在我做的一个项目中,最近我对生产服务器上的 ...