LINUX.ORG.RU
решено ФорумAdmin

Параметры хоста в ansible

 


0

1

Как правильно задать параметры, специфичные для хоста?

Я сейчас делаю в inventory/hosts как-то так

[kvm_host]
kvm01 vm_number=20 vm_prefix=vm01 
kvm02 vm_number=20 vm_prefix=vm02 
kvm03 vm_number=40 vm_prefix=vm03 

И дальше использую эти параметры в j2-шаблонах. Но это выглядит как-то костыльно и непонятно, что делать если параметров много или им нужна сложная структура.

Можно использовать host_vars

А вообще для вашего примера вам надо завести какую-нибудь переменную типа "vm_id" и "vm_group_prefix" для группы и в шаблоны вместо "vm_prefix={{vm_prefix}}" писать "vm_prefix={{vm_group_prefix}}{{vm_id}}".

micronekodesu ★★★
()
Последнее исправление: micronekodesu (всего исправлений: 1)
Ответ на: комментарий от micronekodesu

host_vars

Да, наверное его и надо.

А вообще для вашего примера вам надо завести какую-нибудь переменную типа «vm_id» и «vm_group_prefix» для группы и в шаблоны вместо «vm_prefix={{vm_prefix}}» писать «vm_prefix={{vm_group_prefix}}{{vm_id}}».

А как мне это поможет, если я хочу чтобы на каждом хосте префикс был свой?

suspend
() автор топика
Ответ на: комментарий от suspend

А как мне это поможет, если я хочу чтобы на каждом хосте префикс был свой?

Никак, я же написал "для вашего примера", только к тому что если есть возможность что-то упростить - лучше сделать проще. В конце концов задав общий префикс для группы его потом можно переопределить для определенного хоста если это будет нужно. Использование "предсказуемой" и унифицированной инфраструктуры позволит вам как в целом уменьшить количество проблем и подводных камней в дальнейшем, так и сделает ваши плейбуки и инвентори-файлы проще и нагляднее.

micronekodesu ★★★
()

Про host_vars уже написали. При этом для Вашего примера, когда vm_prefix совпадает с именем хоста, следовало бы vm_prefix унести в group_vars в виде:

vm_prefix: '{{ ansible_hostname }}'

ну или inventory_hostname.

Я же для небольшого количества параметров предпочитаю YAML вместо ini:

---
all:
  vars:
    some_global_array:
    - item1
    - item2
    some_global_map:
      key1: val1
      key2: val2

kvm_host:
  vars:
    vm_prefix: '{{ ansible_hostname }}'
    vm_number: 20
  hosts:
    kvm01:
    kvm02:
    kvm03:
      vm_number: 40

Так в одном файле можно объединить и список хостов, и host_vars, и group_vars.

P.S. some_global_* в all/vars привёл как пример того, что в этот же инвентори можно добавить сложные структуры в качестве переменных.

MumiyTroll ★★★
()
Последнее исправление: MumiyTroll (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.