Size: a a a

2021 February 18

AK

Anton K in Ansible
Lamobot
Масса вариантов:
- нагенерить башем инвентарь
- написать динамический
- вот так работает
[newgroup]
10.0.0.[01:90]
ну я таки сделал, но как теперь hostname задавать? думал както можно в перменную хоста засунуть
источник

AK

Anton K in Ansible
ну смысле как задать hostname с порядковым номером*
источник

U

Ugly in Ansible
jinja
источник

U

Ugly in Ansible
если файлик сгенерировать надо, думаю лучше неё врядли что-то подойдет в таком случае
источник

U

Ugly in Ansible
хотя вроде бы ещё есть динамический инвентори, но я с ним не работал особо
источник

AK

Anton K in Ansible
ну вот пока тоже склоняюсь к генерации файла либо в hosts нагенерировать записей, либо сразу в inventory
источник

U

Ugly in Ansible
а у тебя доступ к машинам есть? может через set_fact пройтись. но выглядит как костыль
источник

AK

Anton K in Ansible
да есть учетные данные нормально указываются т.к. одинаквые для всех
источник

AK

Anton K in Ansible
костыль но может сработать! спасибо)
источник

L

Lamobot in Ansible
Пока вы тут пишите и спрашиваете, можно было бы всем тремястам хостам проставить в host_vars нужную переменную.
Но если хотите нагенерить, то вот вам jinja:
{{ (groups[hosts_group_name]|sort).index(inventory_hostname) }}
источник

AK

Anton K in Ansible
https://github.com/geerlingguy/ansible-for-devops/blob/master/dynamic-inventory/custom/inventory.py
во нашёл то что нужно. тут точно что хочешь можно сделать
источник

SS

Sasha Sorochynskyi in Ansible
Ребят, подскажите, как правильно в этом случае использовать loop?

 tasks:
 - include_vars: vhosts.yml
   
  lineinfile:
     path: /etc/nginx/vhosts/front.conf
     regexp: '{{ item.From }}'
     line: '{{ item.To }}'
   with_items:
     - { From: 'ssl_certificate /etc/certs//fullchain.pem;', To: 'ssl_certificate /etc/certs/{{ item.vhost }}/fullchain.pem;'}
     - { From: 'ssl_certificate_key /etc/certs//privkey.pem', To: 'ssl_certificate_key /etc/certs/{{ item.vhost }}/privkey.pem'}
   loop:
     - "{{ vhost }}"
источник

TG

Timur Gadiev in Ansible
Sasha Sorochynskyi
Ребят, подскажите, как правильно в этом случае использовать loop?

 tasks:
 - include_vars: vhosts.yml
   
  lineinfile:
     path: /etc/nginx/vhosts/front.conf
     regexp: '{{ item.From }}'
     line: '{{ item.To }}'
   with_items:
     - { From: 'ssl_certificate /etc/certs//fullchain.pem;', To: 'ssl_certificate /etc/certs/{{ item.vhost }}/fullchain.pem;'}
     - { From: 'ssl_certificate_key /etc/certs//privkey.pem', To: 'ssl_certificate_key /etc/certs/{{ item.vhost }}/privkey.pem'}
   loop:
     - "{{ vhost }}"
Во-первых, юзать можно либо конструкцию вида with_*, либо loop. Это практически синонимы. В одном таске две конструкции цикла совмещаться не могут.
источник

TG

Timur Gadiev in Ansible
Во-вторых, лучше сразу опишите исходную задачу
источник

TG

Timur Gadiev in Ansible
Скорее всего, никакой цикл такого рода вам не нужен.
источник

SS

Sasha Sorochynskyi in Ansible
Timur Gadiev
Скорее всего, никакой цикл такого рода вам не нужен.
есть destin_file (шаблон nginx).
в отдельном файле vhosts.yml есть список хостов.
нужно менять несколько строк (в даном случае путь к ssl-сертификату), подставляя директорию:
/etc/certs/{{ item.vhost }}/fullchain.pem
источник

TG

Timur Gadiev in Ansible
Sasha Sorochynskyi
есть destin_file (шаблон nginx).
в отдельном файле vhosts.yml есть список хостов.
нужно менять несколько строк (в даном случае путь к ssl-сертификату), подставляя директорию:
/etc/certs/{{ item.vhost }}/fullchain.pem
Это понятно. Но это не задача, а вариант ее решения. А исходная задача как выглядит?
источник

SS

Sasha Sorochynskyi in Ansible
Timur Gadiev
Это понятно. Но это не задача, а вариант ее решения. А исходная задача как выглядит?
создать на фронт-сервере конфиги для несколько десятков vhosts. шаблон у всех один, нужно менять только путь к директории сертификата и собственно сам server_name.
источник

TG

Timur Gadiev in Ansible
Sasha Sorochynskyi
создать на фронт-сервере конфиги для несколько десятков vhosts. шаблон у всех один, нужно менять только путь к директории сертификата и собственно сам server_name.
Тогда просто используйте template для генерации конфига целиком. Данные для шаблона можно брать откуда угодно - в том числе из файла vhosts
источник

TG

Timur Gadiev in Ansible
Менять в цикле строки в готовом конфиге не нужно. Это антипаттерн.
источник