Ansible 中的 playbook 代码片段使用了 shellraw 模块来执行命令,这并非最佳实践。建议使用 Ansible 提供的模块来执行命令,例如 commandshell 模块。

以下是对代码片段的改进建议:

  1. 使用 command 模块执行 ls 命令,并使用 register 变量存储执行结果。
- name: '获取 ovn 包路径' 
  command: ls -d /opt/package/public/{{ ovn_install_version }}/ovn/ 
  ignore_errors: True
  register: pkgs_ucs_ovn_dir
  1. 使用 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

通过以上改进,可以提高代码的可读性和可维护性,并确保命令执行的正确性。

Ansible 中使用模块执行命令的最佳实践

原文地址: https://www.cveoy.top/t/topic/lUSs 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录