@AleksandrMalinovskiy

Как в плэйбуке ansible присвоить переменной значение команды hostname? И как модуль blockinfile заставить создавать новые строки каждый раз?

Добрый день.
Вопрос 1
Необходимо присвоить переменной значение команды hostname т.е. мне надо что бы была переменная взятая с сервера и используемая далее в плэйбуке.
- name: Print all available facts
debug:
var: ansible_facts.hostname
register: hostname
- debug:
msg: "{{ hostname }}"

- name: Добавление job в prometheus.yml
blockinfile:
path: /home/prometheus_stack/prometheus/prometheus.yml
block: |
##новый сервер
- job_name: {{ hostname }}
scrape_interval: 5s
static_configs:
- targets: [{{ ip_node }}]

так получается job_name: {'ansible_facts.hostname': 'monitoring', 'failed': False, 'changed': False}
а хотелось бы просто monitoring'

Вопрос 2
- name: Добавление job в prometheus.yml
blockinfile:
path: /home/prometheus_stack/prometheus/prometheus.yml
block: |
##новый сервер
- job_name: {{ hostname }}
scrape_interval: 5s
static_configs:
- targets: [{{ ip_node }}]

эта часть плэйбука создает строки и при повторном исполнении плэйбука если строка поменялась он её правит а надо что бы дописывал новые как это сделать?
  • Вопрос задан
  • 85 просмотров
Решения вопроса 1
@MaxKozlov
1.
Вы можете просто использовать ansible_hostname
Оно из фактов присваивается
2.
При дописывании новых у вас файл будет разрастаться. Это нарушает принцип "при повторном запуске уже настроенного ничего не меняется"
Вы уверены что вам нужно именно это поведение?

по хорошему, прометеусу джоб править не надо, надо править только хосты, подключенные к джобу
вам просто надо вынести хосты в file_sd и обновлять их содержимое. там можно использовать маски и держать по файлу на хост, например, или на группу хостов, куда и дописывать ваше
Его тогда и рестартовать не придётся. прометеус сам изменения подхватит
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы