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 ответов

62 просмотра

Лучше в плэйбуке использовать переменную, значение которой определять из 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-️ Автор вопроса

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта