Ansible Playbook自动部署KVM与Python3环境实战指南

江岸
江岸
发布时间:2026-10-13| 5人浏览过
原创

本文详细介绍如何利用Ansible Playbook实现KVM虚拟化环境的自动化部署及Python3环境的配置。内容涵盖YAML基础语法、Playbook核心组件解析,并提供完整的自动化脚本示例与执行命令,帮助运维人员快速掌握批量服务器配置技巧,提升部署效率。

Ansible Playbook概述

Ansible Playbook概述

Playbook是Ansible用于配置、部署和管理受控节点的核心剧本。通过详细描述一系列Tasks(任务),Playbook能够确保远程主机达到预期的配置状态。可以将Playbook理解为Ansible控制器向受控节点下达的一系列待办事项清单,受控节点必须严格执行这些指令以完成配置目标。

Ansible Playbook编写规范

Ansible Playbook编写规范

Playbook文件严格遵循YAML格式。YAML是一种类似JSON的结构化数据格式,旨在提高人类的可读性和书写便利性。作为一种声明式的半结构化数据格式,YAML具有高度的可读性,便于表达序列数据,并能轻松与各种脚本语言进行交互。

YAML文件基本语法规则

YAML文件基本语法规则

  • YAML对大小写敏感,配置时需严格区分字母大小写。
  • 使用缩进(Indentation)来表示数据的层级关系,缩进空格数必须一致。
  • 严禁使用Tab键进行缩进,必须使用空格。建议将IDE中的Tab键输出替换为4个空格,以避免解析错误。
  • 缩进的空格数量没有严格限制,只要保证同一层级的元素左侧对齐即可。
  • 使用井号(#)开头表示注释,注释内容不会被Ansible解析执行。

YAML支持的数据结构类型

YAML支持的数据结构类型

  • 对象(Object):由键值对组成的集合,在YAML中也被称为映射(mapping)、哈希(hashes)或字典(dictionary)。
  • 数组(Array):一组按顺序排列的值,在YAML中称为序列(sequence)或列表(list)。
  • 纯量(Scalr):不可再分的单个值,如字符串、整数、布尔值等。

Playbook的组成结构要素

Playbook的组成结构要素

  • Tasks(任务列表):定义远程主机需要执行的一系列动作,其核心是调用Ansible模块。
  • Variables(变量):用于存储动态数据,使Playbook更具通用性。
  • Templates(模板):包含模板语法的文本文件,用于生成动态配置文件。
  • Handlers(处理器):在特定条件触发时执行的操作,通常用于服务重启或配置重载。
  • remote_user:指定在远程主机上执行任务的用户身份。
  • Hosts:指定运行指定任务的目标主机或主机组。

一键安装KVM及Python3的Playbook示例

一键安装KVM及Python3的Playbook示例


---
 - 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

以下是完整的Playbook代码实现,用于自动化部署KVM依赖库及编译安装Python3。

执行方式与前提条件

执行方式与前提条件


[root@localhost ~] ansible-playbook test.yaml -e "hostname=X.X.X.X user=XXXX" 

总结

本文介绍了基于Ansible Playbook自动部署KVM虚拟化环境及安装Python3的完整流程。通过掌握YAML语法和Playbook结构,运维人员可以实现高效、标准化的服务器配置。如需了解更多Ansible自动化部署相关内容,建议查阅本站往期文章或继续关注后续更新,感谢支持。

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。