Hi, Julian.
Are you sure rundeck is executing in the same virtual machine as Ansible? I’m asking due of this.
“ I have my Ansible control node running on a CentOS 7 VM and rundeck was installed using docker onto the same machine”
If you run Rundeck in a Docker container and Ansible on the host, Rundeck will only access the Docker container’s internal filesystem.
Now, considering that Rundeck and Ansible are operating on the same server, it appears that Rundeck is unable to retrieve the inventory, most likely due to a similar remote_tmp parameter issue in the ansible.cfg file. It appears that rundeck cannot copy those files (gather-hosts.yml and host-tpl.j2) due to permissions or because it is executing in a different environment.
Could you please double-check your ansible.cfg and test with the most recent Rundeck version?
Regards!
Which Java version are you using?
Check your version with the java -version command.
Hi Julian,
It appears that you are not utilizing a WAR-based instance (probably an RPM-based one). That’s ok, but I’m not sure whether that instance is an upgrade or a new one (it appears to be an upgrade given the “Extra settings” block is not included by default). Anyway, how did you set up Rundeck in that CentOS 7 VM?
I tested on a fresh CentOS 7 virtual machine. I took the following steps:
Now, for your rundeck-config.properties file: Are the rundeck.storage.converter.1.config.password and rundeck.config.storage.converter.1.config.password values identical to “default.encryption. password”? Or is a way to hide your “real encryption password”? (if so, that’s ok).
Following installation, these password fields are random strings created by Rundeck. Let me show you my test instance file:
#loglevel.default is the default log level for jobs: ERROR,WARN,INFO,VERBOSE,DEBUG loglevel.default=INFO rdeck.base=/var/lib/rundeck #rss.enabled if set to true enables RSS feeds that are public (non-authenticated) rss.enabled=false # change hostname here grails.serverURL=http://192.168.56.99:4440 dataSource.dbCreate = none dataSource.url = jdbc:h2:file:/var/lib/rundeck/data/rundeckdb;DB_CLOSE_ON_EXIT=FALSE;NON_KEYWORDS=MONTH,HOUR,MINUTE,YEAR,SECONDS grails.plugin.databasemigration.updateOnStart=true # Encryption for key storage rundeck.storage.provider.1.type=db rundeck.storage.provider.1.path=keys rundeck.storage.converter.1.type=jasypt-encryption rundeck.storage.converter.1.path=keys rundeck.storage.converter.1.config.encryptorType=custom rundeck.storage.converter.1.config.password=3454c48d71bfdc60 rundeck.storage.converter.1.config.algorithm=PBEWITHSHA256AND128BITAES-CBC-BC rundeck.storage.converter.1.config.provider=BC # Encryption for project config storage rundeck.projectsStorageType=db rundeck.config.storage.converter.1.type=jasypt-encryption rundeck.config.storage.converter.1.path=projects rundeck.config.storage.converter.1.config.password=3454c48d71bfdc60 rundeck.config.storage.converter.1.config.encryptorType=custom rundeck.config.storage.converter.1.config.algorithm=PBEWITHSHA256AND128BITAES-CBC-BC rundeck.config.storage.converter.1.config.provider=BC rundeck.feature.repository.enabled=trueWhen you start rundeck and the rundeck key storage’s keys are encrypted by the default/initial password, and then you change those values, your error appears (taken from my Centos 7):
[2024-02-15T21:24:30,354] WARN cache.LocalCache - Exception thrown during refresh java.util.concurrent.ExecutionException: java.io.IOException: Decryption failed. at com.google.common.util.concurrent.AbstractFuture.getDoneValue(AbstractFuture.java:592) ~[guava-32.0.1-jre.jar!/:?] at com.google.common.util.concurrent.AbstractFuture.get(AbstractFuture.java:551) ~[guava-32.0.1-jre.jar!/:?] at com.google.common.util.concurrent.AbstractFuture$TrustedFuture.get(AbstractFuture.java:111) ~[guava-32.0.1-jre.jar!/:?] at com.google.common.util.concurrent.Uninterruptibles.getUninterruptibly(Uninterruptibles.java:247) ~[guava-32.0.1-jre.jar!/:?] at com.google.common.cache.LocalCache$Segment.getAndRecordStats(LocalCache.java:2345) ~[guava-32.0.1-jre.jar!/:?] at com.google.common.cache.LocalCache$Segment.lambda$loadAsync$0(LocalCache.java:2325) ~[guava-32.0.1-jre.jar!/:?] at com.google.common.util.concurrent.DirectExecutor.execute(DirectExecutor.java:31) [guava-32.0.1-jre.jar!/:?] at com.google.common.util.concurrent.AbstractFuture.executeListener(AbstractFuture.java:1286) [guava-32.0.1-jre.jar!/:?] at com.google.common.util.concurrent.AbstractFuture.addListener(AbstractFuture.java:760) [guava-32.0.1-jre.jar!/:?] at com.google.common.util.concurrent.AbstractFuture$TrustedFuture.addListener(AbstractFuture.java:134) [guava-32.0.1-jre.jar!/:?] at com.google.common.cache.LocalCache$Segment.loadAsync(LocalCache.java:2322) [guava-32.0.1-jre.jar!/:?] at com.google.common.cache.LocalCache$Segment.refresh(LocalCache.java:2393) [guava-32.0.1-jre.jar!/:?] at com.google.common.cache.LocalCache$Segment.scheduleRefresh(LocalCache.java:2370) [guava-32.0.1-jre.jar!/:?] at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2069) [guava-32.0.1-jre.jar!/:?] at com.google.common.cache.LocalCache.get(LocalCache.java:4011) [guava-32.0.1-jre.jar!/:?] at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:4034) [guava-32.0.1-jre.jar!/:?] at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:5010) [guava-32.0.1-jre.jar!/:?] at rundeck.services.ProjectManagerService.$tt__getFrameworkProject(ProjectManagerService.groovy:198) [classes!/:?] at jdk.internal.reflect.GeneratedMethodAccessor483.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 groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1030) [groovy-3.0.19.jar!/:3.0.19] at org.codehaus.groovy.runtime.InvokerHelper.invokePogoMethod(InvokerHelper.java:1036) [groovy-3.0.19.jar!/:3.0.19] at org.codehaus.groovy.runtime.InvokerHelper.invokeMethod(InvokerHelper.java:1019) [groovy-3.0.19.jar!/:3.0.19] at org.codehaus.groovy.runtime.InvokerHelper.invokeMethodSafe(InvokerHelper.java:97) [groovy-3.0.19.jar!/:3.0.19] at rundeck.services.ProjectManagerService$_getFrameworkProject_closure10.doCall(ProjectManagerService.groovy) [classes!/:?] at jdk.internal.reflect.GeneratedMethodAccessor482.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 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:416) [groovy-3.0.19.jar!/:3.0.19] at grails.gorm.transactions.GrailsTransactionTemplate$2.doInTransaction(GrailsTransactionTemplate.groovy:94) [grails-datastore-gorm-8.0.0.jar!/:?] at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:140) [spring-tx-5.3.27.jar!/:5.3.27] at grails.gorm.transactions.GrailsTransactionTemplate.execute(GrailsTransactionTemplate.groovy:91) [grails-datastore-gorm-8.0.0.jar!/:?] at rundeck.services.ProjectManagerService.getFrameworkProject(ProjectManagerService.groovy) [classes!/:?] at rundeck.services.FrameworkService.getFrameworkProject(FrameworkService.groovy:483) [classes!/:?] at org.rundeck.app.core.FrameworkServiceCapabilities$getFrameworkProject.call(Unknown Source) [rundeck-app-util-5.1.0-20240214.jar!/:?] at rundeck.services.PluginConfigService.$tt__loadScmConfig(PluginConfigService.groovy:28) [classes!/:?] at jdk.internal.reflect.GeneratedMethodAccessor499.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 groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1030) [groovy-3.0.19.jar!/:3.0.19] at org.codehaus.groovy.runtime.InvokerHelper.invokePogoMethod(InvokerHelper.java:1036) [groovy-3.0.19.jar!/:3.0.19] at org.codehaus.groovy.runtime.InvokerHelper.invokeMethod(InvokerHelper.java:1019) [groovy-3.0.19.jar!/:3.0.19] at org.codehaus.groovy.runtime.InvokerHelper.invokeMethodSafe(InvokerHelper.java:97) [groovy-3.0.19.jar!/:3.0.19] at rundeck.services.PluginConfigService$_loadScmConfig_closure1.doCall(PluginConfigService.groovy) [classes!/:?] at jdk.internal.reflect.GeneratedMethodAccessor498.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 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:416) [groovy-3.0.19.jar!/:3.0.19] at grails.gorm.transactions.GrailsTransactionTemplate$2.doInTransaction(GrailsTransactionTemplate.groovy:94) [grails-datastore-gorm-8.0.0.jar!/:?] at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:140) [spring-tx-5.3.27.jar!/:5.3.27] at grails.gorm.transactions.GrailsTransactionTemplate.execute(GrailsTransactionTemplate.groovy:91) [grails-datastore-gorm-8.0.0.jar!/:?] at rundeck.services.PluginConfigService.loadScmConfig(PluginConfigService.groovy) [classes!/:?] at rundeck.services.PluginConfigService$loadScmConfig.call(Unknown Source) [classes!/:?] at rundeck.services.ScmService.loadScmConfig(ScmService.groovy:300) [classes!/:?] at rundeck.services.ScmService$loadScmConfig$3.call(Unknown Source) [classes!/:?] at rundeck.services.scm.ScmLoaderService$_beginScmLoader_closure1.doCall(ScmLoaderService.groovy:60) [classes!/:?] at rundeck.services.scm.ScmLoaderService$_beginScmLoader_closure1.doCall(ScmLoaderService.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 groovy.lang.Closure.run(Closure.java:498) [groovy-3.0.19.jar!/:3.0.19] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) [?:?] at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:305) [?:?] at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305) [?:?] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?] at java.lang.Thread.run(Thread.java:829) [?:?] Caused by: java.io.IOException: Decryption failed. at org.rundeck.plugin.encryption.JasyptEncryptionConverterPlugin$DecryptStream.getInputStream(JasyptEncryptionConverterPlugin.java:452) ~[?:?] at com.dtolabs.rundeck.core.storage.BaseStreamResource.getInputStream(BaseStreamResource.java:42) ~[rundeck-core-5.1.0-20240214.jar!/:?] at rundeck.services.ProjectManagerService.loadProjectConfigResource(ProjectManagerService.groovy:464) ~[classes!/:?] at rundeck.services.ProjectManagerService.$tt__loadProjectConfig(ProjectManagerService.groovy:760) ~[classes!/:?] at jdk.internal.reflect.GeneratedMethodAccessor489.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 groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1030) ~[groovy-3.0.19.jar!/:3.0.19] at org.codehaus.groovy.runtime.InvokerHelper.invokePogoMethod(InvokerHelper.java:1036) ~[groovy-3.0.19.jar!/:3.0.19] at org.codehaus.groovy.runtime.InvokerHelper.invokeMethod(InvokerHelper.java:1019) ~[groovy-3.0.19.jar!/:3.0.19] at org.codehaus.groovy.runtime.InvokerHelper.invokeMethodSafe(InvokerHelper.java:97) ~[groovy-3.0.19.jar!/:3.0.19] at rundeck.services.ProjectManagerService$_loadProjectConfig_closure39.doCall(ProjectManagerService.groovy) ~[classes!/:?] at jdk.internal.reflect.GeneratedMethodAccessor488.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 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:416) ~[groovy-3.0.19.jar!/:3.0.19] at grails.gorm.transactions.GrailsTransactionTemplate$2.doInTransaction(GrailsTransactionTemplate.groovy:94) ~[grails-datastore-gorm-8.0.0.jar!/:?] at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:140) ~[spring-tx-5.3.27.jar!/:5.3.27] at grails.gorm.transactions.GrailsTransactionTemplate.execute(GrailsTransactionTemplate.groovy:91) ~[grails-datastore-gorm-8.0.0.jar!/:?] at rundeck.services.ProjectManagerService.loadProjectConfig(ProjectManagerService.groovy) ~[classes!/:?] at com.dtolabs.rundeck.server.projects.RundeckProject.getProjectConfig(RundeckProject.java:149) ~[classes!/:?] at com.dtolabs.rundeck.server.projects.RundeckProject.getConfigLastModifiedTime(RundeckProject.java:128) ~[classes!/:?] at rundeck.services.ProjectManagerService.needsReload(ProjectManagerService.groovy:813) ~[classes!/:?] at rundeck.services.ProjectManagerService.access$0(ProjectManagerService.groovy) ~[classes!/:?] at rundeck.services.ProjectManagerService$2.reload(ProjectManagerService.groovy:246) ~[classes!/:?] at rundeck.services.ProjectManagerService$2.reload(ProjectManagerService.groovy) ~[classes!/:?] at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3573) ~[guava-32.0.1-jre.jar!/:?] at com.google.common.cache.LocalCache$Segment.loadAsync(LocalCache.java:2321) ~[guava-32.0.1-jre.jar!/:?] ... 80 more Caused by: org.jasypt.exceptions.EncryptionOperationNotPossibleException at org.jasypt.encryption.pbe.StandardPBEByteEncryptor.decrypt(StandardPBEByteEncryptor.java:1169) ~[?:?] at org.rundeck.plugin.encryption.JasyptEncryptionConverterPlugin$DecryptStream.getInputStream(JasyptEncryptionConverterPlugin.java:450) ~[?:?] at com.dtolabs.rundeck.core.storage.BaseStreamResource.getInputStream(BaseStreamResource.java:42) ~[rundeck-core-5.1.0-20240214.jar!/:?] at rundeck.services.ProjectManagerService.loadProjectConfigResource(ProjectManagerService.groovy:464) ~[classes!/:?] at rundeck.services.ProjectManagerService.$tt__loadProjectConfig(ProjectManagerService.groovy:760) ~[classes!/:?] at jdk.internal.reflect.GeneratedMethodAccessor489.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 groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1030) ~[groovy-3.0.19.jar!/:3.0.19] at org.codehaus.groovy.runtime.InvokerHelper.invokePogoMethod(InvokerHelper.java:1036) ~[groovy-3.0.19.jar!/:3.0.19] at org.codehaus.groovy.runtime.InvokerHelper.invokeMethod(InvokerHelper.java:1019) ~[groovy-3.0.19.jar!/:3.0.19] at org.codehaus.groovy.runtime.InvokerHelper.invokeMethodSafe(InvokerHelper.java:97) ~[groovy-3.0.19.jar!/:3.0.19] at rundeck.services.ProjectManagerService$_loadProjectConfig_closure39.doCall(ProjectManagerService.groovy) ~[classes!/:?] at jdk.internal.reflect.GeneratedMethodAccessor488.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 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:416) ~[groovy-3.0.19.jar!/:3.0.19] at grails.gorm.transactions.GrailsTransactionTemplate$2.doInTransaction(GrailsTransactionTemplate.groovy:94) ~[grails-datastore-gorm-8.0.0.jar!/:?] at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:140) ~[spring-tx-5.3.27.jar!/:5.3.27] at grails.gorm.transactions.GrailsTransactionTemplate.execute(GrailsTransactionTemplate.groovy:91) ~[grails-datastore-gorm-8.0.0.jar!/:?] at rundeck.services.ProjectManagerService.loadProjectConfig(ProjectManagerService.groovy) ~[classes!/:?] at com.dtolabs.rundeck.server.projects.RundeckProject.getProjectConfig(RundeckProject.java:149) ~[classes!/:?] at com.dtolabs.rundeck.server.projects.RundeckProject.getConfigLastModifiedTime(RundeckProject.java:128) ~[classes!/:?] at rundeck.services.ProjectManagerService.needsReload(ProjectManagerService.groovy:813) ~[classes!/:?] at rundeck.services.ProjectManagerService.access$0(ProjectManagerService.groovy) ~[classes!/:?] at rundeck.services.ProjectManagerService$2.reload(ProjectManagerService.groovy:246) ~[classes!/:?] at rundeck.services.ProjectManagerService$2.reload(ProjectManagerService.groovy) ~[classes!/:?] at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3573) ~[guava-32.0.1-jre.jar!/:?] at com.google.common.cache.LocalCache$Segment.loadAsync(LocalCache.java:2321) ~[guava-32.0.1-jre.jar!/:?] ... 80 moreCould you confirm that you’re using the right key and storage passwords? Could you test in a fresh VM?
Regards.
Hi Julian.
Right now your ansible stuff is owned by the ermez user (look at the /home/ermez/.ansible and /home/ermez/.local/bin paths) and the Rundeck instance by the rundeck user. (that’s why I recommended] you install a Rundeck WAR-based instance ruled by the ermez user, to make sure that all stuff is ruled by the ermez user).
Anyway, that’s fixable. You’re using an RPM/yum-repo version of Rundeck, so the default Rundeck user is rundeck (but again: you can install it as root or sudo, that’s normal in any Unix-based system and it’s not related to the user that owns the Rundeck service), so, you will make sure that the rundeck user reaches the ansible binaries and ansible config/inventory files.
To do so, a good practice is to use a “server-wide” Ansible installation and make sure that the rundeck user can reach the Ansible binaries and the config/inventory files (usually owned by the ansible user).
Greetings.
I see. In that case, the best option is to run a Rundeck WAR instance as ermez user. Changing the user’s workspace rights isn’t the cleanest way to implement that integration (and isn’t a good practice). So, you can stop and disable the RPM Rundeck service (don’t uninstall it, it works, and it’s useful if you want to make some tests :-) and try again to run a Rundeck on /home/ermez/rundeck path ruled by the ermez user.
Greetings!