summaryrefslogtreecommitdiffstats
path: root/zarb-ml/mageia-sysadm/2010-October/000038.html
diff options
context:
space:
mode:
Diffstat (limited to 'zarb-ml/mageia-sysadm/2010-October/000038.html')
-rw-r--r--zarb-ml/mageia-sysadm/2010-October/000038.html329
1 files changed, 329 insertions, 0 deletions
diff --git a/zarb-ml/mageia-sysadm/2010-October/000038.html b/zarb-ml/mageia-sysadm/2010-October/000038.html
new file mode 100644
index 000000000..b21bf9b03
--- /dev/null
+++ b/zarb-ml/mageia-sysadm/2010-October/000038.html
@@ -0,0 +1,329 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
+<HTML>
+ <HEAD>
+ <TITLE> [Mageia-sysadm] [LONG] A not so modest proposal
+ </TITLE>
+ <LINK REL="Index" HREF="index.html" >
+ <LINK REL="made" HREF="mailto:mageia-sysadm%40mageia.org?Subject=Re%3A%20%5BMageia-sysadm%5D%20%5BLONG%5D%20A%20not%20so%20modest%20proposal&In-Reply-To=%3C1287878118.22938.155.camel%40akroma.ephaone.org%3E">
+ <META NAME="robots" CONTENT="index,nofollow">
+ <META http-equiv="Content-Type" content="text/html; charset=us-ascii">
+ <LINK REL="Previous" HREF="000072.html">
+ <LINK REL="Next" HREF="000067.html">
+ </HEAD>
+ <BODY BGCOLOR="#ffffff">
+ <H1>[Mageia-sysadm] [LONG] A not so modest proposal</H1>
+ <B>Michael Scherer</B>
+ <A HREF="mailto:mageia-sysadm%40mageia.org?Subject=Re%3A%20%5BMageia-sysadm%5D%20%5BLONG%5D%20A%20not%20so%20modest%20proposal&In-Reply-To=%3C1287878118.22938.155.camel%40akroma.ephaone.org%3E"
+ TITLE="[Mageia-sysadm] [LONG] A not so modest proposal">misc at zarb.org
+ </A><BR>
+ <I>Sun Oct 24 01:55:18 CEST 2010</I>
+ <P><UL>
+ <LI>Previous message: <A HREF="000072.html">[Mageia-sysadm] planning for sysadmin task
+</A></li>
+ <LI>Next message: <A HREF="000067.html">[Mageia-sysadm] [LONG] A not so modest proposal
+</A></li>
+ <LI> <B>Messages sorted by:</B>
+ <a href="date.html#38">[ date ]</a>
+ <a href="thread.html#38">[ thread ]</a>
+ <a href="subject.html#38">[ subject ]</a>
+ <a href="author.html#38">[ author ]</a>
+ </LI>
+ </UL>
+ <HR>
+<!--beginarticle-->
+<PRE>Hi,
+
+so as I said in the previous mail ( and before ), I propose that we use
+puppet+svn to manage the servers. Since this may not be obvious to
+everybody here is a long mail with a long explanation of each point.
+( spoiler, there is a bold proposal in the middle ).
+
+
+So first, what is puppet ?
+--------------------------
+
+As I didn't found a better explanation than the one of their website,
+let's cut and paste :
+
+&quot;Puppet is an open source data center automation and configuration
+management framework. Puppet provides system administrators with a
+simplified platform that allows for consistent, transparent, and
+flexible systems management.&quot;
+
+If you have heard of cfengine ( used at mdv ), or bcfg2, puppet is
+similar. It allows you to describe your computers in a configuration
+file and take care of installing and setting them according the
+configuration file. For example, you can say 'for server of group web
+server, install apache php, and use this config file, and start this
+process'. Usually, such system are combined with a regular vcs like svn,
+for reason that I will outline later.
+
+To quickly explain how it work, there is a central server ( called
+&quot;puppetmaster&quot; for puppet ) and a agent on each computer. Agents fetch
+the config from puppetmaster after a configurable interval of time and
+apply it ( ie, install rpm, change configfile, reload software, run
+tasks, etc ).
+
+
+So why use a configuration management system and a vcs ?
+--------------------------------------------------------
+
+First, it provides use with a audit trail. Like for code, we know who
+changed what and why. The goal is not to distribute blame, but to be
+able to have more information about a change ( ie, if 2 years ago, I
+changed some php variable that later found out to break some web
+software, the changelog will tell us why it was changed in the first
+place, maybe to fix another important software ). It allows us to repeat
+a configuration ( useful to migrate a service or to reinstall a
+server ), to rollback to previous versions of the configuration, and to
+work concurrently.
+
+It also ensure that process are running which add a extra safety layer
+in case of problem. And we can use hooks to check file before applying
+them automatically, or send mail to the admin when there is a change.
+For example, you can no longer commit broken dns zone since they are
+checked them before applying automatically ( provided you write the
+proper script, of course ).
+
+
+Why use puppet and not $FOO ?
+-----------------------------
+
+That's a good question. First, let's be honest, I take care of puppet in
+mdv, so of course, I am biased. In term of softwares, there is lots of
+choice
+( <A HREF="http://en.wikipedia.org/wiki/Comparison_of_open_source_configuration_management_software">http://en.wikipedia.org/wiki/Comparison_of_open_source_configuration_management_software</A> ), but reading on the topic on the web, we can safely restrict our discussion to cfengine 2, cfengine 3, puppet, bcfg2, chef.
+
+Chef is not packaged, nor easy to setup ( imho ) unless you use gems
+( which is a bad idea ). The configuration is basically written ruby. It
+seems nice, but no one played with it around me ( except people at
+CERN ).
+
+Cfengine 2 is what is used at zarb, and also lightly used at mandriva. I
+took a look at mandriva configuration, it is mainly used to prevent
+service from starting and to manage fstab. So nothing that could prevent
+a migration and in fact, almost nothing to reuse. The version 2 is also
+the legacy branch, and I am not sure it is maintained ( guillomovitch
+may know better than me ).
+So far, I think boklm, blino, me and maybe nanar know it.
+
+Bcfg2 is not packaged, and use xml for config file, which is imho a bad
+point for it. I have some friends that use it, they do not seems unhappy
+with it. yet, I found few information about it besides the web site.
+
+Cfengine3 is not packaged either. And the configuration language is
+different from cfengine 2, which would mean that we will likely have to
+re-learn it, for those that know the older version.
+
+Puppet is packaged ( by me ). It is used by several free software group
+( afaik, redhat and mozilla among others ), maintained by a enterprise
+and there is a healthy community providing modules and software around
+it. From what I know, Nanar and I know how to use it. Boklm also started
+to look at it.
+
+So I think we should first use a packaged software, for various obvious
+reasons. So the choice is basically between puppet and cfengine2. I
+asked to guillomovitch, our zarb.org cfengine expert about the migration
+to cfengine3, and he told me he was planning to use puppet instead. And
+having used both in production ( either zarb.org or my own server ), I
+think puppet is nicer and provides more high level component than
+cfengine 2, and is maintained. And since there will be almost no
+configuration reuse from Mandriva, I do not think it will be worth to
+keep it.
+
+
+Why use svn and not $FOO ?
+---------------------------
+
+Again a good question. At zarb, we use svn. At mdv, afaik, we used
+nothing, cfengine was just here to automate the cluster setup, which is
+a similar yet different task than the one we are discussing now. So, as
+I prefer DVCS, I tested git + puppet for you, 6 months ago. And after 3
+weeks, I have migrated to svn the whole system. The git hooks are just
+too complex for my poor mind ( ie, checking the syntax of puppet, bind,
+etc before applying was not easy ). So since svn is quite straight
+forward with that, and since we can always use git-svn to have the best
+of both world, I suggest to use svn.
+
+( yes, hg, bzr, cvs and the gazillion others were not suggested ).
+
+Now, if someone is a git-hooks master, I have no problem with git.
+
+What would be the work flow ?
+-----------------------------
+
+So the idea is :
+- a admin commit some config change in svn repository,
+- svn check the syntax if needed ( pre-commit hook )
+- svn extract the configuration with a post-commit hook ( and send a
+email ),
+- puppetmaster notice the change,
+- puppetmaster reload the configuration
+- each server get the configuration after some time
+- each server apply the configuration, and send mail in case of problem
+
+We can also add ACLs if needed.
+
+Could we also use svn to manage the documentation ?
+---------------------------------------------------
+
+Indeed, that's a good suggestion. I have learned that the documentation
+is indeed something that I never find when I need, and I have been often
+frustrated by the lack of useful tools to exploit it ( lik grep ). So,
+to me, it make sense to have the documentation along the configuration
+since I always have a checkout of the configuration on my home, and
+since I often update it. ( which is usually not the case with most
+wikis, as this requires extranous step ).
+
+
+Where is the bold proposal ?
+-----------------------------
+
+And now, for the very very bold part of the proposal :
+
+this svn should be public. Ie, people could browse it, changelog should
+be sent on this ml ( which is public ), and people could even do
+anonymous checkout.
+
+So I expect three type of reactions at this part of the mail :
+
+People who say &quot;mhh, I do not understand what he speak about&quot;.
+
+People who say &quot;this make sense, we are doing free software&quot;.
+
+And admins who are screaming &quot;argh, what about the passwords and
+security !&quot;
+
+
+So for people who do not understand, well, either reread or ask me on
+irc, or by mail. There is no shame into asking questions.
+
+For people who are screaming, first, no need to scream, I cannot hear
+you. And I have of course thought of that, and we can either :
+
+1) do a search and replace in puppet config for password stored in a
+secure location in the svn hooks that do the checkout
+
+2) use extlookup, a puppet feature that do this, provides we use it
+properly
+( <A HREF="http://www.devco.net/archives/2009/08/31/complex_data_and_puppet.php">http://www.devco.net/archives/2009/08/31/complex_data_and_puppet.php</A> ).
+
+Ie, we can store the passwords in a private CSV file somewhere, while
+publishing everything else. Obviously, stuff that count as data ( such
+as private certificates, gpg keys, etc ) should not be stored in svn, or
+not in the public one. And everything that would be considered as
+personal information should not be stored in the public svn either.
+
+And so for those that think, &quot;this make sense&quot;, yes, it make sense, but
+more than simple making sense, it bring some advantages :
+
+Sharing is the basis of the free software ethics. And so that show our
+commitment to free software.
+
+Publishing our configuration is also perfectly in line with the values
+of the project :
+
+&quot;We will empower our user base by demystifying advanced technologies&quot;
+-&gt; publishing our work as sysadmin is a step toward demystifying
+
+&quot;Mageia will always adhere to high security and privacy
+standards/technologies to protect our users' data.&quot;
+
+-&gt; letting everybody audit is IMHO a high security standard, while
+security by obscurity is not. We always say that free software is better
+for security for this reason, so we are consistent with this idea.
+
+&quot;We will cooperate with other OSS distributions and core and kernel
+developers with code contribution.&quot;
+
+-&gt; if the configuration is treated like code, so we are cooperating by
+giving it. For other distribution that may want to know how we do, be it
+big distros or smaller ones. For various project that want to know how
+we handle specific part of the infrastructure.
+
+&quot;We will maintain the vibrancy within our Community, always aiming to
+lead the way in collaborative development.&quot;
+
+-&gt; people are eager to help us as sysadmin. I received lots of help
+propositions. However for security reasons, I do not think we should
+have a group of 20 persons, neither we should have a too complex
+organisation for admins. Publishing the config allows us to collaborate
+with others by letting them :
+ - review our changes, as the svn changelog on cooker
+ - directly send patches, which can be much clearer to us
+ - directly search when they see a problem ( for very simple problem of
+course )
+ - help us to communicate with everybody when we fix problem or do some
+changes.
+
+More ever, this allow us to see who is motivated to help us, who is able
+to understand our infrastructure, and therefor, this can help us to
+recruit new admins in case of need, and allows us to manage the erosion
+of our group. This also bring a gentle introduction to new comers, who
+can see what happen.
+
+Finally, using this will allow us to have a forkable infrastructure. And
+this would a real innovation I think ( at least, a innovation good
+enough to be communicated ).
+
+I do not plan to let the project go bad, of course, but I also didn't
+intend Mandriva to disappear either.
+
+So in the future, if something goes wrong for any kind of reason, or if
+some peoples prefer to work without us, we are offering them what
+Mandriva didn't offered, a easy way to fork. And while I do hope it will
+not matter much in practice, I think that's a strong statement to
+demonstrate that we learned from our errors and that we have evolved.
+
+
+So, WDYT ?
+( please do not let me be warnocked
+<A HREF="http://en.wikipedia.org/wiki/Warnocked">http://en.wikipedia.org/wiki/Warnocked</A> )
+
+PS : baud, as I know you will ask me later and read this mail, yes, you
+can use use under CC-BY-SA or what you want.
+
+--
+Michael Scherer
+
+</PRE>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<!--endarticle-->
+ <HR>
+ <P><UL>
+ <!--threads-->
+ <LI>Previous message: <A HREF="000072.html">[Mageia-sysadm] planning for sysadmin task
+</A></li>
+ <LI>Next message: <A HREF="000067.html">[Mageia-sysadm] [LONG] A not so modest proposal
+</A></li>
+ <LI> <B>Messages sorted by:</B>
+ <a href="date.html#38">[ date ]</a>
+ <a href="thread.html#38">[ thread ]</a>
+ <a href="subject.html#38">[ subject ]</a>
+ <a href="author.html#38">[ author ]</a>
+ </LI>
+ </UL>
+
+<hr>
+<a href="https://www.mageia.org/mailman/listinfo/mageia-sysadm">More information about the Mageia-sysadm
+mailing list</a><br>
+</body></html>