После обновления пакетов salt-master c версии 3006 до 3007.0, salt-api при попытке отправки ему post-запроса авторизации выдает traceback. Система ALT Server 10.2 (Mendelevium) ================================================================================ Пример запроса POST: https://salt-api:8999/login payload: { "client": "local", "eauth": "pam", "username": "user", "password": "password" } ================================================================================ Traceback: { "status": 500, "return": "Traceback (most recent call last): File \"/usr/lib/python3/site-packages/salt/netapi/rest_cherrypy/app.py\", line 860, in hypermedia_handler ret = cherrypy.serving.request._hypermedia_inner_handler(*args, **kwargs) File \"/usr/lib/python3/site-packages/cherrypy/_cpdispatch.py\", line 54, in __call__ return self.callable(*self.args, **self.kwargs) File \"/usr/lib/python3/site-packages/salt/netapi/rest_cherrypy/app.py\", line 1886, in POST token = self.auth.mk_token(creds) File \"/usr/lib/python3/site-packages/salt/auth/__init__.py\", line 594, in mk_token tdata = self._send_token_request(load) File \"/usr/lib/python3/site-packages/salt/auth/__init__.py\", line 523, in _send_token_request\n with salt.channel.client.ReqChannel.factory( File \"/usr/lib/python3/site-packages/salt/channel/client.py\", line 55, in factory return SyncWrapper( File \"/usr/lib/python3/site-packages/salt/utils/asynchronous.py\", line 77, in __init__ self.obj = cls(*args, **kwargs) File \"/usr/lib/python3/site-packages/salt/channel/client.py\", line 137, in factory transport = salt.transport.request_client(opts, io_loop=io_loop) File \"/usr/lib/python3/site-packages/salt/transport/base.py\", line 59, in request_client return salt.transport.zeromq.RequestClient(opts, io_loop=io_loop) File \"/usr/lib/python3/site-packages/salt/transport/zeromq.py\", line 1082, in __init__ self.sending = asyncio.Lock() File \"/usr/lib64/python3.9/asyncio/locks.py\", line 81, in __init__ self._loop = events.get_event_loop() File \"/usr/lib64/python3.9/asyncio/events.py\", line 642, in get_event_loop raise RuntimeError('There is no current event loop in thread %r.' RuntimeError: There is no current event loop in thread 'CP Server Thread-5'. "}
Доброго времени суток! Прошу предоставить дополнительную информацию: 1) Шаги по предварительной настройке (если были); 2) Были ли доустановлены какие-либо пакеты ещё; 3) Подробные шаги воспроизведения; 4) Были ли проблемы при выполнении других запросов.
(Ответ для Tatyana Gagina на комментарий #1) > Доброго времени суток! > Прошу предоставить дополнительную информацию: > 1) Шаги по предварительной настройке (если были); > 2) Были ли доустановлены какие-либо пакеты ещё; > 3) Подробные шаги воспроизведения; > 4) Были ли проблемы при выполнении других запросов. Здравствуйте! 1) Настравиался только salt api добавлением в папку /etc/salt/master.d 2х конфигурационных файлов с минимальными настройками апи (salt-api.conf и eauth.conf) 2) Дополнительно пакетов не было установлено, проблема так же проявляется на новой «чистой» системе, с полным обновлением всех пакетов и ядра 3) шаги воспроизведения: 1. Установить salt-master, salt-api из стандартного репозитория со всеми зависимостями 2. Произвести настройки salt-api согласно инструкции на офф сайте 3. Создать post запрос с помощью postman с вышеуказанными параметрами 4) Запросы не требующие токена доступа выполняются без ошибок Проблема решается заменой папки /etc/usr/lib64/python3.9/asyncio на аналогичную папку с другой машины с ОС Ubuntu версии 24.04 и python версии 3.10(Ответ для Tatyana Gagina на комментарий #1) > Доброго времени суток! > Прошу предоставить дополнительную информацию: > 1) Шаги по предварительной настройке (если были); > 2) Были ли доустановлены какие-либо пакеты ещё; > 3) Подробные шаги воспроизведения; > 4) Были ли проблемы при выполнении других запросов. Здравствуйте! 1) Настравиался только salt api добавлением в папку /etc/salt/master.d 2х конфигурационных файлов с минимальными настройками апи 2) Дополнительно пакетов не было установлено, проблема так же проявляется на новой «чистой» системе, с полным обновлением всех пакетов и ядра 3) шаги воспроизведения: 1. Установить salt-master, salt-api из стандартного репозитория со всеми зависимостями, создать пользователя “user” с паролем ”password” для использования salt-api, прописать в соответствии с инструкцией на офсайте разрешения пользователю в файле /etc/salt/master.d/eauth.conf, прописать базовые сетевые настройки salt-api в /etc/salt/master.d/salt-api.conf (порт в примере - 8999) 2. Создать post запрос с помощью postman 4) Запросы не требующие получения токена доступа выполняются без ошибок Проблема решается заменой папки /etc/usr/lib64/python3.9/asyncio на аналогичную папку с другой машины с ОС Ubuntu версии 24.04 и/или установкой python версии 3.10 (которой нет в публичных официальных репозиториях Alt Server)
В качестве salt-master стенд: P10 ALT SERVER x86-64 Поведение несколько другое. Установлены пакеты salt-master salt-api Версии: (на архивном репозитории) python3-3.9.18-alt1 salt-master-3006.4-alt0.p10.1 salt-api-3006.4-alt0.p10.1 (на текущем репозитории) python3-3.9.18-alt1 salt-api-3007.0-alt0.p10.1 salt-master-3007.0-alt0.p10.1 Добавлены 2 конфиг файла: 1) /etc/salt/master.d/salt-api.conf Для этого файла ключ был создан так: openssl genpkey -algorithm RSA -out /etc/pki/tls/private/key.key -aes256 Запрос на подписание сертификата создан так: openssl req -new -key /etc/pki/tls/private/key.key -out /etc/pki/tls/certs/key.csr и самоподписанного сертификата: openssl x509 -req -days 365 -in /etc/pki/tls/certs/key.csr -signkey /etc/pki/tls/private/key.key -out /etc/pki/tls/certs/key.crt Настроена конфигурация Salt API в /etc/salt/master.d/salt-api.conf rest_cherrypy: port: 8999 host: 10.88.*.* (ip сервера) ssl_crt: /etc/pki/tls/certs/key.crt (здесь указать свой серт) ssl_key: /etc/pki/tls/private/key.key (здесь указать свой ключ) 2) /etc/salt/master.d/eauth.conf external_auth: pam: test: - .* - '@wheel' - '@runner' - '@jobs' Здесь пользователь test c установленным паролем (password). Перезапущен Salt Master, чтобы изменения вступили в силу: # systemctl restart salt-master После рестарта # ps aux | grep salt _avahi 2361 0.1 0.1 8364 4860 ? Ss 11:18 0:01 avahi-daemon: running [salt-2.local] root 4787 86.5 2.1 76856 64892 ? Rs 11:33 0:01 /usr/bin/python3 /usr/bin/salt-master root 4857 0.0 0.0 6060 2040 pts/0 S+ 11:33 0:00 grep --color=auto salt Проверено, сервисы запущены: # systemctl status salt-master # systemctl status salt-api active (running) Сервер пингуется: ping 10.88.*.* PING 10.88.*.* (10.88.*.*) 56(84) bytes of data. 64 bytes from 10.88.*.*: icmp_seq=1 ttl=64 time=0.073 ms 64 bytes from 10.88.*.*: icmp_seq=2 ttl=64 time=0.072 ms ......... Выполнен POST запрос: curl -X POST http://целевой_ip_сервера:8999/login -H "Content-Type: application/json" -d '{ "client": "local", "eauth": "pam", "username": "user", "password": "password" }' Проверялось также без использования сертификата (с параметром --insecure): curl -X POST https://10.88.*.*:8999/login -H "Content-Type: application/json" -d '{ "client": "local", "eauth": "pam", "username": "user", "password": "password" }' --insecure Результат: запрос не выполнен. Причина: порт 8999 не прослушивается, возможно, блокируется службами. Доступность порта проверена так: telnet 10.88.*.* 8999 firewall отключен. curl: (7) Failed to connect to 10.88.*.* port 8999 after 0 ms: Couldn't connect to server Детали: поведение на архивном репозитории (с версией salt-master-3006.4-alt0.p10.1 и на текущей версии репозитория с версией salt-api-3007.0-alt0.p10.1) Рестарт сервисов salt-api/salt-master не помог, как и перенастройка сервера: # systemctl restart salt-api # systemctl restart salt-master После обновления salt-master c версии 3006 до 3007 аналогично. Детали: # journalctl -u salt-api июн 14 11:27:13 salt systemd[1]: Starting The Salt API... июн 14 11:27:14 salt systemd[1]: Started The Salt API. июн 14 11:27:25 salt systemd[1]: salt-api.service: Deactivated successfully. июн 14 11:27:25 salt systemd[1]: salt-api.service: Consumed 1.357s CPU time. -- Boot 7cf391fe8b304928993ce257c2ff02c3 -- июн 18 13:27:03 salt systemd[1]: Starting The Salt API... июн 18 13:27:03 salt systemd[1]: Started The Salt API. июн 18 13:27:05 salt salt-api[6472]: Enter PEM pass phrase: июн 18 13:27:05 salt salt-api[6472]: [ERROR ] [18/Jun/2024:13:27:05] ENGINE Error in 'start' listener <bound method Server.start of <cherrypy._cpserver.S> июн 18 13:27:05 salt salt-api[6472]: Traceback (most recent call last): июн 18 13:27:05 salt salt-api[6472]: File "/usr/lib/python3/site-packages/cherrypy/process/wspbus.py", line 230, in publish июн 18 13:27:05 salt salt-api[6472]: output.append(listener(*args, **kwargs)) июн 18 13:27:05 salt salt-api[6472]: File "/usr/lib/python3/site-packages/cherrypy/_cpserver.py", line 179, in start июн 18 13:27:05 salt salt-api[6472]: self.httpserver, self.bind_addr = self.httpserver_from_self() июн 18 13:27:05 salt salt-api[6472]: File "/usr/lib/python3/site-packages/cherrypy/_cpserver.py", line 170, in httpserver_from_self июн 18 13:27:05 salt salt-api[6472]: httpserver = _cpwsgi_server.CPWSGIServer(self) июн 18 13:27:05 salt salt-api[6472]: File "/usr/lib/python3/site-packages/cherrypy/_cpwsgi_server.py", line 99, in __init__ июн 18 13:27:05 salt salt-api[6472]: self.ssl_adapter = adapter_class( июн 18 13:27:05 salt salt-api[6472]: File "/usr/lib/python3/site-packages/cheroot/ssl/builtin.py", line 226, in __init__ июн 18 13:27:05 salt salt-api[6472]: self.context.load_cert_chain(certificate, private_key) июн 18 13:27:05 salt salt-api[6472]: OSError: [Errno 22] Invalid argument июн 18 13:27:05 salt salt-api[6472]: [ERROR ] [18/Jun/2024:13:27:05] ENGINE Shutting down due to error in start listener: июн 18 13:27:05 salt salt-api[6472]: Traceback (most recent call last): # systemctl status salt-api ● salt-api.service - The Salt API Loaded: loaded (/lib/systemd/system/salt-api.service; enabled; vendor preset: disabled) Active: active (running) since Tue 2024-06-18 13:27:03 MSK; 3min 55s ago Docs: man:salt-api(1) https://docs.saltproject.io/en/latest/contents.html Main PID: 6466 (salt-api) Tasks: 2 (limit: 3545) Memory: 49.1M CPU: 24.512s CGroup: /system.slice/salt-api.service └─ 6466 /usr/bin/python3 /usr/bin/salt-api июн 18 13:30:55 salt salt-api[6692]: File "/usr/lib/python3/site-packages/cheroot/ssl/builtin.py", line 226, in __init__ июн 18 13:30:55 salt salt-api[6692]: self.context.load_cert_chain(certificate, private_key) июн 18 13:30:55 salt salt-api[6692]: OSError: [Errno 22] Invalid argument июн 18 13:30:55 salt salt-api[6692]: [ERROR ] [18/Jun/2024:13:30:55] ENGINE Shutting down due to error in start listener: июн 18 13:30:55 salt salt-api[6692]: Traceback (most recent call last): июн 18 13:30:55 salt salt-api[6692]: File "/usr/lib/python3/site-packages/cherrypy/process/wspbus.py", line 268, in start июн 18 13:30:55 salt salt-api[6692]: self.publish('start') На Sisyphus аналогично (salt-master-3007.0-alt1). _________ У пользователя: Ошибка с кодом 500 ("status": 500) указывают на внутренние проблемы на сервере (по необходимости, выслать вывод journalctl -u salt-api -xe).
Добрый день, Татьяна! В вашем запросе некорректно указан пользователь. Так как в конфиге /etc/salt/master.d/eauth.conf external_auth: pam: test: - .* - '@wheel' - '@runner' - '@jobs' указан пользователь 'test', то запрос curl необходимо выполнять из-под пользователя test, а также этот же пользователь должен быть создан в системе с помощью useradd Также, если при выполнении POST-запроса не используется https, то в конфигурации /etc/salt/master.d/salt-api.conf необходимо попробовать исключить ssl rest_cherrypy: port: 8999 host: 10.88.*.* (ip сервера) ssl_crt: /etc/pki/tls/certs/key.crt (здесь указать свой серт) ssl_key: /etc/pki/tls/private/key.key (здесь указать свой ключ) disable_ssl: True Само подключение проверено и работает на версиях 3006.4 и 3007.0 , не работает авторизация на версии 3007.0 Причину неработоспособности я указал в Комментарии #2
Прошу проверить на версии 3007.1 (p11), не смог воспроизвести.
(Ответ для Andrey Cherepanov на комментарий #5) > Прошу проверить на версии 3007.1 (p11) Работает.
(Ответ для Alexander Makeenkov на комментарий #6) > (Ответ для Andrey Cherepanov на комментарий #5) > > Прошу проверить на версии 3007.1 (p11) > > Работает. Тогда надо закрыть.
Ошибка актуальна для версий пакетов: salt-api-3007.0-alt0 salt-master-3007.0-alt0 для стенда Alt Server 10.2 Обновление до версии 3007.1 ( задание #364543) не фиксит данную ошибку