如何从剧本运行供应商提供的脚本以启用csh环境变量

时间:2019-05-17 14:39:22

标签: ansible

我需要执行供应商提供的csh脚本来创建大量的环境变量,以便从剧本中运行应用程序。

我建立了一个临时脚本,该脚本使用屏幕来注入我需要在csh会话中运行的命令。这样可以成功地运行该应用程序。但是同样,它是来自临时脚本而不是剧本。

### start the fsc
# launch a screen session with csh
ansible 10.1.1.103 -m shell -a "su - testdev -c 'screen -dmS testdev_fsc csh'" -b
# run vendor provided env variables script
ansible 10.1.1.103 -m shell -a "su - testdev -c 'screen -S testdev_fsc -X stuff '/export/home/testdev/tcdata/tc_cshvars^M''" -b
# execute the application
ansible 10.1.1.103 -m shell -a "su - testdev -c 'screen -S testdev_fsc -X stuff '/export/home/testdev/ccbin/fsc.sh^M''" -b

最后,我希望能够创建一个允许上述内容运行/执行的剧本片段。

1 个答案:

答案 0 :(得分:0)

因此,基本上,您想成为用户testdev,并在同一csh会话中连续运行两个命令。下面的虚拟剧本应该可以完成这项工作。

---
# Playbook example
- name: Play to run my script
  hosts: my_inventory_group
  remote_user: my_remote_connection_user

  tasks
    - name: run my script
      become: true
      become_user: testdev
      shell: |-
        ./tcdata/tc_cshvars
        ./ccbin/fsc.sh
      args:
        chdir: /export/home/testdev/
        executable: /bin/csh

|-是带有尾随空格控制的yaml垃圾标记。以下所有块均解释为保留了新行的字符串。传递到shell模块后,将执行每一行(就像在您自己的shell中输入的一样)。仔细检查csh可执行文件的路径。您必须提供绝对路径。

如果您的剧本中有多个任务,并且需要全部或全部以testdev的身份运行,则可以将becomebecome_user移动到播放级别而不是任务级别。

相关问题