Hi,

To answer the original qustion with a somewhat cheap truism: It is possible, but not required that profiles are composable. E.g. profile::apache_server and profile::mysql_server should be trivially composable, because they manage disjunct sets of resources. On the other hand, profile::apache_server and profile::nginx_server might not be composable, because both need to use port 80, which cannot be shared.

So to the question of building composable profiles, if your profiles often need a specific set of php modules, it might ease the situation by creating a profile::fat_php_installation, which contains all required php modules and becomes the focal point for intra-cms-php-development. A different approach would be finegrained classes for each php module, which can be included multiple times across many profiles. A totally different approach would be to create local php installations for each CMS which do not talk to each other at all, leaving the CMS consumer to choose the exact patch level and composition required.


Surely, there are several other possibilities. Which one is the "right" one really depends on the structure of your development team and systems.


Regards, David

On 2014-05-17 14:39, Jesse Cotton wrote:
Yes it is feasible :) So really the server is just a PHP app server.
What makes it useable for all of the CMSs is that the correct set of
apache and php modules are installed, and it has the correct firewall
rules, cron jobs and backup jobs configured. With this in mind, my
inclination is to build a cms_app_server profile but that seems more
like a role then a profile.

On Friday, May 16, 2014 3:08:00 PM UTC-4, Joaquin Menchaca wrote:

    Hello: This might be a dumb question, but can you build a system
    manually with the various CMSes?  Are there a cross-set of
    technologies (Apache, PHP, MySQL) that will work on all CMSes in
    your organization?  I would think in terms in how you would build
    these systems manually w/o puppet in some organized way, then see
    how this can fit into puppet.   If you can build some reference
    platform that can host some or all of these, then you have your
    basic profile for that wonder-web-box system.

    Complexity might come in when you start separating, such as putting
    php in it's own module and apache in another, then sequencing them
    in profile.  You can use augues to scissor in php specific
    configurations (or alternatively creative erb ruby code to other
    configurations).  This is what I do for a nginx + php-fm configuration.

    class profile::webserver {  class  { "nginx": } -> class  { "php": } }


    On Friday, May 16, 2014 8:55:35 AM UTC-7, Jesse Cotton wrote:

        I work with Matt and am filling in for him since I posed this
        question to him originally.

        Our confusion really lies around how you layout profiles for a
        multi-function box. For example, suppose you have a role, "CMS
        App Server" that will host various CMS like Wordpress, Drupal,
        and others. They are all built on top of the same technologies,
        Apache, PHP, and MySQL. I don't believe you can build a separate
        profile for each CMS b/c they will conflict (at least within
        Puppet). Each will require a certain set of php modules and
        settings, apache modules and settings, etc. So do you build a
        single profile like profile::wordpress_drupal_cms3_cm4 or do you
        build a profile::apachefpm profile? The later seems more logical
        to me however you lose the ability to define profile specific
        hiera variables b/c profile::apachefpm is generic.


--
You received this message because you are subscribed to the Google
Groups "Puppet Users" group.
To unsubscribe from this group and stop receiving emails from it, send
an email to [email protected]
<mailto:[email protected]>.
To view this discussion on the web visit
https://groups.google.com/d/msgid/puppet-users/be9a1775-2d62-49f2-8b25-ae072729c059%40googlegroups.com
<https://groups.google.com/d/msgid/puppet-users/be9a1775-2d62-49f2-8b25-ae072729c059%40googlegroups.com?utm_medium=email&utm_source=footer>.
For more options, visit https://groups.google.com/d/optout.

--
You received this message because you are subscribed to the Google Groups "Puppet 
Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/puppet-users/5378A048.7010204%40dasz.at.
For more options, visit https://groups.google.com/d/optout.

Reply via email to