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和perl实现批量对目录下电子书文件重命名的代码分享
Nov 21 Python
python实现指定字符串补全空格的方法
Apr 30 Python
分析Python读取文件时的路径问题
Feb 11 Python
Python字符串逆序的实现方法【一题多解】
Feb 18 Python
Python+OpenCV+pyQt5录制双目摄像头视频的实例
Jun 28 Python
python代码 FTP备份交换机配置脚本实例解析
Aug 01 Python
python实现自动化报表功能(Oracle/plsql/Excel/多线程)
Dec 02 Python
Keras自动下载的数据集/模型存放位置介绍
Jun 19 Python
Python pip使用超时问题解决方案
Aug 03 Python
Python开发.exe小工具的详细步骤
Jan 27 Python
利用Python如何画一颗心、小人发射爱心
Feb 21 Python
Python OpenCV 彩色与灰度图像的转换实现
Jun 05 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优化那些事(经验分享)
2014/11/27 PHP
PHP实现的回溯算法示例
2017/08/15 PHP
PHP发送邮件确认验证注册功能示例【修改别人邮件类】
2019/11/09 PHP
jquery控制listbox中项的移动并排序
2009/11/12 Javascript
JavaScript this调用规则说明
2010/03/08 Javascript
javascript如何创建表格(javascript绘制表格的二种方法)
2013/12/10 Javascript
JavaScript表单通过正则表达式验证电话号码
2014/03/14 Javascript
Javascript中的五种数据类型详解
2014/12/26 Javascript
详解JavaScript的另类写法
2016/04/11 Javascript
AngularJS基础 ng-options 指令详解
2016/08/02 Javascript
javascript和jQuery中的AJAX技术详解【包含AJAX各种跨域技术】
2016/12/15 Javascript
jQuery实现扑克正反面翻牌效果
2017/03/10 Javascript
vue移动端裁剪图片结合插件Cropper的使用实例代码
2017/07/10 Javascript
详解JS中的this、apply、call、bind(经典面试题)
2017/09/19 Javascript
vue2.0 父组件给子组件传递数据的方法
2018/01/15 Javascript
Angular使用过滤器uppercase/lowercase实现字母大小写转换功能示例
2018/03/27 Javascript
javascript实现时钟动画
2020/12/03 Javascript
用Python制作简单的钢琴程序的教程
2015/04/01 Python
Python 两个列表的差集、并集和交集实现代码
2016/09/21 Python
基于ID3决策树算法的实现(Python版)
2017/05/31 Python
详解Python中如何写控制台进度条的整理
2018/03/07 Python
用TensorFlow实现戴明回归算法的示例
2018/05/02 Python
关于 Python opencv 使用中的 ValueError: too many values to unpack
2019/06/28 Python
Python3实现配置文件差异对比脚本
2019/11/18 Python
Python timeit模块的使用实践
2020/01/13 Python
Django如何在不停机的情况下创建索引
2020/08/02 Python
财务工作个人求职的自我评价
2013/12/19 职场文书
心碎乌托邦的创业计划书范文
2013/12/26 职场文书
《听鱼说话》教学反思
2014/02/15 职场文书
创建绿色学校先进个人材料
2014/08/20 职场文书
励志演讲稿3分钟
2014/08/21 职场文书
云南省召开党的群众路线教育实践活动总结会议新闻稿
2014/10/21 职场文书
邓小平文选读书笔记
2015/06/29 职场文书
新人入职感言
2015/07/31 职场文书
pytorch 权重weight 与 梯度grad 可视化操作
2021/06/05 Python
使用python+pygame开发消消乐游戏附完整源码
2021/06/10 Python