Ansible имя хоста и IP-адрес

#variables #dns #ansible #ip #hostname

#переменные #dns #ansible #ip #имя хоста

Вопрос:

Как я могу использовать значение имени хоста и IP-адреса из hosts файла инвентаризации?

Например, у меня есть только один хост в hosts файле с именем в качестве ПОЛНОГО доменного имени, но он зарегистрирован на DNS-сервере.

Я пробовал с некоторыми переменными, но всегда получал имя хоста. Но, нужны оба из них: (

Вывод запроса на DNS-сервер:

  nslookup host1.dinamarca.com
 Server:        10.10.1.1
 Address:   10.10.1.1#53

 Name:  host1.dinamarca.com
 Address: 192.168.1.10
  

Пример host файла: (есть только один хост)

  host1.dinamarca.com
  

Я вызываю службу ansible с помощью команды:

  ansible-playbook --ask-pass -i hosts test.yml
  

Мой тестовый файл.yml:

  ---
 - name: test1
   hosts: host1.dinamarca.com
   remote_user: usertest

   tasks:
   - name: show ansible_ssh_host
     debug:
       msg: "{{ ansible_ssh_host }}"
   - name: show inventary_hostname
     debug: var=inventory_hostname

   - name: show ansible_hostname
     debug: var=ansible_hostname
 ...
  

Вывод:

 TASK [show ansible_ssh_host]            ****************************************************************************************************************************************
ok: [host1.dinamarca.com] => {
         "msg": "host1.dinamarca.com"
}

TASK [show inventary_hostname]      **************************************************************************************************************************************
ok: [host1.dinamarca.com] => {
         "inventory_hostname": "host1.dinamarca.com"
}

TASK [show ansible_hostname]      ****************************************************************************************************************************************
ok: [host1.dinamarca.com] => {
    "ansible_hostname": "host1"
}

PLAY RECAP      ************************************************************************************************     *************************************************************
host1.dinamarca.com     : ok=4    changed=0    unreachable=0    failed=0    skipped=0              rescued=0    ignored=0  
  

Комментарии:

1. Каким вы хотите, чтобы результат был?

2. Я считаю, что dig поиск , как в {{ lookup("dig", inventory_hostname) }} , — это то, что вам нужно

Ответ №1:

Вызывается Ansible fact ansible_fqdn . Если вам нужны и имя хоста, и полное доменное имя, у вас могут быть такие задачи:

 tasks:
  - name: show ansible_ssh_host
    debug:
      msg: "{{ ansible_ssh_host }}"
  - name: show inventory_hostname
    debug:
      msg: "{{ inventory_hostname }}"
  - name: show ansible_hostname
    debug: 
      msg: "{{ ansible_fqdn }}"