Problem:
I have two problems with remote execution related to the setup of the orchestrator and workers as provided in your docker compose file.
-
When running
state.highstate
via the Salt remote execution provider, the container “app” running the Foreman web GUI throws error message “The Dynflow world was not initialized yet. If your plugin uses it, make sure to call Rails.application.dynflow.require! in some initializer”. I can work around this by settinglazy_initialization= true
in the dynflow configuration. In fileconfig/application.rb
there is in fact a call to@dynflow.require!
but this seems not to suffice. What is the best way to ensure that dynflow is initialized properly? -
When simply starting the three containers app, orchestrator and worker (the latter both running script
extras/dynflow-sidekiq.rb
) as defined in the docker compose file they never pick up the remote execution tasks from Redis. It does work though when I go back before this commit to the docker compose file by @aruzicka and @ohadlevy, drop the orchestrator container and define the command for the worker container like this:
command: bundle exec rake dynflow:executor
I already found these explanations by @aruzicka but still cannot get it to work. Can anybody give me a hint why it works when I start the dynflow executor in the “old” way vs. running an orchestrator and some workers the “new” way?
Expected outcome:
Remote execution tasks are performed.
Foreman and Proxy versions:
Foreman 3.5-stable, smart-proxy 3.5-stable, smart_proxy_salt latest
Foreman and Proxy plugin versions:
foreman_remote_execution 8.1.2, foreman-tasks latest, foreman_salt latest
Distribution and version:
Docker container Quay with some extra packages and plugins installed
Other relevant data: