3

我正在将手动服务器配置过程转换为 Ansible 剧本。该过程的一部分涉及安装 WebSphere MQ 客户端。一个步骤涉及手动运行脚本,mqlicense.sh并接受许可协议以响应提示。如何在 Ansible 中完成此任务?

如果我运行脚本,ansible 进程就会挂起。如果我跳过该步骤,我会收到以下错误:

ERROR:  Product cannot be installed until the license
        agreement has been accepted.
        Run the 'mqlicense' script, which is in the root
        directory of the install media, or see the
        Quick Beginnings book for more information.

更新

进一步的谷歌搜索把我带到了这个 ibm.com 页面,它指出:

如果想要接受许可证而不显示它,您可以使用 -accept 选项运行 mqlicense.sh 脚本。

./mqlicense.sh -accept

但是,这在我的情况下似乎不起作用。当我从命令行运行该命令时,仍然会出现交互式提示。

4

1 回答 1

4

问题出在 mqlicense.sh 脚本上。显然,它使用了一些与 bash 不兼容的语法。所以当我在我的 Debian 服务器上运行它时,脚本抱怨:

./mqlicense.sh: 99: ./mqlicense.sh: [[: not found

在这个 ibm.com 论坛帖子中提到的解决方案是安装 korn shell ( ksh),并使用它来接受许可。我的剧本中包含以下任务:

包含ksh在系统包中:

- name: Install debian packages
  apt: pkg=${item} state=installed
  with_items:
    - alien
    - ksh

使用以下命令调用脚本ksh

# Need to run this with ksh; script syntax is not bash-compliant
- name: Accept MQ Client license
  command: ksh mqlicense.sh -accept chdir=${vsphere_wd}

Ansible 剧本可以在这里找到:

于 2013-10-11T16:39:16.143 回答