在 Ansible 中执行带参数的 bash 脚本

mas*_*ind 4 bash ansible slack

我是 Ansible 的新手。我有一个 bash 脚本,它有三个要传递的参数。我必须从 Ansible 在远程服务器上运行这个 bash 脚本。

基本上,我想在执行 Ansible 命令时将主机名、持续时间和注释字段声明为参数。我不想编辑文件,因为我是从 Slack 频道编辑的。

- hosts: nagiosserver

  tasks:
   - name: Executing a script
     command: sh /home/aravind/downtime.sh {hostname} {duration} {comments}
Run Code Online (Sandbox Code Playgroud)

小智 5

如果您通过 执行 ansible ansible-playbook myplay.yml,则可以通过-e varname=varvalue. 一个懒惰的解决方法是运行

ansible-playbook myplay.yml -e my_hostname=foo -e my_duration=bar -e my_comments=foobar
Run Code Online (Sandbox Code Playgroud)

但是您应该考虑主机名已经在您的清单或收集的事实中定义。

所以你可以更新你的剧本以使用这些额外的变量

- hosts: nagiosserver

  tasks:
    - name: Executing a script
    - command: "sh /home/aravind/downtime.sh {{my_hostname}} {{my_duration}} {{my_comments}}"
Run Code Online (Sandbox Code Playgroud)