У меня есть рабочая команда для создания самоподписанного сертификата для файла .kdb сервера IHS, и я пытался использовать ту же команду через 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 password
но ниже моя игра и ее синтаксическая ошибка
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
Вам не нужно ничего выводить, чтобы "получить" имя хоста. Это уже один из фактов, собранных 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
.