<div dir="ltr"><div class="gmail_extra">On Wed, Dec 11, 2013 at 11:19 PM, James <span dir="ltr">&lt;<a href="mailto:purpleidea@gmail.com" target="_blank">purpleidea@gmail.com</a>&gt;</span> wrote:<br><div class="gmail_quote">
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im">Thanks... I just read your 4.0 doc. I have a few comments:<br></div>
<br>
1) Someone talked to me a bit about the sub bricks idea. I haven&#39;t<br>
decided how awesome or not this would be, but I&#39;m feeling positive<br>
about the change. See 2b for a related comment. I&#39;m keen to see<br>
Gluster gaining an understanding of &quot;tiered&quot; storage.<br>
<br>
2) I wasn&#39;t sure if I understood certain parts correctly. Depending on<br>
if I did or didn&#39;t, I think there may or may not be some significant<br>
problems with the suggested model for building higher level management<br>
tools (eg: puppet-gluster). I would have to know more to know for<br>
sure. For one, I got the feeling that some commands needed to be<br>
executed one after another in a certain order...<br>
<br>
2b) If someone can help with the algorithms I mentioned in:<br>
<a href="https://lists.gnu.org/archive/html/gluster-devel/2013-11/msg00135.html" target="_blank">https://lists.gnu.org/archive/html/gluster-devel/2013-11/msg00135.html</a><br>
  I think I&#39;ll be able to provide a convincing case that Gluster<br>
management isn&#39;t as bad as you might be alluding to in your 4.0<br>
comments. I think a lot of the GlusterFS core team are allergic to<br>
Puppet. I think this is quite normal, because Gluster core is super<br>
low level C, where as Puppet (a mostly declarative language) is super<br>
high level and on the opposite side of this spectrum. However, I think<br>
most people are discounting the importance of having something like<br>
this. The future is _all_ configuration management. The early adopters<br>
are almost mostly there.<br></blockquote><div><br></div><div style>That&#39;s probably not entirely the case. I don&#39;t think there is anybody who disagrees on the need/importance of puppet and puppet-gluster. I also see how it becomes almost necessary on a 10k node cluster, and why it is important to make gluster integrate nicely with the puppet ecosystem.</div>
<div style><br></div><div style>At the same time, the reason why puppet-gluster module is having to solve complex issues is because gluster management isn&#39;t doing the right job. The algorithms you are working for puppet-gluster are not puppet specific and their right &quot;location&quot; is in the core of gluster. It doesn&#39;t feel right to see such &quot;dense&quot; logic in the puppet layer while that intelligence is needed pretty much for every one.</div>
<div style><br></div><div style>I&#39;m hoping 4.0 will make the gluster-puppet module simple and elegant, and not &quot;unnecessary&quot;.</div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

3) Between early Gluster x.y and 3.x I had to completely change<br>
Puppet-Gluster to support the new management style. The current<br>
Puppet-Gluster stuff is easily one of the most complicated Puppet<br>
modules that exists _anywhere_! This is partly due to the fact that<br>
while Gluster might be easy to manage (and even logical) for a human,<br>
it is _not_ from an automation point of view.</blockquote><div><br></div><div style>That&#39;s precisely my point as well. The complexity in the puppet module is for a problem which has to be fixed somewhere. And I think the right place for that extra logic to reside is within the gluster management layer. Puppet module should not need to know how gluster is distributing and replicating data - it is too low level/internal knowledge to be exposed up to a puppet-like layer.</div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"> In any case, I&#39;ve built<br>
it, but there are certainly ways that Gluster internal could make it<br>
easier (thank goodness for --xml anyways ;))<br>
<br>
If Gluster 4.0 radically breaks all the work I&#39;ve done for current<br>
Puppet-Gluster, I really won&#39;t have any desire to rewrite all of this<br>
for a third time without a large pay cheque from RedHat. On the plus<br>
side, this could be a good way to get rid of me ;) Either way, whether<br>
you consult with me, or you consult with a different configuration<br>
management expert, do the smart thing: find out if the management<br>
style you&#39;re proposing is compatible with configuration management. If<br>
it will work elegantly with Puppet, it will work for Chef, etc...<br>
Usually when something &quot;fits&quot; really well with well designed Puppet,<br>
it&#39;s a sign that the thing was designed _extremely well_.<br>
<br>
As an example of this, the FreeIPA team (RedHat) did a kick ass job<br>
putting together the FreeIPA management interfaces, and as a result,<br>
it is extremely pleasant to use natively, and also with Puppet.<br>
Example: <a href="https://github.com/purpleidea/puppet-ipa" target="_blank">https://github.com/purpleidea/puppet-ipa</a></blockquote><div><br></div><div style>Will check that out, thanks for the pointer.</div><div><br></div>
<div style>Thanks!</div><div style>Avati</div><div style><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
4) Looking forward to 4.0 ! I hope I have a chance to see the going<br>
ons very early, while there&#39;s still a chance for me to have a positive<br>
influence on the external interfaces.<br>
<br>
Happy hacking<br>
Hope my comments are helpful/useful,<br>
<br>
James<br>
<br>
PS: I know that some at RedHat and Gluster core will probably think<br>
this is insane, but think about it: In the future (maybe that&#39;s now)<br>
software will ship natively with some sort of (probably mostly<br>
declarative) &quot;front end&quot; as the recommended UI for management. This<br>
means it makes sense to have some interfaces in native code, and some<br>
as higher level abstractions around your native interfaces. Think of<br>
the analogy of Gluster in C, but perhaps glusterd in higher level<br>
python. Now realize that the &quot;next level&quot; might be something like<br>
Puppet. I think it&#39;s already possible, when you include some of my<br>
Puppet hacks, Example: <a href="https://github.com/purpleidea/puppet-pushing" target="_blank">https://github.com/purpleidea/puppet-pushing</a><br>
</blockquote></div><br></div></div>