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程序语言快速上手教程
Jul 18 Python
python海龟绘图实例教程
Jul 24 Python
基python实现多线程网页爬虫
Sep 06 Python
Python获取SQLite查询结果表列名的方法
Jun 21 Python
关于python pyqt5安装失败问题的解决方法
Aug 08 Python
在pandas中一次性删除dataframe的多个列方法
Apr 10 Python
python自动化测试之如何解析excel文件
Jun 27 Python
python3实现弹弹球小游戏
Nov 25 Python
python pandas.DataFrame.loc函数使用详解
Mar 26 Python
Window版下在Jupyter中编写TensorFlow的环境搭建
Apr 10 Python
django模板获取list中指定索引的值方式
May 14 Python
Jupyter notebook 输出部分显示不全的解决方案
Apr 24 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
世界上第一台立体声收音机
2021/03/01 无线电
php继承中方法重载(覆盖)的应用场合
2015/02/09 PHP
如何通过View::first使用Laravel Blade的动态模板详解
2017/09/21 PHP
php实现文件上传基本验证
2020/03/04 PHP
IE6-IE9不支持table.innerHTML的解决方法分享
2012/09/14 Javascript
js判断当页面无法回退时关闭网页否则就history.go(-1)
2014/08/07 Javascript
使用js实现数据格式化
2014/12/03 Javascript
JS对字符串编码的几种方式使用指南
2015/05/14 Javascript
开启Javascript中apply、call、bind的用法之旅模式
2015/10/28 Javascript
详解JavaScript的流程控制语句
2015/11/30 Javascript
解决wx.onMenuShareTimeline出现的问题
2016/08/16 Javascript
jQuery Validate插件实现表单验证
2016/08/19 Javascript
setTimeout时间设置为0详细解析
2018/03/13 Javascript
使用Vue-cli 3.0搭建Vue项目的方法
2018/06/07 Javascript
layer.js open 隐藏滚动条的例子
2019/09/05 Javascript
javascript操作元素的常见方法小结
2019/11/13 Javascript
Python sys.argv用法实例
2015/05/28 Python
Python绘制3d螺旋曲线图实例代码
2017/12/20 Python
python字典嵌套字典的情况下找到某个key的value详解
2019/07/10 Python
python生成器推导式用法简单示例
2019/10/08 Python
TensorFLow 不同大小图片的TFrecords存取实例
2020/01/20 Python
Python类型转换的魔术方法详解
2020/12/23 Python
python中pyqtgraph知识点总结
2021/01/26 Python
美国最大的城市服装和运动鞋零售商:Jimmy Jazz
2016/11/19 全球购物
美国指甲油品牌:Deco Miami
2017/01/30 全球购物
英国在线自行车店:Merlin Cycles
2018/08/20 全球购物
Nordgreen手表德国官方网站:丹麦极简主义手表
2019/10/31 全球购物
params有什么用
2016/03/01 面试题
责任胜于能力演讲稿
2014/05/20 职场文书
新店开张活动方案
2014/08/24 职场文书
终止劳动合同证明书样本
2014/11/19 职场文书
2015年学校总务处工作总结
2015/05/19 职场文书
幼儿园园长工作总结2015
2015/05/25 职场文书
python使用pywinauto驱动微信客户端实现公众号爬虫
2021/05/19 Python
SpringBoot读取Resource下文件的4种方法
2021/07/02 Java/Android
详解Python flask的前后端交互
2022/03/31 Python