如何优化基于CentOS版本的Ansible自定义RPM安装Playbook?
优化CentOS多版本RPM部署的Ansible Playbook
当然可以简化!通过利用Ansible内置变量动态拼接对应版本的RPM文件名,只需一个copy任务和一个install任务就能完成所有版本的部署,彻底避免重复代码。
优化后的Playbook
--- - hosts: centos678 become: true tasks: - name: Copy matching RPM to target host copy: src: "package.sl{{ ansible_distribution_major_version }}.x86_64.rpm" dest: "/tmp/package.sl{{ ansible_distribution_major_version }}.x86_64.rpm" force: no - name: Install the matching RPM yum: name: "/tmp/package.sl{{ ansible_distribution_major_version }}.x86_64.rpm" state: present
关键优化说明
- 动态变量复用:
ansible_distribution_major_version是Ansible自动收集的主机变量,会返回当前主机的CentOS主版本号(6/7/8),直接拼接在文件名中即可自动匹配对应版本的RPM包。 - 代码精简高效:将原本6个重复任务压缩为2个,后续若新增同命名规则的CentOS版本包,无需修改Playbook即可直接适配。
- 兼容性保障:
yum模块对CentOS 6-8均兼容,CentOS 8环境下Ansible会自动适配底层的dnf命令执行安装操作。
内容的提问来源于stack exchange,提问作者Luke Black
相关产品推荐
相关产品推荐

