2020/04/20 02-ansible开发和mschedule框架设计

在这里插入图片描述
比较简单的远程连接主机执行命令就可以用paramiko来解决

现在要把执行的任务调度到需要执行的机器上

在这里插入图片描述
现在只要不是开发管的都是运维管的,从ups电池,打印机,服务器,后来运维领域出了puppet,saltstack,ansible后起之秀,ansible和saltstack都是python写的,有开源版,也有商业版,比如ansible的tower就是要收费的。
工具可能是自动化的一个环节。把工具结合在一起就形成了一个完整的平台

在这里插入图片描述
这个是翻译的书
在这里插入图片描述
在这里插入图片描述
ansible基于ssh链接,比较方便快捷,控制的主机可以称为master,被控制的主机可以称为agent,也就是无agent的设计,用的是现成的ssh链接,借用了linux已有的东西,数据通过网络传输现在到被控主机来执行,可以人为直接操作,也可以直接编写剧本playbook,playbook实际用yaml来写,类似xml
在这里插入图片描述
可以操作一些模块和插件,最终都是要被控的主机来做我们想要的东西,一般不光执行命令,而且要知道执行的结果好坏
在这里插入图片描述
ansible是python开发,使用了paramiko和pyYaml库,一个解决访问的问题,一个解决配置文件

这次直接在linux上试试,因为windows很可能编译不过

在这里插入图片描述
启动一个fedora

在这里插入图片描述
安装ansible的时候,要安装pycrypto这样一个底层加密库,windows是要编译的
在这里插入图片描述

在这里插入图片描述
这里安装了下

在这里插入图片描述
现在执行的命令,命令行显示不清晰

在这里插入图片描述
看看设置里有没有terminal,现在命令行没显示,用起来很不方便,设置里不用bash,用sh
在这里插入图片描述
现在就从bash变成了shell

在这里插入图片描述
linux下这样就直接安装pycharm

在这里插入图片描述

在这里插入图片描述
安装好ansible,就可以在pycharm里写程序了
在这里插入图片描述
windows的安装比较麻烦
在这里插入图片描述
ansible的配置文件一般放在用户的家目录下,读取配置的顺序会去找配置项,
ansible_config 在环境变量下读取
ansible.cfg 当前目录下读取
~/.ansible.cfg 用户家目录下
/etc/ansible/ansible.cfg
由近及远

在这里插入图片描述
在ansible上要做一些配置

在这里插入图片描述
定义一个资产清单,告诉你配置的资源在哪里,是一个清单
在这里插入图片描述
在这里插入图片描述
这是一个ini文件。下面就要去家目录里定义这样一个文件
在这里插入图片描述

在这里插入图片描述
这里可以分组写主机
在这里插入图片描述
在这里插入图片描述
现在两个配置文件写好了

在这里插入图片描述
m指的是module,模块,ansible all -m ping ping清单里所有的主机
在这里插入图片描述
另外一台centos主机可以ping到

在这里插入图片描述

在这里插入图片描述
注意文件路径
在这里插入图片描述
现在就有效果,现在是按照当前用户去访问的
在这里插入图片描述
创建个密钥对
在这里插入图片描述
拷贝公钥到被控主机

在这里插入图片描述
在这里插入图片描述
现在就用ssh来登录成功了

在这里插入图片描述
再试一次还是不可以,因为不是用root用户运行的,而是你链接的当前的用户
在这里插入图片描述
需要修改几个值

在这里插入图片描述
告诉下一次登录的用户是谁,链接过去使用root来访问
在这里插入图片描述
在这里插入图片描述
这样就成功了

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

通过ssh登录到了对方,将命令交给对方,这边由shell模块,在shell中运行命令,将标准输出中的结果最后返回来
在这里插入图片描述
现在这个命令是没有的
在这里插入图片描述
返回来的是stderr的结果
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
ansible内部传输数据可以用sftp,也可以用scp方式。
ansible更强大的不是像现在这样,而是playbook,是yaml语言来编写的配置文件,或者叫编排工具,将所有的编排好,到被控节点上去执行。
ansible galaxy,分享你写的playbook。
借助ssh,只要你能在shell中执行,都 没什么问题

在这里插入图片描述
有写公司需要一个深度定制,写一个类似ansible的这样一个工具

现在先想把shell脚本推过去,然后去执行,然后把结果拿回来。任务有成功和失败之分,然后考虑跨机房,中间可以经过vpn通道。
还要保留历史版本,做了什么事情必须留痕

在这里插入图片描述
开源的大家一起开发,最终都会走分支,因为到最后代码的合并始终都是个问题

云平台一定要可计量才能卖,所以有些开源软件没钱挣,就要改变开源协议,而且做开源软件等于造轮子,要了解的东西有很多才能编程

开发这样一个运维平台,bs开发接口是必须实现的,人机交互接口,无论用JQuery还是react都可以做

架构,系统应该分为三部分:
第一部分,人机交互用的,webserver也就是在这之前有人写前端调用这个webserver的接口

在这里插入图片描述
分成三大块,人机交互用webserver打交道,对所有的agent进行管理的话用master server

在这里插入图片描述
matser只要负责管理这些agent,并且将任务分配给agent,agent运行不同任务,将任务运行的结果返回给master,如果要做审计,就把一些任务运行详细情况记录大数据库里,方便查询
在这里插入图片描述
其实也可以不用ssh来演化,用rpc执行任务也可以,用rpc通信,微服务内部全是rpc通信的对外暴露的是resultful风格的,内部为了搞笑全是rpc通信。
agent就是利用自己的资源,跑执行的任务,并返回结果

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值