Ansible:我需要创建一个剧本来在Ansible中执行shell脚本

up9lanfz  于 2022-12-23  发布在  Shell
关注(0)|答案(1)|浏览(188)

我需要创建一个ansible作业来执行具有不同环境参数的shell脚本(通过在命令中提供参数,一个行动手册将适用于所有环境测试、QA和生产)。例如,我需要执行脚本ABC.sh,其常规命令为sh ABC.sh/105t(用于测试执行)或sh abcidersh/105 q(用于QA执行)。有没有人能帮我制定这方面的剧本?谢谢!!
我在gitlab中尝试了YML文件的以下格式。

-name: execute the script

 tasks:

   name: execute the ABC script
   script: sh script_dir_path/ABC.sh /105t

作业成功运行,但未触发脚本执行。

6ljaweal

6ljaweal1#

使用模块 script,调用后在远程节点上运行本地脚本,例如,给定树

shell> tree .
.
├── ansible.cfg
├── hosts
├── pb.yml
└── script_dir_path
    └── ABC.sh

创建一个显示第一个参数的简单脚本

shell> cat script_dir_path/ABC.sh 
echo $1

下面的行动手册在所有远程主机上运行。它将脚本传输到远程主机,使用参数 arg 运行脚本,并显示结果

shell> cat pb.yml 
- hosts: all
  tasks:
    - script:
        cmd: "script_dir_path/ABC.sh {{ arg }}"
      register: out
    - debug:
        var: out.stdout

根据存货清单

shell> cat hosts
test_11
test_13

行动手册按预期工作

shell> ansible-playbook pb.yml -e arg=/105t

PLAY [all] ***********************************************************************************

TASK [script] ********************************************************************************
changed: [test_11]
changed: [test_13]

TASK [debug] *********************************************************************************
ok: [test_11] => 
  out.stdout: |-
    /105t
ok: [test_13] => 
  out.stdout: |-
    /105t

PLAY RECAP ***********************************************************************************
test_11: ok=2    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
test_13: ok=2    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

相关问题