在Ansible剧本中,我有一个像这样的变量:
SSLPEER('CN=xxxxxxxxxx.nam.nsroot.net,OU=154607,O=MyCompany Inc.,L=Austin,ST=TX,C=US')
我代码:
- name: Format the CN and echo parameters
set_fact:
cn_formatted: "SSLPEER('{{ CN }}')"
- name: Set the SSLPEERMAP MQ Channel Authorization Record.
shell: su mqm -c "echo 'set CHLAUTH({{ ChannelName }}) TYPE(SSLPEERMAP) USERSRC(MAP) MCAUSER({{ usr }}) "{{ cn_formatted }}" action(replace)'|runmqsc {{QMName}}"
args:
chdir: /usr/bin/
warn: false
register: set_chl_auth_2_status
ignore_errors: yes
不管我怎么引用它,我都不能让Ansible剧本正确运行,请帮助。
我已经尝试了单引号和双引号周围的变量正确运行,但没有运气!
这是我试图描述的一个例子;为了能够在本地运行它,我改变了一些参数,你也可以这样做,以了解发生了什么,但然后取消注释的实际值,以便运行真正的
- name: Format the CN and echo parameters
set_fact:
cn_formatted: "SSLPEER('{{ CN }}')"
vars:
CN: 'CN=xxxxxxxxxx.nam.nsroot.net,OU=154607,O=MyCompany Inc.,L=Austin,ST=TX,C=US'
- name: Set the SSLPEERMAP MQ Channel Authorization Record.
#UNCOMMENT: become: true
become: false
become_user: mqm
#UNCOMMENT: command: runmqsc {{QMName}}
command: tee /tmp/runmqsc.{{QMName}}.log
args:
stdin: set CHLAUTH({{ ChannelName }}) TYPE(SSLPEERMAP) USERSRC(MAP) MCAUSER({{ usr }}) {{ cn_formatted }} action(replace)
chdir: /usr/bin
register: set_chl_auth_2_status
ignore_errors: yes
当我在本地运行它时,/tmp
文件包含以下内容,这就是runmqsc
将接收到的stdin:
set CHLAUTH(ch1234) TYPE(SSLPEERMAP) USERSRC(MAP) MCAUSER(someusername) SSLPEER('CN=xxxxxxxxxx.nam.nsroot.net,OU=154607,O=MyCompany Inc.,L=Austin,ST=TX,C=US') action(replace)