我正在将手动服务器配置过程转换为Ansible playbook。该过程的一部分涉及安装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.
进一步使用谷歌搜索带我到this ibm.com page,其中说明:
如果想要在不显示许可证的情况下接受许可证,则可以运行 带有-accept选项的mqlicense.sh脚本。
./mqlicense.sh -accept
然而,在我的情况下,这似乎不起作用。当我从命令行运行该命令时,交互式提示仍然出现。
答案 0 :(得分:3)
问题原来是mqlicense.sh脚本。显然,它使用了一些与bash不兼容的语法。所以当我在我的Debian服务器上运行它时,脚本抱怨:
./mqlicense.sh: 99: ./mqlicense.sh: [[: not found
this ibm.com forum thread中提到的解决方案是安装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剧本: