Linux centosVMware 自动化运维认识自动化运维、启动salt相关服务、saltstack配置认证、salt-key命令用法、saltstack远程执行命令、saltstack - grains、saltstack – pillar
一、认识自动化运维
传统运维效率低,大多工作人为完成
传统运维工作繁琐,容易出错
传统运维每日重复做相同的事情
传统运维没有标准化流程
传统运维的脚本繁多,不能方便管理
自动化运维就是要解决上面所有问题
Puppet (www.puppetlabs.com)
基于rubby开发,c/s架构,支持多平台,可管理配置文件、用户、cron任务、软件包、系统服务等。 分为社区版(免费)和企业版(收费),企业版支持图形化配置。
Saltstack(官网 https://saltstack.com,文档docs.saltstack.com )
基于python开发,c/s架构,支持多平台,比puppet轻量,在远程执行命令时非常快捷,配置和使用比puppet容易,能实现puppet几乎所有的功能。
Ansible (www.ansible.com )
更加简洁的自动化运维工具,不需要在客户端上安装agent,基于python开发。可以实现批量操作系统配置、批量程序的部署、批量运行命令
Satlstack比Ansible支持的机器更多
二 、saltstack安装
saltstack介绍https://docs.saltstack.com/en/latest/topics/index.html
可以使用salt-ssh远程执行,类似ansible,
也支持c/s模式中控中心,下面我们将讲述c/s种模式的使用,需要准备两台机器
1.101为服务端,1.106为客户端
设置hostname以及hosts,davery,davery01
如果客户端机器比较多则需要内部弄个DNS
vim /etc/hosts
两台机器全部安装saltstack yum源
yum install -y https://repo.saltstack.com/yum/redhat/salt-repo-latest-2.el7.noarch.rpm
101上执行 yum install -y salt-master salt-minion
yum list |grep salt
106上执行 yum install -y salt-minion
三、启动salt相关服务
101上编辑配置文件
vi /etc/salt/minion //增加
master: davery
添加
启动服务
systemctl start salt-master
systemctl start salt-minion
服务端监听4505和4506两个端口,4505为消息发布的端口,4506为和客户端通信的端口
106上编辑配置文件
vi /etc/salt/minion //增加
master: davery
启动服务systemctl start salt-minion
客户端不监听端口
四、saltstack配置认证
master端和minion端通信需要建立一个安全通道,传输过程需要加密,所以得配置认证,也是通过密钥对来加密解密的
minion在第一次启动时会在/etc/salt/pki/minion/下生成minion.pem私钥和minion.pub公钥,其中.pub为公钥,它会把公钥传输给master
[root@davery01 ~]# ls /etc/salt/pki/minion
minion.pem minion.pub
[root@davery01 ~]#
cat /etc/salt/pki/minion/minion.pem私钥
cat /etc/salt/pki/minion/minion.pub公钥
master第一次启动时也会在/etc/salt/pki/master下生成密钥对,当master接收到minion传过来的公钥后,通过salt-key工具接受这个公钥,一旦接受后就会在/etc/salt/pki/master/minions/目录里存放刚刚接受的公钥,同时客户端也会接受master传过去的公钥,把它放在/etc/salt/pki/minion目录下,并命名为minion_master.pub
[root@davery ~]# ls /etc/salt/pki/master
cat /etc/salt/pki/master/master.pem
cat /etc/salt/pki/master/master.pub
以上过程需要借助salt-key工具来实现
执行如下命令 salt-key -a davery // -a后面跟主机名(增加),可以认证指定主机
salt-key -a davery01
报错了不能收到01机器key,先把所有key删除一下,然后重新设置一下hostname和hosts,就可以了,如下
[root@davery ~]# ls /etc/salt/pki/minion
minion.pem minion.pub
[root@davery ~]# rm -rf /etc/salt/pki/minion/minion.pub
[root@davery ~]# rm -rf /etc/salt/pki/minion/minion.pem
[root@davery ~]# cd /etc/salt/pki/master
[root@davery master]# ls
master.pem minions minions_denied minions_rejected
master.pub minions_autosign minions_pre
[root@davery master]# rm -rf master.pem
[root@davery master]# rm -rf master.pub
[root@davery ~]# ls /etc/salt/pki/master/minions
[root@davery ~]# ls /etc/salt/pki/master/minions_denied
五、salt-key命令用法
-a 后面跟主机名,认证指定主机
-A 认证所有主机
-r 跟主机名,拒绝指定主机
-R 拒绝所有主机
-d 跟主机名,删除指定主机认证
-D 删除全部主机认证
-y 省略掉交互,相当于直接按了y,如果已经允许了一次第二次就不会接受了,要重新删除salt-key -D才能再次接受
六、saltstack远程执行命令
所有的指令都是在master上执行
salt '*' test.ping //这里的*表示所有已经签名的minion端,也可以指定一个,测试对方机器是否存活
salt 'davery' test.ping
salt '*' cmd.run "hostname"
说明: 这里的*必须是在master上已经被接受过认证的客户端,可以通过salt-key查到,通常是我们已经设定的id值。关于这部分内容,它支持通配、列表以及正则。
比如两台客户端davery01,davery02, 那我们可以写成,正则表达式
salt 'davery*' cmd.run 'hostname'
salt 'davery0[12]'
salt -L 'davery01,davery02'
salt -E 'davery(01|02)'
等形式,使用列表,即多个机器用逗号分隔,而且需要加-L,使用正则必须要带-E选项。 它还支持grains,加-G选项,pillar 加-I选项,下面会介绍到
七、saltstack - grains 都是在master davery上操作
grains是在minion启动时收集到的一些信息,比如操作系统类型、网卡ip、内核版本、cpu架构等。
salt 'davery01' grains.ls 列出所有的grains项目名字
salt 'davery01' grains.items 列出所有grains项目以及值
grains的信息并不是动态的,并不会实时变更,它是在minion启动时收集到的。
我们可以根据grains收集到的一些信息,做配置管理工作。
grains支持自定义信息。
minion上:
vim /etc/salt/grains //添加:
role: nginx
env: test
重启minion服务
systemctl restart salt-minion
master上:
获取grains:
salt '*' grains.item role env
可以借助grains的一些属性信息来执行
salt -G role:nginx cmd.run 'hostname'
八、saltstack – pillar
pillar和grains不一样,是在master上定义的,并且是针对minion定义的一些信息。像一些比较重要的数据(密码)可以存在pillar里,还可以定义变量等。
配置自定义pillar
vim /etc/salt/master
找到如下配置://去掉前面的警号
pillar_roots:
改为
base: #此行前面有两个空格
- /srv/pillar #此行前面有4个空格
重启
[root@davery ~]# systemctl restart salt-master
mkdir /srv/pillar
vim /srv/pillar/test.sls //内容如下
conf: /etc/123.conf
vi /srv/pillar/top.sls //内容如下
base:
'aming-02': #此行前面有两个空格
- test #此行前面有4个空格
重启master
systemctl restart salt-master
当更改完pillar配置文件后,我们可以通过刷新pillar配置来获取新的pillar状态:
salt '*' saltutil.refresh_pillar
验证:salt '*' pillar.item conf
pillar同样可以用来作为salt的匹配对象。比如 salt -I 'conf:/etc/123.conf' test.ping
Linux centosVMware 自动化运维认识自动化运维、启动salt相关服务、saltstack配置认证、salt-key命令用法、saltstack远程执行命令、saltstack - grains、saltstack – pillar的更多相关文章
- 【Python】模块学习之使用paramiko连接Linux,远程执行命令,上传下载、文件
本文主要介绍paramiko远程执行linux命令,及在服务器上进行文件的上传.下载 paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接. ...
- linux下service+命令和直接去执行命令的区别,怎么自己建立一个service启动
启动一些程序服务的时候,有时候直接去程序的bin目录下去执行命令,有时候利用service启动. 比如启动mysql服务时,大部分喜欢执行service mysqld start.当然也可以去mysq ...
- 全网最详细的Linux命令系列-Screen远程会话命令
screen 管理你的远程会话 你是不是经常需要 SSH 或者 telent 远程登录到 Linux 服务器?你是不是经常为一些长时间运行的任务而头疼,比如系统备份.ftp 传输等等.通常情况下我们都 ...
- Linux centosVMware 自动化运维Ansible介绍、Ansible安装、远程执行命令、拷贝文件或者目录、远程执行脚本、管理任务计划、安装rpm包/管理服务、 playbook的使用、 playbook中的循环、 playbook中的条件判断、 playbook中的handlers、playbook实战-nginx安装、管理配置文件
一.Ansible介绍 不需要安装客户端,通过sshd去通信 基于模块工作,模块可以由任何语言开发 不仅支持命令行使用模块,也支持编写yaml格式的playbook,易于编写和阅读 安装十分简单,ce ...
- 0 Linux下Java使用ProcessBuilder执行命令与直接Bash执行命令之间的不同(环境变量方面)
0 问题发生 xiaojietest.java package tasks; import java.io.BufferedReader; import java.io.BufferedWriter; ...
- Linux:ssh远程执行命令并自动退出
ssh命令格式: [root@localhost ~]# ssh --helpusage: ssh [-1246AaCfgKkMNnqsTtVvXxYy] [-b bind_address] [-c ...
- Linux Shell远程执行命令(命令行与脚本方式)
需求:经常需要在一台服务器远程到其他节点的服务器上执行一些shell命令,如果分别ssh到每台主机上再去执行很麻烦,因此能有个集中管理的方式就好了.介绍两种shell命令远程执行的方法. 方式一: s ...
- linux远程执行命令
经常要部署多台服务器上面的应用,如果一个个机器的登录太麻烦. 所有就想到编写一个脚本来部署不同的服务器 前提条件: 配置ssh免登陆 (1)命令行执行登录并且在目标服务器上执行命令 ssh user@ ...
- linux shell 远程执行命令
经常要部署多台服务器上面的应用,如果一个个机器的登录太麻烦. 所有就想到编写一个脚本来部署不同的服务器 前提条件: 配置ssh免登陆 如果不会的请参加我的另外一篇文章 http://blog.csdn ...
随机推荐
- 用svn客户端checkout时报错RA layer request failed
用svn客户端checkout时报错: RA layer request failedsvn: Unable to connect to a repository at URL 'https://30 ...
- python manage.py shell
启动python有两种方式:python manage.py shell和python. 这两个命令 都会启动交互解释器,但是manage.py shell命令有一个重要的不同: 在启动解释器之前,它 ...
- CSS实现心形、六角星、六边形、平行四边形等几何
本文将利用border属性实现简单几何的绘制: 效果图: 正八角星 说明:采用两个正方形以中心进行旋转叠加: /* 八角星 */ #burst-8 { background: #6376ff1f; w ...
- 【笔记5-购物车及地址模块】从0开始 独立完成企业级Java电商网站开发(服务端)
购物车模块 数据库表设计 购物车表 CREATE TABLE mmall_ cart ( 'id' int(11) NOT NULL AUTO_ INCREMENT, 'user_ id' int(1 ...
- 解决IDEA快捷键 Alt+Insert 失效的问题
现象 IDEA快捷键 Alt+Inser 失效,单击右键也不出现[Generate]. 这个问题经常出现在重新安装IDEA后. 原因 缺少2个插件 解决办法 在setting中启用这2个插件即可.这2 ...
- Stream:java1.8新特性
原 Stream:java1.8新特性 2017年08月01日 18:15:43 kekeair-zhang 阅读数:392 标签: streamjava1-8新特性 更多 个人分类: 日记 版权声明 ...
- Steam 游戏 《Crashlands(崩溃大陆)》修改器制作-[先使用CE写,之后有时间的话改用CheatMaker](2020年寒假小目标12)
日期:2020.02.15 博客期:155 星期六 [温馨提示]: 只是想要修改器的网友,可以直接点击此链接下载: 只是想拿CT文件的网友,可以直接点击此链接下载: 没有博客园账号的网友,可以将页面下 ...
- DOCKSWARM服务网络原理
如图所示,我们将在 swarm 集群中部署 “client” 服务 和 “vote” 服务,其中 “vote” 服务部署多个副本. 客户端请求 “vote” 服务时,输出结果中包含服务端的容器 ID, ...
- 一个含有Fibonacci Number的级数
\[\Large\displaystyle \sum_{n=0}^\infty \frac{1}{F_{2n+1}+1}=\frac{\sqrt5}{2}\] \(\Large\mathbf{Proo ...
- linux 环境下安装 MySQL
参考: Linux安装MySQL5.7 注意: 安装后 出现 navicat MySQL连接Linux下MySQL的及2003错误 需要看下 虚拟机的防火墙是否关闭!!!