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 optparse模块使用实例
Apr 09 Python
python中类变量与成员变量的使用注意点总结
Apr 29 Python
Python编程实现从字典中提取子集的方法分析
Feb 09 Python
python实现数据分析与建模
Jul 11 Python
python3 enum模块的应用实例详解
Aug 12 Python
Python实现PyPDF2处理PDF文件的方法示例
Sep 25 Python
python GUI库图形界面开发之PyQt5布局控件QHBoxLayout详细使用方法与实例
Mar 06 Python
python不相等的两个字符串的 if 条件判断为True详解
Mar 12 Python
PyQt5 界面显示无响应的实现
Mar 26 Python
Python实现转换图片背景颜色代码
Apr 30 Python
python 读txt文件,按‘,’分割每行数据操作
Jul 05 Python
python opencv实现直线检测并测出倾斜角度(附源码+注释)
Dec 31 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
PHP随机数生成代码与使用实例分析
2011/04/08 PHP
老生常谈ThinkPHP中的行为扩展和插件(推荐)
2017/05/05 PHP
DOM下的节点属性和操作小结
2009/05/14 Javascript
javascript类继承机制的原理分析
2009/09/12 Javascript
客户端 使用XML DOM加载json数据的方法
2010/09/28 Javascript
js中巧用cssText属性批量操作样式
2011/03/13 Javascript
Js 时间间隔计算的函数(间隔天数)
2011/11/15 Javascript
javascript用函数实现对象的方法
2015/05/14 Javascript
动态加载js文件简单示例
2016/04/21 Javascript
jQuery Password Validation密码验证
2016/12/30 Javascript
详解Angularjs在控制器(controller.js)中使用过滤器($filter)格式化日期/时间实例
2017/02/17 Javascript
基于vue.js轮播组件vue-awesome-swiper实现轮播图
2017/03/17 Javascript
JavaScript编程设计模式之观察者模式(Observer Pattern)实例详解
2017/10/25 Javascript
vue中使用element-ui进行表单验证的实例代码
2018/06/22 Javascript
浅谈React之状态(State)
2018/09/19 Javascript
微信小程序自定义组件的实现方法及自定义组件与页面间的数据传递问题
2018/10/09 Javascript
js获取对象,数组所有属性键值(key)和对应值(value)的方法示例
2019/06/19 Javascript
浅谈如何优雅处理JavaScript异步错误
2019/11/12 Javascript
python正则表达式爬取猫眼电影top100
2018/02/24 Python
利用Python实现微信找房机器人实例教程
2019/03/10 Python
python爬虫爬取微博评论案例详解
2019/03/27 Python
python通过robert、sobel、Laplace算子实现图像边缘提取详解
2019/08/21 Python
Django和Ueditor自定义存储上传文件的文件名
2021/02/25 Python
彻底解决pip下载pytorch慢的问题方法
2021/03/01 Python
CSS3 优势以及网页设计师如何使用CSS3技术
2009/07/29 HTML / CSS
canvas学习笔记之2d画布基础的实现
2019/02/21 HTML / CSS
HTML5 Canvas实现平移/放缩/旋转deom示例(附截图)
2013/07/04 HTML / CSS
英国知名小木屋定制网站:Tiger Sheds
2020/03/06 全球购物
网络信息管理员岗位职责
2014/01/05 职场文书
自荐信如何制作?
2014/02/21 职场文书
房产公证书
2015/01/23 职场文书
任命书怎么写
2015/03/02 职场文书
2015年六一儿童节活动方案
2015/05/05 职场文书
工伤事故赔偿协议书
2015/08/06 职场文书
MyBatis-Plus 批量插入数据的操作方法
2021/09/25 Java/Android
实现一个简单得数据响应系统
2021/11/11 Javascript