Ansible добавить имя хоста, если нет полного доменного имени

#ansible

#ansible

Вопрос:

Когда ubuntu устанавливается по умолчанию, имя хоста — это просто то, что вводится в установщик.

Как я могу проверить это имя хоста и добавить его в полное доменное имя, если оно еще не является полным доменным именем?

Пример псевдо-yaml

 - name: Set FQDN LAN hostname
  hostname: "{{ current_hostname }}.lan.example.com"
  when: <hostname does not end with .lan.example.com>
  

Ответ №1:

Я так понимаю, что вы ищете условие, которое должно быть сопоставлено when: . Вы можете использовать переменную ansible_fqdn magic (факт).

Пример:

   - hostname:
      name: "{{ ansible_hostname }}.lan.example.com"
    when: ( 'lan.example' not in ansible_fqdn )
  

Ответ №2:

Имя хоста модуля является идемпотентным

Нет причин использовать условие в этой задаче. Модуль либо изменит имя хоста, если оно отличается, либо сохранит его неизменным, если оно уже установлено. Например

   - name: Set FQDN LAN hostname
    hostname:
      name: srv.lan.example.com
  

Переменная ansible_hostname

Эта переменная всегда сохраняет имя хоста. Его можно использовать, чтобы убедиться, что имя хоста является полным доменным именем. Например

   - name: Set FQDN LAN hostname
    hostname:
      name: "{{ ansible_hostname }}.lan.example.com"