Ansible 中使用模块执行命令的最佳实践
Ansible 中的 playbook 代码片段使用了 shell 和 raw 模块来执行命令,这并非最佳实践。建议使用 Ansible 提供的模块来执行命令,例如 command 或 shell 模块。
以下是对代码片段的改进建议:
- 使用
command模块执行ls命令,并使用register变量存储执行结果。
- name: '获取 ovn 包路径'
command: ls -d /opt/package/public/{{ ovn_install_version }}/ovn/
ignore_errors: True
register: pkgs_ucs_ovn_dir
- 使用
when条件语句判断pkgs_ucs_ovn_dir.stdout是否为空,如果为空则跳过后续操作。
- name: '安装 ucs network-ovn for amd64'
when: ovn_deploy == 'install' and host_architecture == 'amd64' and pkgs_ucs_ovn_dir.stdout is not empty
block:
- name: '切换目录'
command: cd {{ pkgs_ucs_ovn_dir.stdout }}
- name: '赋予可执行权限'
command: chmod +x run_ovn.sh
- name: '执行安装脚本'
command: ./run_ovn.sh
通过以上改进,可以提高代码的可读性和可维护性,并确保命令执行的正确性。
原文地址: https://www.cveoy.top/t/topic/lUSs 著作权归作者所有。请勿转载和采集!