<div dir="ltr">Hello folks,<div><br></div><div>Not long ago we added necessary commands in fuel client to work with granular deployment configuration and API.</div><div><br></div><div>So, you may know that configuration is stored in fuel-library, and uploaded into database during<br></div><div>bootstrap of fuel master. If you want to change/add some tasks right on master node, just add tasks.yaml</div><div>and appropriate manifests in folder for release that you are interested in. Then apply this command:</div><div><br></div><div>>> fuel rel --sync-deployment-tasks --dir /etc/puppet</div><div><br></div><div>Also you may want to overwrite deployment tasks for any specific release/cluster by next commands:</div><div><br></div><div>>> fuel rel --rel <id> --deployment-tasks --download</div><div>>> fuel rel --rel <id> --deployment-tasks --upload</div><div><br></div><div><div>>> fuel env --env <id> --deployment-tasks --download</div><div>>> fuel env --env <id> --deployment-tasks --upload</div></div><div><br></div><div>After this is done - you will be able to run customized graph of tasks:</div><div><br></div><div>The most basic command:</div><div><br></div><div>>> fuel node --node 1,2,3 --tasks upload_repos netconfig</div><div><br></div><div>Developer will need to specify nodes that should be used in deployment and tasks ids. Order in which they are provided doesn't matter,</div><div>it will be computed from dependencies specified in database. Also very important to understand that if task is mapped to role controller,</div><div>but node where you want to apply that task doesn't have this role - it wont be executed.</div><div><br></div><div>Skipping of tasks</div><div><br></div><div>>> fuel node --node 1,2,3 --skip netconfig hiera</div><div><br></div><div>List of task that are provided with this parameter will be skipped during graph traversal in nailgun.</div><div>The main question is - should we skip other task that have provided tasks as dependencies?</div><div>In my opinion we can leave this flag as simple as it is, and use following commands for "smarter" traversal.</div><div><br></div><div>Specify start and end nodes in graph:</div><div><br></div><div>>> fuel node --node 1,2,3 --end netconfig</div><div><br></div><div>Will deploy everything up to netconfig task, including netconfig. This is: all tasks that we are considering as pre_deployment (keys generation, rsync manifests, sync time, upload repos),</div><div>and such tasks as hiera setup, globals computation and maybe some other basic preparatory tasks. </div><div><br></div><div>>> fuel node --node 1,2,3 --start netconfig</div><div><br></div><div>Start from netconfig, including netconfig, deploy all other tasks, tasks that we are considering as post_deployment.</div><div>For example if one want to execute only netconfig successors:</div><div><br></div><div>>> fuel node --node 1,2,3 --start netconfig --skip netconfig</div><div><br></div><div>And user will be able to use start and end at the same time:</div><div><br></div><div>>> fuel node --node 1,2,3 --start netconfig --end upload_cirros</div><div><br></div><div>Nailgun will build path that includes only necessary tasks to join this two points. However start flag is not merged yet, but i think it will be by Monday.</div><div><br></div><div>Also we are working on deployment graph visualization, it will be static (i mean there is no progress tracking of any kind),</div><div>but it will help a lot to understand what is going to be executed.</div><div><br></div><div>Thank you for reading, i would like to hear more thoughts about this, and answer any questions<br></div></div>