ansible-playbook实现自动部署KVM及安装python3的详细教程
作者:demonlg0112 发布时间:2021-09-02 23:13:12
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"
来源:https://blog.csdn.net/demonlg0112/article/details/106024056


猜你喜欢
- 一、背景大家都知道gevent的机制是单线程+协程机制,当遇到可能会阻塞的操作时,就切换到可运行的协程中继续运行,以此来实现提交系统运行效率
- 让Python提速超过40倍的神器:Cython人工智能最火的语言,自然是被誉为迄今为止最容易使用的代码之一的Python。Python代码
- 介绍 os模块是Python和操作系统进行交互的一个接口,它提供了许多操作文件及文件夹的函数。可以用于文件名、文件路径、文件夹相
- 如何选择速度最快的站点? <html><head><meta http-equiv=&qu
- 本文实例讲述了Python递归遍历列表及输出的实现方法。分享给大家供大家参考。具体实现方法如下:def dp(s): if is
- 下面来先看一个简单例子<!DOCTYPE html><html lang="zh-CN" ng-app
- 本文实例讲述了Python读取一个目录下所有目录和文件的方法。分享给大家供大家参考,具体如下:这里介绍的是刚学python时的一个读取目录的
- 当1980年Three Rivers公司第一次推出图形用户界面Perq,产生GUI这个概念的时候,不知道他们有没有想过今天图形界面设计竟然会
- 一、Pytorch修改预训练模型时遇到key不匹配最近想着修改网络的预训练模型vgg.pth,但是发现当我加载预训练模型权重到新建的模型并保
- 最近在做的一个项目中需要使用到HTML5中引入的WebSocket技术,本来以为应该很容易就能搞定,谁知道在真正上手开发了以后才发现有很多麻
- 用IIS调试ASP程序时,有的页面可以显示出错行及出错原因,虽然原因不是很具体但足以引导调试程序,但有些时候就直接出现:HTTP 500 -
- 数据库镜像方案有两种镜像运行模式。一种是“高安全性模式”,它支持同步操作。在高安全性模式下,当会话开
- 我们经常会遇到多重查询问题,而长长的SQL语句往往让人丈二和尚摸不着头脑。特别是客户端部分填入查询条件时,如用普通方法将更是难上加难。以下巧
- 对于当前数据库的监控方式有很多,分为数据库自带、商用、开源三大类,每一种都有各自的特色;而对于 mysql 数据库由于其有很高的社区活跃度,
- 用过软件的朋友都知道,进度条是一个优秀软件的重要组成部分。它的存在能够使用户及时掌握程序的运行进度,确认应用程序正常工作。可是ASP中似乎没
- 从SQL Server2005开始提供了一种新的数据类型XML type,它允许用户将数据以XML文件的格式直接存储到数据表中。结合在ASP
- W3C(万维网联盟)日前发布了HTML 5公共草案,这是10年来对HTML的一次主要升级。据国外媒体报道,W3C HTML5草案于本周二发布
- 思路利用scapy库,在这个库的基础下能够做很多的事情,python读取pcap包网上一找一大把将读取出来的pcap包改一个名字,然后写回,
- 前言这几天比较空闲,就接触了下百度地图的API(开发者中心链接地址:http://developer.baidu.com),发现调用还是挺方
- 前言Go语言的序列化与反序列化在工作中十分常用,在Go语言中提供了相关的解析方法去解析JSON,操作也比较简单序列化// 数据序列化func