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 translator使用实例
Sep 06 Python
Python元组操作实例分析【创建、赋值、更新、删除等】
Jul 24 Python
一文带你了解Python中的字符串是什么
Nov 20 Python
Python处理时间日期坐标轴过程详解
Jun 25 Python
Python自动化导出zabbix数据并发邮件脚本
Aug 16 Python
pytorch模型存储的2种实现方法
Feb 14 Python
解决Django提交表单报错:CSRF token missing or incorrect的问题
Mar 13 Python
pandas读取csv文件提示不存在的解决方法及原因分析
Apr 21 Python
Django 允许局域网中的机器访问你的主机操作
May 13 Python
PyCharm中如何直接使用Anaconda已安装的库
May 28 Python
Python偏函数实现原理及应用
Nov 20 Python
python基础入门之普通操作与函数(三)
Jun 13 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_Cooikes不同页面无法传递的解决方法
2014/03/07 PHP
php实现改变图片直接打开为下载的方法
2015/04/14 PHP
标准版Eclipse搭建PHP环境的详细步骤
2015/11/18 PHP
php用户名的密码加密更安全的方法
2019/06/21 PHP
Javascript面向对象扩展库代码分享
2012/03/27 Javascript
鼠标滚轮控制网页横向移动实现思路
2013/03/22 Javascript
JavaScript随机生成信用卡卡号的方法
2015/04/07 Javascript
JavaScript函数的调用以及参数传递
2015/10/21 Javascript
jQuery操作iframe中js函数的方法小结
2016/07/06 Javascript
js动态添加的DIV中的onclick事件简单实例
2016/07/25 Javascript
详解Vue.js分发之作用域槽
2017/06/13 Javascript
Vue.js仿微信聊天窗口展示组件功能
2017/08/11 Javascript
js模块加载方式浅析
2017/08/12 Javascript
浅谈React碰到v-if
2018/11/04 Javascript
webpack4.x下babel的安装、配置及使用详解
2019/03/07 Javascript
javascript中如何判断类型汇总
2019/05/14 Javascript
vue简单练习 桌面时钟的实现代码实例
2019/09/19 Javascript
Vue中el-form标签中的自定义el-select下拉框标签功能
2020/04/20 Javascript
python写的一个squid访问日志分析的小程序
2014/09/17 Python
在Python中使用swapCase()方法转换大小写的教程
2015/05/20 Python
如何使用python爬取csdn博客访问量
2016/02/14 Python
利用Python实现颜色色值转换的小工具
2016/10/27 Python
Python数据持久化shelve模块用法分析
2018/06/29 Python
基于python3.7利用Motor来异步读写Mongodb提高效率(推荐)
2020/04/29 Python
Python 多线程C段扫描、检测 Ping扫描脚本的实现
2020/09/03 Python
Python extract及contains方法代码实例
2020/09/11 Python
PyQt5通过信号实现MVC的示例
2021/02/06 Python
html5 localStorage本地存储_动力节点Java学院整理
2017/07/06 HTML / CSS
详解如何用canvas画一个微笑的表情
2019/03/14 HTML / CSS
app内嵌H5 webview 本地缓存问题的解决
2020/10/19 HTML / CSS
学雷锋活动倡议书
2014/08/30 职场文书
学习作风建设心得体会
2014/10/22 职场文书
爱护公物主题班会
2015/08/17 职场文书
高中议论文(范文2篇)
2019/08/19 职场文书
Python List remove()实例用法详解
2021/08/02 Python
教你修复 Win11应用商店加载空白问题
2021/12/06 数码科技