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

54 просмотра

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

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

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

30500 за редактор? )
Владимир
47
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Ребят в СИ можно реализовать ООП?
Николай
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
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
1
Он в одиночку это дело запилил или была какая-то команда?
Aquinary
12
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Всем привет, нужна как никогда, нужна помощь с IO в загрузчике. Пишу в code16 после установки сегментных регистров, пишу вывод символа. Пробовал 2 варианта: # 1 mov $0x0E, %a...
Shadow Akira
14
Карта сайта