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

标签 bash ansible slack

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

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

- hosts: nagiosserver

  tasks:
   - name: Executing a script
     command: sh /home/aravind/downtime.sh {hostname} {duration} {comments}

最佳答案

如果您通过 ansible-playbook myplay.yml 执行 ansible,您可以通过 -e varname=varvalue 传递额外的变量。一个懒惰的修复方法是运行

ansible-playbook myplay.yml -e my_hostname=foo -e my_duration=bar -e my_comments=foobar

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

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

- hosts: nagiosserver

  tasks:
    - name: Executing a script
    - command: "sh /home/aravind/downtime.sh {{my_hostname}} {{my_duration}} {{my_comments}}"

关于bash - 在 Ansible 中执行带参数的 bash 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45424714/

相关文章:

bash - 此 bash 脚本出错

ansible - 如何使用 ansible-vault 2.3.0 解密字符串

Ansible:为服务分配唯一端口

node.js - 如何获取安装了我的 slack 应用程序的所有工作区的信息

slack-api - 如何向 Slack 监听 channel 发送消息?

bash - 如何从 bash 执行 mongo 命令?

java - 命令是否从 shell 脚本中的当前目录运行?

Jenkins 松弛发送: channel alert notifications for @here or specific user

linux - 如何根据最新时间列出目录中的文件并循环该文件列表并将其保存在数组中以进行模式匹配

Ansible 同步模式权限