See also: Configuration Management for Tiki Projects
The challenge: You have a big Tiki project and you want to use the traditional development, testing, acceptance and production setup (DTAP)
How do you deal with:
- Generic code that will be upstreamed
- Custom code that won't be upstreamed (but should be versioned locally)
- Custom theme/design (which should be versioned locally)
- Content (in database)
- Content via Wiki Plugins is routinely used to do stuff we used to do in PHP
- Configuration, typically in database, but can be in text files via System Configuration
- Translations that will be upstreamed
- Translations that won't be upstreamed (but should be versioned locally) (could be in DB or lang/xx/custom.php)
- Maintainability of advanced configurations of features
On a related note, here is a Messaging systems evaluation
Examples
- Content evolve in prod (user generated content)
- A new feature is in development, so code needs to be merged from dev to testing. But often preferences and modules need to be configured.
- If you refresh the testing data from the production server (like as Pre-Dogfood Server, you will loose your preferences & module configurations.
Wishes
- A way to easily check on which server I am (which doesn't get overwritten with rsync)
- This is to avoid mistakes
- Quick way to compare the configurations between the 2 to 4 sites and have a way to merge data / propagate some data
- Make it possible to identify a site as staging or development and have different settings, such as
- <me
ta NAME="ROBOTS" CONTENT="NOINDEX, NOFOLLOW"> - Don't send out notification emails
- Site closed
- <me
Dev, Test, Prod
- Dev: 10.x
- Test: 9.x latest
- Prod: 9.x older
Before doing svn up on prod, we do svn up on test, and we do a diff of:
- svn diff test
- svn diff prod
Idea
If both sites have shell and use System Configuration, maybe use something like http://www.fossil-scm.org/ to compare/merge...
Who
- Marc Laporte
- you? (Add your name to join the working group)
Related links
- Read-only mode (ex.: when migrating a Tiki to a new server and you want the old one to still show content but not have edits)
- Easy way to compare configuration of 2 Tiki sites
- show.tiki.org
- WikiFarm
- TRIM
- Backup
- Infrastructure Revamp
- Monitoring and Email alerts of hard errors
- Recovery
- System Configuration
- Database Schema Upgrade
- Server tools
- Server Check and Compatibility
- URL Rewriting Revamp
- Logs
- htaccess
- Operating System independence
- Performance
- Reverse proxy
- Permission Check
- Pre-Dogfood Server
- Maintainability of advanced configurations of features
- Custom installation version
- Continuous Integration
- Continuous Testing Server
- Distributed revision control
- Distributed data
- Tracker Synchronization
- Command-line tool
- http://en.wikipedia.org/wiki/Development,_testing,_acceptance_and_production (DTAP)
- http://en.wikipedia.org/wiki/Development_environment_(software_development_process)
- The Drupal community is working on this:
- https://en.wikipedia.org/wiki/Orchestration_(computing)
- http://heyrocker.com/cmi-feature-freeze
- http://symfony.com/blog/new-in-symfony-2-3-interactive-management-of-the-parameters-yml-file
Options on Ohloh.net
Overview
T-DOSE 2012 Toshaan Bharvani, Puppet, Chef, CFEngine, Ansible, Salt, different approaches
http://www.coloandcloud.com/editorial/func-mcollective-salt-and-rundeck/
Puppet
Salt
- Black Duck Software Names 2011 Open Source Rookies of the Year
- http://opencredo.com/blog/a-dive-into-salt-stack
- uses YAML
- http://www.coloandcloud.com/editorial/an-interview-with-salt-author-thomas-hatch/
- http://www.theregister.co.uk/2013/01/16/open_and_shut/
- http://opensourcedelivers.com/2012/04/24/what-makes-open-source-projects-take-off-the-salt-case-study/
- https://salt-cloud.readthedocs.org/en/latest/
- Salt business model
- http://www.linuxjournal.com/content/using-salt-stack-and-vagrant-drupal-development?page=0,2
- http://missingm.co/2013/06/ansible-and-salt-a-detailed-comparison/
Chef
Free hosted version up to 5 nodes: http://www.opscode.com/chef/
Just scheduled for Jul 31: Thomas S. Hatch - SaltStack update (http://saltstack.com/community.html). We had him on back in Nov 2011, but a lot has happened in the Salt world, including bare metal provisioning, and a lot of other cloudy things.
CFEngine
Bcfg2
- http://en.wikipedia.org/wiki/Bcfg2
- http://docs.bcfg2.org/
- To make a bcfg2 bundle for Tiki, we first should make DEB Packaging
cdist
Quattor
Juju
Crowbar
Nuri
Managing TikiWiki CMS with Nuri
Ansible
- http://www.blackducksoftware.com/news/releases/black-duck-announces-2012-open-source-rookies-year-winners
- http://highscalability.com/blog/2012/4/18/ansible-a-simple-model-driven-configuration-management-and-c.html
- http://server.dzone.com/articles/ansible-cm-deployment-and-ad
- Uses YAML
- http://ansible.cc/faq.html
- http://www.arrfab.net/blog/?p=361
- http://fourkitchens.com/blog/2012/06/29/ansible-simple-configuration-deployment
- https://en.wikipedia.org/wiki/Ansible_(software)
- http://www.coloandcloud.com/editorial/an-interview-with-ansible-author-michael-dehaan/
- http://ansible.cc/docs/modules.html
- SVN, Git, hg, mysql_db, mysql_user, nagios, apt/yum
- http://missingm.co/2013/06/ansible-and-salt-a-detailed-comparison/
Alexandre Bourget demoes Ansible:
Fredistrano
OCS Inventory NG
Radmind
Rudder
Spacewalk
Software Test Automation Framework (STAF)
Ganeti
"Ganeti is a cluster virtual server management software tool built on top of existing virtualization technologies such as Xen or KVM and other Open Source software."
https://code.google.com/p/ganeti/
Serf
Serf is a decentralized solution for cluster membership, failure detection, and orchestration. Lightweight and highly available.
Phing
PHing Is Not GNU make; it's a PHP project build system or build tool based on Apache Ant.
Archipel
"Archipel is a solution to manage and supervise virtual machines. No matter if you have a few locally on your computer or thousands through data centers, Archipel is a central solution to manage them all. You can perform all basic virtualization commands and many other things like live migration, VMCasts, packages, etc."
Capistrano
Roboconf
Related: Vagrant