{ "info": { "author": "Brian Gallew", "author_email": "bacula_configuration@gallew.org", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Environment :: Console", "Intended Audience :: System Administrators", "License :: OSI Approved :: GNU General Public License (GPL)", "Operating System :: OS Independent", "Programming Language :: Python", "Topic :: Utilities" ], "description": "Bacula Configuration\n====================\n\nScripts for Bacula configuration management\n\nMOTIVATION\n----------\n\nBacula's worst weakness is configuration. Adding one more host to your\ncurrent setup involves the following steps:\n\n1. Install the client software\n2. Create a bacula-fd.conf. It needs:\n - Director stanza, with new passwords, for each director\n - Messages stanza\n - FileDaemon/Client stanza\n3. Update your director(s) configuration:\n - Client entry (with the name and password from bacula-fd.conf)\n - One or more Job entries\n - (Optional) Storage/Pool entries.\n - (Optional) Create new Fileset/Schedule entries\n4. (Optional) Update your storage(s) configuration:\n - Pool\n - Storage\n - Device\n\nAll that data has to mesh together perfectly, or Bacula won't work.\nAdmittedly, you can short-circuit some of this by using the same passwords\neverywhere and a standard set of directors and only one Message\nconfiguration, and all hosts share the same storage pool and devices.\n\nThen there's auditing. *You* know perfectly well what hosts are backed up\nwith which scheuldes, and the filesets involved. But do your coworkers?\nWhat about your boss? Do you answer all the questions about which hosts\nare backed up, and how, or do you want to delegate all of that to your\nfront-line support? How about the possibility of giving your install team\nan easy tool for setting up new backups?\n\nFinally, there's maintenance. Storage servers are taken (temporarily)\noffline. Clients are decommissioned (which means all the jobs left in the\ncatalog at that point will never be pruned) or change roles. Directors are\nreplaced. New Filesets (and associated Jobs) need to be added to groups of\nClients. All of these events require tedious, error prone, manual updates.\n\nWHAT IT DOES\n------------\n\nCLI tool to import an existing configuration\n\nCLI tools to create/delete/edit all of the resources used by Bacula\n\nCLI tools designed to drop into cron that will keep the director(s) and\nstorage daemon(s) configuration up-to-date, with appropriate activity\nchecks around restarts.\n\nWeb interface that yields an appropriate bacula-fd.conf like this:\n`wget -O /etc/bacula/bacula-fd.conf http://director.example.com/cgi-bin/fd`\n\nCLI tool for updating Confluence with live documentation. This will\ninclude service and host notes, as well as schedules and filesets (where\npossible: filesets that use < syntax will be incomplete).\n\nCURRENT STATUS\n--------------\n\nModulo any bugs, this seems to be complete as a framework. Tests are\nincomplete, though, and I think it could use a little more polish\ndocumentation-wise. \n\nDEPENDENCIES\n-------------\n\nIf you do not have mysql-python installed, setuptools will install it as a\ndependency. If you would rather have it installed from an OS package, you\nshould do that first.\n\npyparsing is required if and only if you want to import an existing\nconfiguration. I should note that this is making DRY code difficult, as\nadding the parsing bits to the base class would make pyparsing required\neverywhere, which is really not desirable.\n\nDATABASE\n---------\n\nYou'll need to create the database schema using\nbacula_tools/data/bacula_configuration.schema \n\nToday, we are MySQL-only. Adding support for PostgreSQL shouldn't be\ndifficult, but I'd have to see a desire for that before doing the work.\n\nOS SETUP\n---------\n\nYou will need to customize several values, whose defaults are in\nbacula_tools/\\_\\_init\\_\\_.py. The easiest way to do so is to drop value\nassignments into any/all of the configuration files:\n\n\t/etc/bacula/bacula.conf\n\t/usr/local/etc/bacula/bacula.conf\n\t/usr/local/etc/bacula.conf\n\t~/.bacula.conf\n\nThe files are read in that order, and all updates applied in that order.\nIn particular, you will want to set values for:\n\n\tMYSQL_DB\n\tMYSQL_HOST\n\tMYSQL_USER\n\tMYSQL_PASS\n\nHere is an example script that will set it all up for you:\n\n\t#! /bin/sh\n\t\n\tpython setup.py install\n\tmysql -u root -p < /usr/local/etc/bacula.conf <