<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Sep 22, 2017 at 4:17 PM, Jiří Stránský <span dir="ltr"><<a href="mailto:jistr@redhat.com" target="_blank">jistr@redhat.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="HOEnZb"><div class="h5">On 22.9.2017 13:44, Giulio Fidente wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
On 09/21/2017 07:53 PM, Jiří Stránský wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
On 21.9.2017 18:04, Marios Andreou wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
On Thu, Sep 21, 2017 at 3:53 PM, Jiří Stránský <<a href="mailto:jistr@redhat.com" target="_blank">jistr@redhat.com</a>> wrote:<br>
</blockquote></blockquote>
<br>
[...]<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
That way we could run the whole thing end-to-end via<br>
ansible-playbook, or<br>
if needed one could execute smaller bits by themselves (steps or nested<br>
playbook runs) -- that capability is not baked in by default, but i<br>
think<br>
we could make it so.<br>
<br>
Also the interface for services would be clean and simple -- it's always<br>
the ansible tasks.<br>
<br>
And Mistral-less use cases become easier to handle too (= undercloud<br>
installation when Mistral isn't present yet, or development envs when<br>
you<br>
want to tune the playbook directly without being forced to go through<br>
Mistral).<br>
<br>
</blockquote>
<br>
You don't *have* to go through mistral either way I mean you can always<br>
just run ansible-playbook directly using the generated playbooks if<br>
that is<br>
what you need for dev/debug etc.<br>
<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
Logging becomes a bit more unwieldy in this scenario though, as for the<br>
nested ansible-playbook execution, all output would go into a task in<br>
the<br>
outer playbook, which would be harder to follow and the log of the outer<br>
playbook could be huge.<br>
<br>
So this solution is no silver bullet, but from my current point of<br>
view it<br>
seems a bit less conceptually foreign than using Mistral to provide step<br>
loop functionality to Ansible, which should be able to handle that on<br>
its<br>
own.<br>
<br>
<br>
</blockquote>
just saying using mistral to invoke ansible-playbook doesn't imply having<br>
mistral do the looping/step control. I think it was already mentioned<br>
that<br>
we can/will have multiple invocations of ansible-playbook. Having the<br>
loop<br>
in the playbook then means organising our templates a certain way so that<br>
there is a _single_ parent playbook which we can parameterise to then run<br>
all or some of the steps (which as pointed above is currently the case<br>
for<br>
the upgrade and deployment steps playbooks).<br>
</blockquote>
<br>
Yup, +1 again :) However, the 1)2)3)4) approach discussed earlier in the<br>
thread suggested to hand over the step loop control to Mistral and keep<br>
using the Mistral workflow_tasks, which would make it impossible to have<br>
a single parent playbook, if i understood correctly. So Mistral would be<br>
a requirement for running all steps via a single command (impacting UC<br>
install and developer workflow).<br>
</blockquote>
<br>
yes I am not sold (yet?) on the idea of ansible driving the deployment<br>
and would like to keep some abstraction before it<br>
<br>
the additional abstraction will make it possible for example to execute<br>
tasks written as mistral actions (eg. python code) in between or during<br>
any given deployment step, instead of ansible tasks only ... I guess we<br>
could also write ansible actions in python but it's not trivial to ship<br>
them from THT and given the project mission we have of being "openstack<br>
on openstack" I'd also prefer writing a mistral action vs ansible<br>
<br>
similarily, the ceph-ansible workflow runs a task to build the ansible<br>
inventory; if we make the "external" services integration an<br>
ansible->ansible process we'll probably need to ship from THT an heat<br>
query (or ansible task) to be executed by the "outer" ansible to create<br>
the inventory for the inner ansible<br>
</blockquote>
<br></div></div>
Yea, allowing e2e software deployment with Ansible requires converting the current Mistral workflow_tasks into Ansible. In terms of services affected by this, there's in-tree ceph-ansible [1] and we have proposed patches for Kubernetes and Skydive (that's what i'm aware of).<span class=""><br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
I supported the introduction of mistral as an API and would prefer to<br>
have there more informations there versus moving it away into YACT (yet<br>
another configuration tool)<br>
</blockquote>
<br></span>
We could mitigate this somewhat by doing what Marios and James suggested -- running the global playbook one step at a time when the playbook is executed from Mistral. It will not give Mistral 100% of the information when compared with the approach you suggested, but it's a bit closer...<span class=""><br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
depending on mistral for the undercloud install is also not very<br>
different from depending on heat(-all)<br>
<br>
I understand the ansible->ansible process addresses the "simplification"<br>
issue we have been asked to look into; it is pretty much the only good<br>
thing I see about it though :D<br>
</blockquote>
<br></span>
Right, it's a simpler design, which i consider important, as my hope is that over time it would result in some time&effort savings, hopefully not just among developers, but also operators, when having to debug things or reason about how TripleO works.<br>
<br></blockquote><div><br></div><div>+1, especially the last part. I think it would be much easier for an operator to follow what is going on, if we have a (relatively) simpler mistral workbook to invoke the deployment playbooks (versus a bigger workbook that has to handle all the steps/looping etc). In the former case there would be one 'parent' playbook to go look at and then you could follow the trail of includes for other tasks/playbooks to get the 'big picture' for what happens when during the deployment.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Btw the points i didn't react to -- i mostly agree there :P. There are tradeoffs involved in both variants and it's not a clear-as-day choice for me either.<br>
<br></blockquote><div><br></div><div>It is really very unfortunate that we would break the workflow tasks by doing this (and sounds like ceph-ansible is not the only one now). I wonder if there is a way we could keep both - if the ceph deploy can come "after all the things"/be completely decoupled? So we would have mistral --> ansible --> [?ansible]* for the deployment of all the other things, return, then invoke the ceph workflow tasks? Problem is that we immediately lose the simplification game there since we end up with something potentially more confusing. Still if this is possible it may be worth considering for the first iteration, assuming we go this way mistral->ansible, changing the ansible workflow tasks is hard/difficult/not possible, and we can do the ceph deploy after everything else (but there are a lot of 'if' in this paragraph :) )</div><div><br></div><div>thanks, marios </div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Thanks :)<br>
<br>
Jirka<br>
<br>
[1] <a href="https://github.com/openstack/tripleo-common/blob/master/workbooks/ceph-ansible.yaml" rel="noreferrer" target="_blank">https://github.com/openstack/t<wbr>ripleo-common/blob/master/work<wbr>books/ceph-ansible.yaml</a><div class="HOEnZb"><div class="h5"><br>
<br>
______________________________<wbr>______________________________<wbr>______________<br>
OpenStack Development Mailing List (not for usage questions)<br>
Unsubscribe: <a href="http://OpenStack-dev-request@lists.openstack.org?subject:unsubscribe" rel="noreferrer" target="_blank">OpenStack-dev-request@lists.op<wbr>enstack.org?subject:unsubscrib<wbr>e</a><br>
<a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" rel="noreferrer" target="_blank">http://lists.openstack.org/cgi<wbr>-bin/mailman/listinfo/openstac<wbr>k-dev</a><br>
</div></div></blockquote></div><br></div></div>