ansible-playbook实现自动部署KVM及安装python3的详细教程


Posted in Python onMay 11, 2020

1、何为ansible-playbook

playbook是ansible用于配置,部署,和管理被控节点的剧本,通过playbook的详细描述,执行其中的一系列tasks,可以让远端主机达到预期的状态.playbook就像Ansible控制器给被控节点列出的的一系列to-do-list,而被控节点必须要完成。

2、ansible-playbook编写格式

playbook完全居于yaml文件格式。YMAL格式是类似于JSON的文件格式,便于人理解和阅读,同时便于书写.,类似于半结构化数据,声明式配置;可读性较高的用来表达资料序列的格式,易于与脚本语言交互.。

3、yaml文件基本语法规则

  • 大小写敏感;
  • 使用缩进表示层级关系;
  • 缩进时不允许使用Tab键,只允许使用空格。(可以将你的ide的tab按键输出替换成4个空格);
  • 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可;
  • #表示注释。

4、YAML支持的数据结构

  • 对象:键值对的集合,又称为映射(mapping)/ 哈希(hashes) / 字典(dictionary)
  • 数组:一组按次序排列的值,又称为序列(sequence) / 列表(list)
  • 纯量(scalars):单个的、不可再分的值

5、playbooks的组成结构

  • Tasks:任务列表,指远程主机将要执行的一系列的动作,核心就是ansible模块.
  • Variables:变量
  • Templates:包含模板语法的文本文件
  • Handlers:处理器,有某个条件触发执行操作
  • remoute_user:远程主机上执行任务的用户
  • Hosts:运行指定任务的目标主机

6、一键安装KVM及安装python3文件

---
 - hosts: "{{hostname}}"  ####这里是一个变量需要在运行playbook时指定 hostname的值
 remote_user: "{{user}}"  ####这里是一个变量需要在运行playbook时指定 user的值
 vars:
  - python_workdir: /home/Python-3.7.4   ###定义执行主机上python安装文件夹的路径
 tasks:
  - name: change selinux_config  # 临时修改selinux配置
   command: setenforce 0
   notify:
    - stop selinux   # 在临时修改selinux配置成功后通知程序在结束前替换selinux文件以确保服务器重启后selinux关闭依旧生效
  - name: install lib of kvm and python3  #安装依赖
   command: yum install -y qemu-kvm qemu-img virt-manager libvirt libvirt-python virt-manager libvirt-client virt-install virt-viewer virt-v2v gcc zlib zlib-devel openssl-devel libffi-devel
   notify:   #安装依赖成功后通知程序结束前开启libvirtd服务
    - libvirt_serivce 
  - name: add crontab_job  #添加任务计划,每5分钟清掉caches
   cron: name="drop_menmory" job="echo 1 > /proc/sys/vm/drop_caches" minute=*/5 state=present
  - name: copy python3 to remote_host  #从本地向远程服务器拷贝python安装文件家
   copy: src={{python_workdir}} dest=/home/
  - name: create workspace of python3
   command: mkdir /usr/local/python3  #在远程服务器上创建python运行的文件夹
  - name: change role of file #修改远程服务器上python安装文件的权限
   command: chmod +x {{python_workdir}}/configure 
  - name: make python3  ###进入远程服务器下python安装程序文件夹并执行python 源码编译及安装
   command: ./configure --prefix=/usr/local/python3 && make && make install chdir={{python_workdir}}
  - name: create links of python3 and pip3  #在远程服务器上创建python3及pip3的link
   command: ln -s /usr/local/python3/bin/{{item.name}} /usr/bin/{{item.link}}
   with_items:
    - {name: "python3.7", link: "python3"}
    - {name: "pip3.7", link: "pip3"}
 handlers:
  - name: libvirt_serivce
   service: name={{item.name}} state={{item.state}} enabled={{item.enable}}
   with_items:
    - {name: "libvirtd",state: "started",enable: "yes"}
    - {name: "firewalld",state: "stopped",enable: "no"}
  - name: stop selinux

7、执行方式

在命令行中直接输入命令进行执行playbook文件。操作前需要确保ansible服务器可以操作远端服务器。

[root@localhost ~] ansible-playbook test.yaml -e "hostname=X.X.X.X user=XXXX"

总结

到此这篇关于ansible-playbook实现自动部署KVM及安装python3的详细教程的文章就介绍到这了,更多相关ansible-playbook自动部署内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python接收Gmail新邮件并发送到gtalk的方法
Mar 10 Python
python操作ssh实现服务器日志下载的方法
Jun 03 Python
Python实现excel转sqlite的方法
Jul 17 Python
Python计算斗牛游戏概率算法实例分析
Sep 26 Python
python批量读取txt文件为DataFrame的方法
Apr 03 Python
python 求某条线上特定x值或y值的点坐标方法
Jul 09 Python
Python中的四种交换数值的方法解析
Nov 18 Python
Python 中判断列表是否为空的方法
Nov 24 Python
Django多进程滚动日志问题解决方案
Dec 17 Python
用Python自动清理电脑内重复文件,只要10行代码(自动脚本)
Jan 09 Python
python脚本使用阿里云slb对恶意攻击进行封堵的实现
Feb 04 Python
详解解Django 多对多表关系的三种创建方式
Aug 23 Python
Python转换字典成为对象,可以用"."方式访问对象属性实例
May 11 #Python
Python3自定义json逐层解析器代码
May 11 #Python
Python3自定义http/https请求拦截mitmproxy脚本实例
May 11 #Python
Python 找出出现次数超过数组长度一半的元素实例
May 11 #Python
Pycharm如何导入python文件及解决报错问题
May 10 #Python
python3.6环境下安装freetype库和基本使用方法(推荐)
May 10 #Python
Pycharm中安装wordcloud等库失败问题及终端通过pip安装的Python库如何添加到Pycharm解释器中(推荐)
May 10 #Python
You might like
星际中一些鲜为人知的详细资料
2020/03/04 星际争霸
由php if 想到的些问题
2008/03/22 PHP
php7基于递归实现删除空文件夹的方法示例
2017/06/15 PHP
Javascript实例教程(19) 使用HoTMetal(3)
2006/12/23 Javascript
JS方法调用括号的问题探讨
2014/01/24 Javascript
js 显示base64编码的二进制流网页图片
2014/04/04 Javascript
IE中图片的onload事件无效问题和解决方法
2014/06/06 Javascript
jquery操作angularjs对象
2015/06/26 Javascript
jquery插件pagination实现无刷新ajax分页
2015/09/30 Javascript
Position属性之relative用法
2015/12/14 Javascript
JavaScript实现简单的日历效果
2016/09/25 Javascript
jQuery tagsinput在h5邮件客户端中应用详解
2016/09/26 Javascript
详解vue父子组件间传值(props)
2017/06/29 Javascript
关于jquery中attr()和prop()方法的区别
2018/05/28 jQuery
JS高阶函数原理与用法实例分析
2019/01/15 Javascript
微信小程序与webview交互实现支付功能
2019/06/07 Javascript
vue与django集成打包的实现方法
2019/11/11 Javascript
javascript 原型与原型链的理解及应用实例分析
2020/02/10 Javascript
在vscode 中设置 vue模板内容的方法
2020/09/02 Javascript
python实现自动更换ip的方法
2015/05/05 Python
Windows下Eclipse+PyDev配置Python+PyQt4开发环境
2016/05/17 Python
通过5个知识点轻松搞定Python的作用域
2016/09/09 Python
Pandas DataFrame 取一行数据会得到Series的方法
2018/11/10 Python
uwsgi+nginx部署Django项目操作示例
2018/12/04 Python
Python代码生成视频的缩略图的实例讲解
2019/12/22 Python
Python os模块常用方法和属性总结
2020/02/20 Python
Python基于爬虫实现全网搜索并下载音乐
2021/02/14 Python
css3实现3D色子翻转特效
2014/12/23 HTML / CSS
职业生涯规划书结束语
2014/04/15 职场文书
讲党性心得体会
2014/09/03 职场文书
2015年骨干教师工作总结
2015/05/26 职场文书
企业催款函范本
2015/06/24 职场文书
2015最新婚礼司仪主持词
2015/06/30 职场文书
大学生就业指导课心得体会
2016/01/15 职场文书
完美解决golang go get私有仓库的问题
2021/05/05 Golang
Python使用海龟绘图实现贪吃蛇游戏
2021/06/18 Python