我有为 IHS 服务器的 .kdb 文件创建自签名证书的有效命令,并且我尝试通过 ansible 使用相同的命令。这里我的目标是 ansible 应该检测应用程序服务器的主机名,并将该名称用作命令的“-dn”。以下是有效命令
[root@myhost bin]# ./gskcmd -cert -create -db /opt/myapp/key.kdb -label IHS -expire 3650 -size 2048 -dn "CN=myserverFQDN" -default_cert yes -pw 密码
但下面是我的发挥,其给出语法错误
tasks:
- name: get hostname
shell: echo $HOSTNAME
register: hostname
- name: create self signed certificate for IHS
command: /opt/myapp/bin/gskcmd -cert -create -db /opt/myapp/key.kdb -label IHS -expire 3650 -size 2048 -dn "CN={{ hostname}}" -default_cert yes -pw password
答案1
您无需回显任何内容即可“获取”主机名。它已经是 Ansible 收集的事实之一。ansible_nodename
您只需要使用它。
command: /opt/myapp/bin/gskcmd -cert -create -db /opt/myapp/key.kdb -label IHS -expire 3650 -size 2048 -dn "CN={{ansible_nodename}}" -default_cert yes -pw password
根据您正在做的事情,您可能需要使用其中一种替代事实,ansible_hostname
或者inventory_hostname
。
这些变量设置如下:
inventory_hostname
是 Ansible 清单中设置的主机名。例如www.internal-name.example
。ansible_hostname
是系统报告的不合格主机名。例如www
。ansible_nodename
是系统报告的完全限定主机名。例如www.example.com
。