<div dir="ltr">Hi folks,<div><br></div><div>Some of you may know that there is ongoing work to achieve kindof data-driven orchestration </div><div>for Fuel. If this is new to you, please get familiar with spec:</div><div><br></div><div><a href="https://review.openstack.org/#/c/113491/">https://review.openstack.org/#/c/113491/</a><br></div><div><br></div><div>Knowing that running random command on nodes will be probably most usable type of</div><div>orchestration extension, i want to discuss our solution for this problem.</div><div><br></div><div>Plugin writer will need to do two things:</div><div><br></div><div>1. Provide custom task.yaml (i am using /etc/puppet/tasks, but this is completely configurable,</div><div>    we just need to reach agreement) </div><div><br></div><div>  /etc/puppet/tasks/echo/task.yaml</div><div>  </div><div>  with next content:</div><div>  </div><div>   type: exec</div><div>   cmd: echo 1 </div><div><br></div><div>2. Provide control plane with orchestration metadata</div><div><br></div><div>/etc/fuel/tasks/echo_task.yaml</div><div><br></div><div>controller:</div><div> -</div><div>  task: echo</div><div>  description: Simple echo for you</div><div>  priority: 1000</div><div>compute:</div><div><div>-</div><div>  task: echo</div><div>  description: Simple echo for you</div><div>  priority: 1000</div></div><div><br></div><div>This is done in order to separate concerns of orchestration logic and tasks.</div><div><br></div><div>From plugin writer perspective it is far more usable to provide exact command in orchestration metadata itself, like:</div><div><br></div><div><div>/etc/fuel/tasks/echo_task.yaml</div><div><br></div><div>controller:</div><div> -</div><div>  task: echo</div><div>  description: Simple echo for you</div><div>  priority: 1000</div></div><div>  cmd: echo 1</div><div>  type: exec</div><div><br></div><div>compute:</div><div>-</div><div><div><div> task: echo</div><div>  description: Simple echo for you</div><div>  priority: 1000</div></div><div>  cmd: echo 1</div><div>  type: exec</div></div><div><br></div><div>I would prefer to stick to the first, because there is benefits of using one interface between all tasks executors (puppet, exec, maybe chef), which will improve debuging and development process.</div><div><br></div><div>So my question is first - good enough? Or second is essential type of plugin to support?</div><div><br></div><div>If you want additional implementation details check:</div><div><a href="https://review.openstack.org/#/c/118311/">https://review.openstack.org/#/c/118311/</a><br></div><div><a href="https://review.openstack.org/#/c/113226/">https://review.openstack.org/#/c/113226/</a><br></div><div><br></div><div><br></div><div><br></div></div>