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
猜你喜欢
- 前言:中文编码问题一直是程序员头疼的问题,而Python2中的字符编码足矣令新手抓狂。本文将尽量用通俗的语言带大家彻底的了解字符编码以及Py
- 一、Node.js实现代码var http = require('http');var util = require(
- JMeter的简介 JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,
- 注意:index.html再次声明变量的时候注意空格的问题来源:https://blog.csdn.net/guofeng93/articl
- 看完了这个你就可以用asp修改注册表了!大名鼎鼎的WSH听说过吗? 它就是Windows script Host的缩写形式,WSH是Wind
- 概述laravel服务容器就像一个高度自动化的工厂,你需要的东西,定制好模型,使用特定接口来制造。因为使用了服务容器,laravel中大部分
- 本文实例讲述了Python复制文件操作用法。分享给大家供大家参考,具体如下:这里用python实现了一个小型的自动发版本的工具。这个“自动发
- 本文实例为大家分享了python批量文件重命名的具体代码,供大家参考,具体内容如下问题描述最近遇到朋友求助,如何将大量文件名前面的某些字符删
- 前言无论是自己要在精心P过的自拍上添加个性文字,或者是摄影爱好者要在拍摄的作品里添加水印,亦或是在网页或者移动应用中实时生成文字和图片的组合
- 今天谈一下关于python中input的一些基本用法(写给新手入门之用,故只谈比较实用的部分)。首先,我们可以看一下官方文档给我们的解释(在
- 一、h5py模块介绍本文只是简单的对h5py库的基本创建文件,数据集和读取数据的方式进行介绍!如果读者需要进一步详细的学习h5py的更多知识
- 第一个保存在新建一个文本中<% Dim Username,PassWord,strLogFile,f,ff,Str
- 本文讲述了Python检测网络延迟的代码。分享给大家供大家参考,具体如下:#!/usr/bin/env python # coding: u
- 一、新手常犯的错误在论坛看到很多帖子代码中都有一个共同的基本错误,字段类型错误。程序和数据库是紧紧相连的,数据库字段文本型或时间型的都使用单
- 从matplotlib工具栏源码探析一(禁用工具栏、默认工具栏和工具栏管理器三种模式的差异)一文可知matplotlib内置实现了多个工具项
- exam = { 'math': '95', 'eng': '96',
- open函数你必须先用Python内置的open()函数打开一个文件,创建一个file对象,相关的辅助方法才可以调用它进行读写。语法:fil
- 使用环境:人才网项目中有一个简历保密设置,其中有一个过滤关键词,只有某个企业的公司名中包含有其中的一个关键字,就不显示该份简历,当然,我还没
- 以前大家谈了很多有关打开数据库连接安全的问题,现在我再提出一种思路:使用activex dll来保护你的代码。(既可以不用为使用共享的加密软
- 本文实例讲述了PHP实现将MySQL重复ID二维数组重组为三维数组的方法。分享给大家供大家参考,具体如下:应用场景MYSQL在使用关联查询时