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中删除文件的程序代码
Mar 13 Python
理解python多线程(python多线程简明教程)
Jun 09 Python
Python深入06——python的内存管理详解
Dec 07 Python
Python虚拟环境virtualenv的安装与使用详解
May 28 Python
高效测试用例组织算法pairwise之Python实现方法
Jul 19 Python
TensorFlow实现RNN循环神经网络
Feb 28 Python
浅谈python函数调用返回两个或多个变量的方法
Jan 23 Python
python 自定义装饰器实例详解
Jul 20 Python
Django ORM多对多查询方法(自定义第三张表&ManyToManyField)
Aug 09 Python
Python3打包exe代码2种方法实例解析
Feb 17 Python
Python pickle模块常用方法代码实例
Oct 10 Python
Python中常见的反爬机制及其破解方法总结
Jun 10 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 _autoload自动加载类与机制分析
2012/02/10 PHP
php实现查看邮件是否已被阅读的方法
2013/12/03 PHP
php计算到指定日期还有多少天的方法
2015/04/14 PHP
php代码检查代理ip的有效性
2016/08/19 PHP
Ubuntu VPS中wordpress网站打开时提示”建立数据库连接错误”的解决办法
2016/11/03 PHP
PHP的mysqli_select_db()函数讲解
2019/01/23 PHP
(JS实现)MapBar中坐标的加密和解密的脚本
2007/05/16 Javascript
学习ExtJS form布局
2009/10/08 Javascript
JavaScript面向对象之静态与非静态类
2010/02/03 Javascript
js 处理URL实用技巧
2010/11/23 Javascript
javascript 数组排序函数sort和reverse使用介绍
2013/11/21 Javascript
js点击事件链接的问题解决
2014/04/25 Javascript
jQuery中end()方法用法实例
2015/01/08 Javascript
JavaScript中Date.toSource()方法的使用教程
2015/06/12 Javascript
Jquery 效果使用详解
2015/11/23 Javascript
JS提交form表单实例分析
2015/12/10 Javascript
Angular使用ng-messages与PHP进行表单数据验证
2016/12/28 Javascript
浅谈原生JS实现jQuery的animate()动画示例
2017/03/08 Javascript
nodejs读写json文件的简单方法(必看)
2017/03/09 NodeJs
JavaScript输入框字数实时统计更新
2017/06/17 Javascript
angularjs路由传值$routeParams详解
2020/09/05 Javascript
vue数据操作之点击事件实现num加减功能示例
2019/01/19 Javascript
json解析大全 双引号、键值对不在一起的情况
2019/12/06 Javascript
VUE 项目在IE11白屏报错 SCRIPT1002: 语法错误的解决
2020/09/27 Javascript
两个命令把 Vim 打造成 Python IDE的方法
2016/03/20 Python
Python中文件的读取和写入操作
2018/04/27 Python
使用python os模块复制文件到指定文件夹的方法
2019/08/22 Python
Python轻量级web框架bottle使用方法解析
2020/06/13 Python
纯css3实现的动画按钮的实例教程
2014/11/17 HTML / CSS
英国奢侈品牌时尚购物平台:Farfetch(支持中文)
2020/02/18 全球购物
如何拷贝一整个Java对象,包括它的状态
2013/12/27 面试题
基层党员对照检查材料
2014/08/25 职场文书
教师文明餐桌光盘行动倡议书
2015/04/28 职场文书
停车场管理制度范本
2015/08/05 职场文书
导游词之海南天涯海角
2019/12/05 职场文书
如何用Python搭建gRPC服务
2021/06/30 Python