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开发之str.format()用法实例分析
Feb 22 Python
Python基于QRCode实现生成二维码的方法【下载,安装,调用等】
Jul 11 Python
Python通过命令开启http.server服务器的方法
Nov 04 Python
pandas分别写入excel的不同sheet方法
Dec 11 Python
对python中list的拷贝与numpy的array的拷贝详解
Jan 29 Python
Python计算不规则图形面积算法实现解析
Nov 22 Python
python实现简单图书管理系统
Nov 22 Python
使用Python操作MySQL的小技巧
Sep 10 Python
python中uuid模块实例浅析
Dec 29 Python
Python爬虫爬取微博热搜保存为 Markdown 文件的源码
Feb 22 Python
Python字符串的转义字符
Apr 07 Python
实战Python爬虫爬取酷我音乐
Apr 11 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 不错的学习资料
2009/02/06 PHP
PHP curl 并发最佳实践代码分享
2012/09/05 PHP
解析:使用php mongodb扩展时 需要注意的事项
2013/06/18 PHP
php中this关键字用法分析
2016/12/07 PHP
PHP htmlspecialchars() 函数实例代码及用法大全
2018/09/18 PHP
写自已的js类库需要的核心代码
2012/07/16 Javascript
jQuery 遍历-nextUntil()方法以及prevUntil()方法的使用介绍
2013/04/26 Javascript
javascript实现div浮动在网页最顶上并带关闭按钮效果实例
2013/08/13 Javascript
JavaScrip实现PHP print_r的数功能(三种方法)
2013/11/12 Javascript
HTML,CSS,JavaScript速查表推荐
2014/12/02 Javascript
jQuery与getJson结合的用法实例
2015/08/07 Javascript
javascript中checkbox使用方法实例演示
2015/11/19 Javascript
JS+CSS实现闪烁字体效果代码
2016/04/05 Javascript
nodejs如何获取时间戳与时间差
2016/08/03 NodeJs
jquery+Jscex打造游戏力度条
2020/09/12 Javascript
解决jQuery ajax动态新增节点无法触发点击事件的问题
2017/05/24 jQuery
解决vue路由后界面没有变化,但是链接有的问题
2018/09/01 Javascript
ztree加载完成后显示勾选节点的实现代码
2018/10/22 Javascript
vue中使用带隐藏文本信息的图片、图片水印的方法
2020/04/24 Javascript
Angular进行简单单元测试的实现方法实例
2020/08/16 Javascript
用python + hadoop streaming 分布式编程(一) -- 原理介绍,样例程序与本地调试
2014/07/14 Python
python开启多个子进程并行运行的方法
2015/04/18 Python
Python扫描IP段查看指定端口是否开放的方法
2015/06/09 Python
利用python代码写的12306订票代码
2015/12/20 Python
Python学习笔记之列表推导式实例分析
2019/08/13 Python
使用OpenCV实现道路车辆计数的使用方法
2020/07/15 Python
浅谈css3中的前缀
2016/07/20 HTML / CSS
护士自荐信
2013/10/25 职场文书
电大自我鉴定
2013/10/27 职场文书
自我评价怎么写好呢?
2013/12/05 职场文书
职业规划书如何设计?
2014/01/09 职场文书
预备党员群众意见
2015/06/01 职场文书
52条SQL语句教你性能优化
2021/05/25 MySQL
15个值得收藏的JavaScript函数
2021/09/15 Javascript
Python 统计序列中元素的出现频度
2022/04/26 Python
Shell中的单中括号和双中括号的用法详解
2022/12/24 Servers