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编写分类决策树的代码
Dec 21 Python
Django使用paginator插件实现翻页功能的实例
Oct 24 Python
PyQt5内嵌浏览器注入JavaScript脚本实现自动化操作的代码实例
Feb 13 Python
pandas实现to_sql将DataFrame保存到数据库中
Jul 03 Python
Python中字典与恒等运算符的用法分析
Aug 22 Python
Python 函数list&read&seek详解
Aug 28 Python
Python csv模块使用方法代码实例
Aug 29 Python
Python 操作mysql数据库查询之fetchone(), fetchmany(), fetchall()用法示例
Oct 17 Python
如何基于python实现归一化处理
Jan 20 Python
python利用递归方法实现求集合的幂集
Sep 07 Python
python更新数据库中某个字段的数据(方法详解)
Nov 18 Python
运行python提示no module named sklearn的解决方法
Nov 29 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代码
2006/12/06 PHP
在数据量大(超过10万)的情况下
2007/01/15 PHP
PHP翻页跳转功能实现方法
2020/11/30 PHP
Thinkphp和onethink实现微信支付插件
2016/04/13 PHP
关于ThinkPhp 框架表单验证及ajax验证问题
2017/07/19 PHP
CL vs ForZe BO5 第一场 2.13
2021/03/10 DOTA
什么是JavaScript
2009/08/13 Javascript
超简单的jquery的AJAX用法
2010/05/10 Javascript
将光标定位于输入框最右侧实现代码
2012/12/04 Javascript
JavaScript加强之自定义event事件
2013/09/21 Javascript
整理Javascript事件响应学习笔记
2015/12/02 Javascript
微信小程序 JS动态修改样式的实现代码
2017/02/10 Javascript
浅谈JS中的反柯里化( uncurrying)
2017/08/17 Javascript
Vue2.0实现调用摄像头进行拍照功能 exif.js实现图片上传功能
2018/04/28 Javascript
JS实现简单的星期格式转换功能示例
2018/07/23 Javascript
微信小程序实现预览图片功能
2020/10/22 Javascript
vue-cli3.0 环境变量与模式配置方法
2018/11/08 Javascript
微信小程序中遇到的iOS兼容性问题小结
2018/11/14 Javascript
weui上传多图片,压缩,base64编码的示例代码
2020/06/22 Javascript
jQuery实现tab栏切换效果
2020/12/22 jQuery
[01:00]选手抵达华西村 整装待发备战2016国际邀请赛中国区预选赛
2016/06/25 DOTA
Python中装饰器的一个妙用
2015/02/08 Python
python以环状形式组合排列图片并输出的方法
2015/03/17 Python
python 编码规范整理
2018/05/05 Python
python 获取键盘输入,同时有超时的功能示例
2018/11/13 Python
Python3对称加密算法AES、DES3实例详解
2018/12/06 Python
opencv与numpy的图像基本操作
2019/03/08 Python
浅析matlab中imadjust函数
2020/02/27 Python
python使用nibabel和sitk读取保存nii.gz文件实例
2020/07/01 Python
python 读取yaml文件的两种方法(在unittest中使用)
2020/12/01 Python
草莓网官网:StrawberryNET
2019/08/21 全球购物
全球才华横溢工匠的家居装饰、珠宝和礼物:NOVICA
2021/01/22 全球购物
元旦促销方案
2014/03/15 职场文书
十个Python自动化常用操作,即拿即用
2021/05/10 Python
如何获取numpy array前N个最大值
2021/05/14 Python
Java 在生活中的 10 大应用
2021/11/02 Java/Android