ansible-plugin icon indicating copy to clipboard operation
ansible-plugin copied to clipboard

Running on windows nodes reports module missing?

Open nublaii opened this issue 6 years ago • 3 comments

Hi

I just setup a new server to be able to run ansible 'natively' from rundeck.

I have set up a project only for my windows machines.

I setup the executor, file copier and node source to use ansible, and so far so good.

The structure I am using to keep all my ansible-related files are inside /scripts/, following this hierarchy:

image

Well... for the life of me I can't get it to run anything (I have tried ansible modules, ad-hoc, inline playbook and playbook).

This is the error I get when I try to run win_ping for example:

Execution failed: 47 in project windows: [Workflow result: , step failures: {1=PluginFailed: null}, status: failed]

And this is the whole log

[workflow] Begin execution: node-first
Start EngineWorkflowExecutor
Building initial state and rules...
Update conditional state: {before.step.1=true, after.step.1=false}
start conditions for step [1]: []
Create rule engine with rules: RuleEngine{ruleSet=[Rule: Conditions([(step.any.state.failed == 'true'), (workflow.keepgoing == 'false')]) => DataState{state={workflow.done=true}}, Rule: Conditions([(step.any.flowcontrol.halt == 'true')]) => DataState{state={workflow.done=true}}, Rule: Conditions([]) => DataState{state={step.1.start=true}}]}
Create workflow engine with state: StateLogger{state=DataState{state={job.successOnEmptyNodeFilter=false, job.executionType=user, job.url=http://rundeck.server:4440/project/windows/execution/follow/47, job.filter=.*, job.id=e0708c40-9799-4a5a-af22-f1670e06bb56, job.loglevel=DEBUG, job.wasRetry=false, job.project=windows, before.step.1=true, after.step.1=false, job.retryInitialExecId=0, job.username=admin, job.retryAttempt=0, job.user.name=admin, workflow.keepgoing=true, job.execid=47, job.serverUrl=http://rundeck.server:4440/, job.name=win_ping, job.threadcount=1}}}
Begin: Workflow begin
WillProcessStateChange: saw state changes: {workflow.state=started}
Update conditional state: {workflow.state=started}
Update conditional state: {step.1.start=true}
DidProcessStateChange: applied state changes and rules (changed? true): StateLogger{state=DataState{state={job.successOnEmptyNodeFilter=false, job.executionType=user, job.url=http://rundeck.server:4440/project/windows/execution/follow/47, job.filter=.*, job.id=e0708c40-9799-4a5a-af22-f1670e06bb56, job.loglevel=DEBUG, job.wasRetry=false, job.project=windows, before.step.1=true, step.1.start=true, after.step.1=false, workflow.state=started, job.retryInitialExecId=0, job.username=admin, job.retryAttempt=0, job.user.name=admin, workflow.keepgoing=true, job.execid=47, job.serverUrl=http://rundeck.server:4440/, job.name=win_ping, job.threadcount=1}}}
WillRunOperation: operation starting: Step{stepNum=1, label='null'}
LoopProgress: Pending(1) => run(1), skip(0), remain(0)
[workflow] Begin step: 1,com.batix.rundeck.plugins.AnsibleModuleWorkflowStep
1: Workflow step executing: StepExecutionItem{type='com.batix.rundeck.plugins.AnsibleModuleWorkflowStep', keepgoingOnSuccess=false, hasFailureHandler=false}
Failed executing step plugin [com.batix.rundeck.plugins.AnsibleModuleWorkflowStep]: java.lang.NullPointerException
	at com.batix.rundeck.core.AnsibleRunnerBuilder.getInventory(AnsibleRunnerBuilder.java:700)
	at com.batix.rundeck.core.AnsibleRunnerBuilder.buildAnsibleRunner(AnsibleRunnerBuilder.java:819)
	at com.batix.rundeck.plugins.AnsibleModuleWorkflowStep.executeStep(AnsibleModuleWorkflowStep.java:74)
	at com.dtolabs.rundeck.core.execution.workflow.steps.StepPluginAdapter.executeWorkflowStep(StepPluginAdapter.java:114)
	at com.dtolabs.rundeck.core.execution.ExecutionServiceImpl.executeStep(ExecutionServiceImpl.java:103)
	at com.dtolabs.rundeck.core.execution.workflow.BaseWorkflowExecutor.executeWFItem(BaseWorkflowExecutor.java:291)
	at com.dtolabs.rundeck.core.execution.workflow.BaseWorkflowExecutor.executeWorkflowStep(BaseWorkflowExecutor.java:687)
	at com.dtolabs.rundeck.core.execution.workflow.engine.StepCallable.apply(StepCallable.java:71)
	at com.dtolabs.rundeck.core.execution.workflow.engine.StepOperation.apply(StepOperation.java:73)
	at com.dtolabs.rundeck.core.execution.workflow.engine.StepOperation.apply(StepOperation.java:31)
	at com.dtolabs.rundeck.core.rules.WorkflowEngineOperationsProcessor.lambda$processRunnableOperations$31(WorkflowEngineOperationsProcessor.java:222)
	at com.google.common.util.concurrent.TrustedListenableFutureTask$TrustedFutureInterruptibleTask.runInterruptibly(TrustedListenableFutureTask.java:125)
	at com.google.common.util.concurrent.InterruptibleTask.run(InterruptibleTask.java:57)
	at com.google.common.util.concurrent.TrustedListenableFutureTask.run(TrustedListenableFutureTask.java:78)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)

1: Workflow step finished, result: PluginFailed: null
[workflow] Finish step: 1,com.batix.rundeck.plugins.AnsibleModuleWorkflowStep
OperationSuccess: operation succeeded: StepSuccess{stepNum=1, stepResultCapture=StepResultCapture{stepResult=PluginFailed: null, stepSuccess=false, statusString='null', controlBehavior=PluginFailed: null, resultData=MultiDataContextImpl(map={}, base=null)}, newState=DataState{state={step.1.completed=true, step.any.state.failed=true, before.step.1=false, step.1.state=failure, after.step.1=true}}}
WillProcessStateChange: saw state changes: {before.step.1=false, step.1.state=failure, after.step.1=true, step.1.completed=true, step.any.state.failed=true}
Update conditional state: {before.step.1=false, step.1.state=failure, after.step.1=true, step.1.completed=true, step.any.state.failed=true}
Update conditional state: {step.1.start=true}
DidProcessStateChange: applied state changes and rules (changed? true): StateLogger{state=DataState{state={job.successOnEmptyNodeFilter=false, job.executionType=user, job.url=http://rundeck.server:4440/project/windows/execution/follow/47, job.filter=.*, job.id=e0708c40-9799-4a5a-af22-f1670e06bb56, step.1.completed=true, step.any.state.failed=true, job.loglevel=DEBUG, job.wasRetry=false, job.project=windows, before.step.1=false, step.1.start=true, after.step.1=true, workflow.state=started, job.retryInitialExecId=0, job.username=admin, job.retryAttempt=0, job.user.name=admin, workflow.keepgoing=true, job.execid=47, job.serverUrl=http://rundeck.server:4440/, job.name=win_ping, step.1.state=failure, job.threadcount=1}}}
LoopProgress: Pending(0) => run(0), skip(0), remain(0)
EndOfChanges: No more state changes expected, finishing workflow.
WillShutdown: Workflow engine shutting down
Complete: Workflow complete: [Step{stepNum=1, label='null'}: StepSuccess{stepNum=1, stepResultCapture=StepResultCapture{stepResult=PluginFailed: null, stepSuccess=false, statusString='null', controlBehavior=PluginFailed: null, resultData=MultiDataContextImpl(map={}, base=null)}, newState=DataState{state={step.1.completed=true, step.any.state.failed=true, before.step.1=false, step.1.state=failure, after.step.1=true}}}]
[workflow] Finish execution:  node-first: [Workflow result: , step failures: {1=PluginFailed: null}, status: failed]
[Workflow result: , step failures: {1=PluginFailed: null}, status: failed]
Execution failed: 47 in project windows: [Workflow result: , step failures: {1=PluginFailed: null}, status: failed]

I do get rundeck to import all the windows nodes correctly, so I don't know what I'm doing wrong.

nublaii avatar May 29 '18 14:05 nublaii

Some more logs

==> /var/log/rundeck/service.log <==
ERROR ExecutionUtilService: Execution failed: 49 in project windows: [Workflow result: , step failures: {1=PluginFailed: null}, status: failed]
==> /var/log/rundeck/rundeck.log <==
2018-05-29 17:15:51,283 [quartzScheduler_Worker-8] ERROR grails.app.services.rundeck.services.ExecutionUtilService - Execution failed: 49 in project windows: [Workflow result: , step failures: {1=PluginFailed: null}, status: failed]

And these are the settings on the job:

image

nublaii avatar May 29 '18 15:05 nublaii

And here the project config:

node executor : image

file copier: image

And the node sources: image

nublaii avatar May 29 '18 15:05 nublaii

Thanks for all the screen shot you provided. They are extremely helpful. Did your node filter return a list of nodes before you ran the job, and were they only Windows hosts? Can you also run the job in debug mode and show the Ansible command line please?

mcassaniti avatar Aug 16 '18 06:08 mcassaniti