Я использую rundeck (установленный на сервере Ubuntu 22.04) для запуска команд на нескольких удаленных узлах.
К сожалению, запланированные задания больше не работают на узлах, которые были обновлены с Ubuntu 22.04 до Ubuntu 24.04
Я проверил, просто запустил простую команду «uname -a» на удаленном узле Ubuntu 24.04 и получил следующую ошибку:
An exception occurred during task execution. To see the full traceback, use -vvv. The error was: ModuleNotFoundError: No module named 'ansible.module_utils.six.moves' node01 | FAILED! => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python3"
},
"changed": false,
"module_stderr": "Shared connection to node01 closed.\r\n",
"module_stdout": "Traceback (most recent call last):\r\n File \"/root/.ansible/tmp/ansible-tmp-1727773197.2698286-5555-256622891592982/AnsiballZ_command.py\", line 102, in \r\n _ansiballz_main()\r\n File \"/root/.ansible/tmp/ansible-tmp-1727773197.2698286-5555-256622891592982/AnsiballZ_command.py\", line 94, in _ansiballz_main\r\n invoke_module(zipped_mod, temp_path, ANSIBALLZ_PARAMS)\r\n File \"/root/.ansible/tmp/ansible-tmp-1727773197.2698286-5555-256622891592982/AnsiballZ_command.py\", line 37, in invoke_module\r\n from ansible.module_utils import basic\r\n File \"/tmp/ansible_ansible.legacy.command_payload_11u5rz__/ansible_ansible.legacy.command_payload.zip/ansible/module_utils/basic.py\", line 176, in \r\nModuleNotFoundError: No module named 'ansible.module_utils.six.moves'\r\n",
"msg": "MODULE FAILURE\nSee stdout/stderr for the exact error",
"rc": 1 } Failed: AnsibleError: ERROR: Ansible execution returned with non zero code. Execution failed: 1194949 in project Systems: [Workflow result: , step failures: {1=Dispatch failed on 1 nodes: [node01: AnsibleError: ERROR: Ansible execution returned with non zero code. + {dataContext=MultiDataContextImpl(map={}, base=null)} ]}, Node failures: {node01=[AnsibleError: ERROR: Ansible execution returned with non zero code. + {dataContext=MultiDataContextImpl(map={}, base=null)} ]}, status: failed]
На сервере rundeck работают Rundeck версии 5.6.0, Ansible версии 2.10.8 и Python 3.10.12.
На сервере node01 работает Python 3.12.3
p>
Обновление:
Покопавшись в журналах, я обнаружил эту проблему: github.com/rundeck/rundeck/issues/9278. Это именно та проблема, с которой я столкнулся. Из-за этой ошибки узлы не обновляют свои коэффициенты, и Rundeck загружает кэшированные данные модели.
Под выводом /ver/log/rundeck/service.log
ERROR: getNodeList: [ansible-inventory, --inventory-file=/var/lib/rundeck/suansible01/inventory/hosts, --list, -y, -l, ifs_gui:ifs_job:archive:newspilot:elk:ungrouped:cloudsync:docker:rundeck]
[2024-10-01T19:45:00,458] ERROR resources.ExceptionCatchingResourceModelSource - [ResourceModelSource: 1.source (com.batix.rundeck.plugins.AnsibleResourceModelSourceFactory), project: Systems]
java.lang.NullPointerException: null
at java.io.StringReader.(StringReader.java:50) ~[?:?]
at org.yaml.snakeyaml.reader.StreamReader.(StreamReader.java:57) ~[snakeyaml-2.2.jar!/:?]
at org.yaml.snakeyaml.Yaml.load(Yaml.java:422) ~[snakeyaml-2.2.jar!/:?]
at com.rundeck.plugins.ansible.plugin.AnsibleResourceModelSource.ansibleInventoryList(AnsibleResourceModelSource.java:704) ~[?:?]
at com.rundeck.plugins.ansible.plugin.AnsibleResourceModelSource.getNodes(AnsibleResourceModelSource.java:403) ~[?:?]
at com.dtolabs.rundeck.core.resources.ExceptionCatchingResourceModelSource.getNodes(ExceptionCatchingResourceModelSource.java:58) [rundeck-core-5.5.0-20240808.jar!/:?]
at com.dtolabs.rundeck.core.resources.DelegateResourceModelSource.getNodes(DelegateResourceModelSource.java:35) [rundeck-core-5.5.0-20240808.jar!/:?]
at com.dtolabs.rundeck.core.common.ProjectNodeSupport.getNodeSet(ProjectNodeSupport.java:137) [rundeck-core-5.5.0-20240808.jar!/:?]
at com.dtolabs.rundeck.core.common.ProjectNodeSupport$ProjectNodesSource.getNodes(ProjectNodeSupport.java:358) [rundeck-core-5.5.0-20240808.jar!/:?]
at com.dtolabs.rundeck.core.resources.ExceptionCatchingResourceModelSource.getNodes(ExceptionCatchingResourceModelSource.java:58) [rundeck-core-5.5.0-20240808.jar!/:?]
at com.dtolabs.rundeck.core.resources.ResourceModelSource$getNodes$1.call(Unknown Source) [rundeck-core-5.5.0-20240808.jar!/:?]
at rundeck.services.nodes.CachedProjectNodes.reloadNodeSet(CachedProjectNodes.groovy:44) [classes!/:?]
at rundeck.services.nodes.CachedProjectNodes$reloadNodeSet.call(Unknown Source) [classes!/:?]
at rundeck.services.NodeService$_loadNodes_closure4.doCall(NodeService.groovy:295) [classes!/:?]
at rundeck.services.NodeService$_loadNodes_closure4.doCall(NodeService.groovy) [classes!/:?]
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:?]
at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
at java.lang.reflect.Method.invoke(Method.java:566) ~[?:?]
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:107) [groovy-3.0.19.jar!/:3.0.19]
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:323) [groovy-3.0.19.jar!/:3.0.19]
at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:274) [groovy-3.0.19.jar!/:3.0.19]
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1030) [groovy-3.0.19.jar!/:3.0.19]
at groovy.lang.Closure.call(Closure.java:427) [groovy-3.0.19.jar!/:3.0.19]
at groovy.lang.Closure.call(Closure.java:406) [groovy-3.0.19.jar!/:3.0.19]
at com.codahale.metrics.Timer.time(Timer.java:118) [metrics-core-4.2.22.jar!/:4.2.22]
at org.grails.plugins.metricsweb.MetricService.withTimer(MetricService.groovy:61) [grails-metricsweb-5.5.0-20240808-plain.jar!/:?]
at jdk.internal.reflect.GeneratedMethodAccessor1936.invoke(Unknown Source) ~[?:?]
at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
at java.lang.reflect.Method.invoke(Method.java:566) ~[?:?]
at org.codehaus.groovy.runtime.callsite.PlainObjectMetaMethodSite.doInvoke(PlainObjectMetaMethodSite.java:48) [groovy-3.0.19.jar!/:3.0.19]
at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite$PogoCachedMethodSiteNoUnwrap.invoke(PogoMetaMethodSite.java:178) [groovy-3.0.19.jar!/:3.0.19]
at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.call(PogoMetaMethodSite.java:69) [groovy-3.0.19.jar!/:3.0.19]
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:157) [groovy-3.0.19.jar!/:3.0.19]
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callSafe(AbstractCallSite.java:112) [groovy-3.0.19.jar!/:3.0.19]
at rundeck.services.NodeService.loadNodes(NodeService.groovy:307) [classes!/:?]
at jdk.internal.reflect.GeneratedMethodAccessor1930.invoke(Unknown Source) ~[?:?]
at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
at java.lang.reflect.Method.invoke(Method.java:566) ~[?:?]
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:107) [groovy-3.0.19.jar!/:3.0.19]
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:323) [groovy-3.0.19.jar!/:3.0.19]
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1254) [groovy-3.0.19.jar!/:3.0.19]
at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeMethodOnCurrentN(ScriptBytecodeAdapter.java:94) [groovy-3.0.19.jar!/:3.0.19]
at rundeck.services.NodeService.this$dist$invoke$1(NodeService.groovy) [classes!/:?]
at rundeck.services.NodeService$3.methodMissing(NodeService.groovy) [classes!/:?]
at jdk.internal.reflect.GeneratedMethodAccessor1631.invoke(Unknown Source) ~[?:?]
at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
at java.lang.reflect.Method.invoke(Method.java:566) ~[?:?]
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:107) [groovy-3.0.19.jar!/:3.0.19]
at groovy.lang.MetaClassImpl.invokeMissingMethod(MetaClassImpl.java:948) [groovy-3.0.19.jar!/:3.0.19]
at groovy.lang.MetaClassImpl.invokePropertyOrMissing(MetaClassImpl.java:1333) [groovy-3.0.19.jar!/:3.0.19]
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1256) [groovy-3.0.19.jar!/:3.0.19]
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1030) [groovy-3.0.19.jar!/:3.0.19]
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:814) [groovy-3.0.19.jar!/:3.0.19]
at groovy.lang.GroovyObject.invokeMethod(GroovyObject.java:39) [groovy-3.0.19.jar!/:3.0.19]
at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeOnDelegationObjects(ClosureMetaClass.java:408) [groovy-3.0.19.jar!/:3.0.19]
at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:348) [groovy-3.0.19.jar!/:3.0.19]
at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.callCurrent(PogoMetaClassSite.java:61) [groovy-3.0.19.jar!/:3.0.19]
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:194) [groovy-3.0.19.jar!/:3.0.19]
at rundeck.services.NodeService$3$_reload_closure1.doCall(NodeService.groovy:152) [classes!/:?]
at rundeck.services.NodeService$3$_reload_closure1.doCall(NodeService.groovy) [classes!/:?]
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:?]
at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
at java.lang.reflect.Method.invoke(Method.java:566) ~[?:?]
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:107) [groovy-3.0.19.jar!/:3.0.19]
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:323) [groovy-3.0.19.jar!/:3.0.19]
at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:274) [groovy-3.0.19.jar!/:3.0.19]
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1030) [groovy-3.0.19.jar!/:3.0.19]
at groovy.lang.Closure.call(Closure.java:427) [groovy-3.0.19.jar!/:3.0.19]
at groovy.lang.Closure.call(Closure.java:406) [groovy-3.0.19.jar!/:3.0.19]
at java.util.concurrent.FutureTask.run(FutureTask.java:264) [?:?]
at org.springframework.core.task.SimpleAsyncTaskExecutor$ConcurrencyThrottlingRunnable.run(SimpleAsyncTaskExecutor.java:284) [spring-core-5.3.34.jar!/:5.3.34]
at java.lang.Thread.run(Thread.java:829) [?:?]
[2024-10-01T19:45:00,467] WARN resources.LoggingResourceModelSourceCache - [ResourceModelSource: 1.source (com.batix.rundeck.plugins.AnsibleResourceModelSourceFactory), project: Systems] Returning cached model data
Подробнее здесь: https://stackoverflow.com/questions/790 ... untu-24-04