Alexandr
Alexandr
вообще странно как то. у меня в group_vars для хоста несколько файлов переменными. а тянется только один (.
from ansible.parsing.dataloader import DataLoader
from ansible.vars.manager import VariableManager
from ansible.inventory.manager import InventoryManager
loader = DataLoader()
inventory = InventoryManager(loader=loader, sources='inventory/localhost')
variable_manager = VariableManager(loader=loader, inventory=inventory)
all_groups = inventory.get_groups_dict()
test_node = all_groups['test_srv']
for t in test_node:
vars = variable_manager.get_vars(host=inventory.get_host(hostname=t))
for v in vars['ps']['test_srv']['port']:
print(v)
Alexandr
в inventory/group_vars/ лежит несколько файлов. а читается только один(
Sergey
Alexandr
Alexandr
в group_vars лежет несколько файлов с
Alexandr
таким содержанием ps:
test:
host_srv:
kafka:
и дальше куча секций разных
Sergey
https://t.me/pro_ansible/164393
^^^
Sergey
Alexandr
Alexandr
ага((((
а вот теперь не пойму как вытащить значение их {{ variable }}
Ivan
Добрый вечер, коллеги. настраиваю ансибл в новом окружении (на центос 8)
столкнулся с проблемой авторизации ансибла на целевых серваках.
имеется такая таска:
tasks:
- name: install vim
yum: name=vim state=present
become: yes
become_method: sudo
become_user: user
получаю такую ошибку:
fatal: [kube1.home]: FAILED! => {"changed": false, "msg": "This command has to be run under the root user.", "results": []}
fatal: [kube2.home]: FAILED! => {"changed": false, "msg": "This command has to be run under the root user.", "results": []}
На обоих серваках пользователь user входит в группу wheel.
на первом серваке прописано даже в sudoers: (что никак не влияет на ошибку)
user ALL=(ALL) NOPASSWD: ALL
пускать ансибл под рутом очень не хочется.
подскажите, есть ли способ заставить ансибл всё таки использовать пользователя user?
Radik
Damir
Ivan
На самом клиенте из под пользователя yam install работает?
нет. он требует повышения прав
а вот sudo yum install работает:
[user@kube1 ~]$ yum install vim
Error: This command has to be run under the root user.
[user@kube1 ~]$ sudo yum install vim
Last metadata expiration check: 1:01:08 ago on Sun 18 Oct 2020 03:06:05 PM EDT.
Package vim-enhanced-2:8.0.1763-13.el8.x86_64 is already installed.
Dependencies resolved.
Nothing to do.
Complete!
Lamobot
Ivan
Так вам нужно не become_user: user, а просто ansible_user: user для этой таски сделать
не, такая конструкция не работает. ругается на синтаксис:
ERROR! conflicting action statements: yum, ansible_user
The error appears to be in '/home/user/k8s-ansible/playbook/playbook.yml': line 3, column 7, but may
be elsewhere in the file depending on the exact syntax problem.
The offending line appears to be:
tasks:
- name: install vim
^ here
Lamobot
ansible_user можно выставить для connection плагина, а не для таски
Lamobot
https://docs.ansible.com/ansible/latest/reference_appendices/special_variables.html#connection-variables
Lamobot
Есть ещё remote_user
Lamobot
Вы заходите на тачку под каким юзером? user или ещё каким-то?
Radik
или просто запусти с припиской -u user
Ivan
Lamobot
become: yes
become_user: root
become_method: sudo
Lamobot
Тогда так должно быть
Ivan
или просто запусти с припиской -u user
уже интереснее, но пока ещё неуспешно:
ansible-playbook playbook/playbook.yml -i inventory/k8s.ini -u user
PLAY [kube] ********************************************************************************************
TASK [Gathering Facts] *********************************************************************************
ok: [kube2.home]
ok: [kube1.home]
TASK [install vim] *************************************************************************************
fatal: [kube2.home]: FAILED! => {"msg": "Missing sudo password"}
fatal: [kube1.home]: FAILED! => {"msg": "Missing sudo password"}
Ivan
Radik
точно по дефолту под user ансибл коннектится?)
а не под той, под который ты на своем компе сидишь)
Ivan
Radik
если нигде не указывал
в инвентори, в ansible.cfg, то под твоей учётной ходит
Lamobot
Radik
Radik
или с become
Ivan
дело было как - на всех серваках есть пользак user. именно под ним я запукаю ансибл на серваке с ансиблом.
именно под этим пользователем я делал ssh-copy-id с сервака ансибл на остальные серваки
Ivan
Запусти c --ask-become-password и никакого не вводи
ansible-playbook playbook/playbook.yml -i inventory/k8s.ini --ask-become-password
usage: ansible-playbook [-h] [--version] [-v] [-k]
[--private-key PRIVATE_KEY_FILE] [-u REMOTE_USER]
[--list-tags] [--step] [--start-at-task START_AT_TASK]
playbook [playbook ...]
ansible-playbook: error: unrecognized arguments: --ask-become-password
Lamobot
Ivan
--ask-become-pass :)
прошло
но при этом у меня запросил пароль
ansible-playbook playbook/playbook.yml -i inventory/k8s.ini --ask-become-pass
BECOME password:
PLAY [kube] ********************************************************************************************
TASK [Gathering Facts] *********************************************************************************
ok: [kube1.home]
ok: [kube2.home]
TASK [install vim] *************************************************************************************
ok: [kube1.home]
changed: [kube2.home]
PLAY RECAP *********************************************************************************************
kube1.home : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
kube2.home : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Ivan
и это при том, что на втором серваке я не прописывал sudoers
Ivan
собственно, как писал выше, я там прописал
user ALL=(ALL) NOPASSWD: ALL
и еще user входит в группу wheel
Ivan
по идее этого должно быть достаточно
Radik
Radik
так и есть скорее всего
Ivan
в смысле? удалить его из wheel ?
Radik
покажи sudoers
Lamobot
Ivan
покажи sudoers
root ALL=(ALL) ALL
user ALL=(ALL) NOPASSWD: ALL
%wheel ALL=(ALL) ALL
Radik
Lamobot
user запись в конец списка
Radik
или удали user
а для wheel NOPASSWD
Ivan
спасибо 🙏
Ivan
проблема решена, причина найдена
Anton
Вот nopassword для wheel лучше не делать.
raven428
Привет, чатик. Если в одном task указываю установить модуль для python, который используется в следующем task, последний его не видит. В принципе понятно почему, но что нужно дёрнуть, чтобы увидел? Помогает вызов reboot:, но это как-то слишком.
Нагуглил ещё meta: reset_connection, но тогда всё исполнение прекращается и непонятно как потом вернуть соединение без ручного перезапуска плейбука. Ещё пробовал устанавливать через pip вместо пакетов ОС и перемещать установку в pre_tasks - результат тот же. Больше ничего не нагуглилось.
tutunak
tutunak
raven428
George
А можно я побухчу по поводу 2.10? Что они с документацией сотворили? Ничерта же теперь не найти.
Lamobot
Lamobot
Sebor▂▅▇█▓▒░
Alex
все для удобства пользователей
Sergey
George
Я ж сказал, "побухтеть". У нас пока что идея "пересидеть 2.10" вообще. Т.е. к 2.10 готовиться (всякие там mode и deprecation), но переходить сразу на 2.11, когда они все безумия миграций в коллекции разрулят (включая те, о которых мы пока не знаем).
Andrey
вопрос: есть тут люди с опытом управления swarm стеками и сервисами из ansible? насколько модули поддерживаемые?
Andrey
ха! я обнаружил что сам задавал похожий вопрос 21 апреля и с тех пор как-то отвечающих не прибавилось...
Andrey
придётся разбираться самому
Nick
Fire
Наши роли все работают...
Fire
Даже переписывать не пришлось.
Fire
А, у нас нет AWX.
Andrey
я вот из-за awx как раз и не понимаю. вроде там еще нет 2.10...
Станислав
Салют народы.
Такой вопрос: есть хосты, у них в инвентори прописаны ansible_user и ansible_ssh_private_key_file
Но такая УЗ с таким ключом еще не на всех хостах создана, но ее надо будет использовать в дальнейшем.
Как добавить таску на создание такой УЗ использую root и его ключ.
Станислав
так и делаю. но как ему другие УЗ для таски подсунуть