169 похожих чатов

Всем привет! Хочу поставить node_exporter для Прометея и Графаны в

свои VPS'ки.

Нашел пару ролей под эту тему: geerlingguy.node_exporter и cloudalchemy.node_exporter.

Мой ямлик, как пример:

---
- name: Install node_exporter
hosts: local
vars_files:
- "{{ inventory_dir }}/vars/vars.yaml"
become: true

roles:
- role: geerlingguy.node_exporter


Как видите, я храню переменные по пути {{ inventory_dir }}/vars/vars.yaml. Файл зашифрован и при запуске любого плейбука расшифровывается с помощью пароля в .vault_password.txt, так что переменные точно доступны любой таске в любом плейбуке.

Но есть проблема: в обоих ролях, отмеченных выше, выходит ошибка на одном и том же (у обоих ролей) этапе чтения чего-то с Гитхаба:


TASK [geerlingguy.node_exporter : Configure latest version] **************************************
task path: /home/<SOME USER>/.ansible/roles/geerlingguy.node_exporter/tasks/main.yml:8
Read vars_file '{{ inventory_dir }}/vars/vars.yaml'
included: /home/<SOME USER>/.ansible/roles/geerlingguy.node_exporter/tasks/config-version.yaml for <SOME IP ADDRESS>
skipping vars_file '{{ inventory_dir }}/vars/vars.yaml' due to an undefined variable
Read vars_file '{{ inventory_dir }}/vars/vars.yaml'
skipping vars_file '{{ inventory_dir }}/vars/vars.yaml' due to an undefined variable

TASK [geerlingguy.node_exporter : Determine latest GitHub release (local)] ***********************
task path: /home/<SOME USER>/.ansible/roles/geerlingguy.node_exporter/tasks/config-version.yaml:2
fatal: [<SOME IP ADDRESS> -> localhost]: FAILED! => {
"msg": "'root_password' is undefined"
}


или


TASK [cloudalchemy.node_exporter : Get checksum list from github] **************************************
task path: /home/kenyawest/.ansible/roles/cloudalchemy.node_exporter/tasks/preflight.yml:99
fatal: [192.168.31.203 -> localhost]: FAILED! => {
"msg": "'root_password' is undefined"
}


Зашел, блин, в этот preflight.yml, на который ссылается ошибка:


- block:
- name: Get checksum list from github
set_fact:
_checksums: "{{ lookup('url', 'https://github.com/prometheus/node_exporter/releases/download/v' + node_exporter_version + '/sha256sums.txt', wantlist=True) | list }}"
run_once: true

- name: "Get checksum for {{ go_arch }} architecture"
set_fact:
node_exporter_checksum: "{{ item.split(' ')[0] }}"
with_items: "{{ _checksums }}"
when:
- "('linux-' + go_arch + '.tar.gz') in item"
delegate_to: localhost
when: node_exporter_binary_local_dir | length == 0


и что, где там использование переменной root_password??? Она вообще-то у меня определена! И зачем она понадобилась этой роли тогда?

В чём вообще проблема?

Если что, issue создал.

5 ответов

24 просмотра

Лучше в плэйбуке использовать переменную, значение которой определять из vault encrypted file. Ну и убедитесь что пароль от vault вы передаёте каким-то образом в плейбук.

Kenya-West-️ Автор вопроса
Dennis C
Лучше в плэйбуке использовать переменную, значение...

Вроде бы у меня всё как вы сказали. Переменные в vars.yaml (это видно из первого отрывка кода), зашифрованные. Расшифровываются из .vault_password.txt при запуске любого плейбука. Продебажил - переменная root_password, которая у меня в vars.yaml объявлена, которая действительно есть во время выполнения плейбука и которая почему-то так нужна ролям geerlingguy.node_exporter и cloudalchemy.node_exporter, действительно существует, но почему внутрь ролей не прокидывается. -vvv не помогает. Собственно, логи из моего сообщения выше сделаны из тройного вербоза.

Kenya-West ️
Вроде бы у меня всё как вы сказали. Переменные в v...

А зачем вообще переменная root_password? в роли она не используется и это не "волшебная" переменная. Сделайте минимальный тестовый пример развертывания на тестовый хост. Возможно на упрощённом примере старнет понятнее где проблема. Да и показать ваш vars.yml будет не жалко тогда. Да там и не должно быть ничего роль минимум парамтетров обрабатывает.

Kenya-West-️ Автор вопроса
Mikhail
А зачем вообще переменная root_password? в роли он...

Она используется в hosts.ini в поле become_pass

Kenya-West-️ Автор вопроса

Похожие вопросы

Обсуждают сегодня

@MrMiscipitlick А можешь макрос написать, который будет вычислять смещение относительно переданных меток? Просто .label1-.label2, и вернуть значение.
КТ315
35
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
А еще в перле можно уже @arr1 + @arr2?
Sergei Zhmylove
53
Подобного рода ;Следующие три строки это директивы ассемблера, ;которые можно не задавать, т.к.работаем в Visual Studio. ;Символ ";" - это начало однострочного комментария ...
Егор Анелькин
3
Привет всем. появился вопрос. Разрабатываю сайт, в данный момент он запущен. Хостинг beget. Добавляю на сайт яндекс метрику с помощью полей client-settings (взято отсюда http...
Andrew
2
Подскажите, где смотреть результат выполнения программы? Код: ;.686 ;Система команд процессора 686 ;.MODEL FLAT,stdcall ;Модель памяти плоская, станда...
Егор Анелькин
5
еще вопрос, допустим мы создадим char массив из 10 элементов и присвоим ему через сканф 10 символов. и выведем все символы. Хотел спросить последний элемент /0 будет включать...
Anthem
11
открыть папку в проводнике: 1 - ShellExecute 2 - ExecuteProcess 3 - OpenDocument что лучше выбрать?
Alexey Kulakov
12
Где в Астане можно купить мясо для шашлыков?
Dancing Іңұқәһүғө
21
;.686 ;Система команд процессора 686 ;.MODEL FLAT,stdcall ;Модель памяти плоская, стандартный ;вызов процедуры ;option casemap:no...
Егор Анелькин
1
Карта сайта