<div dir="ltr"><div><br></div><div>Hi team,</div><div>After several discussions i want to propose generic format</div><div>for describing deployment tasks, this format is expected to cover</div><div>all tasks (e.g pre-deployment and post-deployment), also it should cover</div><div>different actions like upgrade/patching</div><div><br></div><div>action: upload_file</div><div>id: upload_astute</div><div>roles: *</div><div>parameters:</div><div>    input: $.data - this is internal mistral thing</div><div>    timeout: 50</div><div><br></div><div>action: tasklib</div><div>id: generate_keys</div><div>stages: [pre-deployment]</div><div>roles: master</div><div>parameters:</div><div>    timeout: 60</div><div>    command: generate/keys</div><div>    type: puppet</div><div>    manifest: /etc/puppet/manifests/key_generator.pp</div><div><br></div><div>action: tasklib</div><div>id: rsync_puppet</div><div>stages: [pre-node]</div><div>requires: [upload_astute]</div><div>parameters:</div><div>    timeout: 100</div><div>    command: rsync/stuff</div><div>    type: shell</div><div>    cmd: python rsync.py</div><div><br></div><div>action: tasklib</div><div>id: ceph</div><div>roles: [ceph-osd, ceph-mon]</div><div>requires: [rsync_puppet]</div><div>parameters:</div><div>    timeout: 100</div><div>    command: deployment/ceph</div><div>    type: puppet</div><div>    manifest: /etc/puppet/manifests/ceph.pp</div><div><br></div><div>action: tasklib</div><div>id: glance/image</div><div>roles: [controller, primary-controller]</div><div>stages: [post-deployment]</div><div>parameters:</div><div>    timeout: 100</div><div>    command: deployment/glance/image</div><div>    type: shell</div><div>    cmd: python upload_image.py</div><div><br></div><div>Let me provide some clarifications:</div><div>1. As example, we want to generate keys strictly before deployment, and the 1st way to solve </div><div>it is to introduce concept of stages, e.g pre-deployment, main, upgrade, post-deployment. </div><div>Another one would be to use virtual roles and/or virtual tasks like deployment_started, deployment_ended. </div><div>We need to consider both, but stages it is what we are using now, and i am just trying to generalize and make it data-driven.</div><div>2. Another internal thing is roles. As you can see in this configs there is 2</div><div>specific keywords for roles:</div><div>    * - means task should be executed on all roles</div><div>    master - task should be only executed on fuel master node</div><div>All other roles should be entities from fuel. If you know other exceptions - lets discuss them.</div><div><br></div><div>I would like to ask team for 2 things:</div><div>1. Examine approach and ask questions about any specific tasks, in order to test</div><div>this approach for sanity.</div><div>2. If you think that some of the keywords in configuration is not</div><div>appropriate, lets discuss it. For example we can not agree on term "stage",</div><div>because it is too widely used and basically we need another one.</div><div><br></div></div>