{ "info": { "author": "Dirk Dankhoff", "author_email": "dd@robhost.de", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: System Administrators", "Natural Language :: English", "Operating System :: POSIX :: Linux", "Topic :: System :: Monitoring", "Topic :: System :: Systems Administration" ], "description": "Updian\r\n======\r\n\r\nRobHost GmbH [support@robhost.de], 2007-2013\r\n\r\nLicense: GPLv2+\r\n\r\nPLEASE NOTE THAT THIS SOFTWARE COMES WITH ABSOLUTELY NO WARRANTY!\r\n\r\n\r\nWhat is it good for?\r\n--------------------\r\n\r\nUpdian is a minimalistic update-engine for DEBIAN GNU/Linux based machines\r\n(and other flavours like Ubuntu based on APT) and, since v0.4, for machines\r\nwith YUM such as CentOS. You can use it to maintain all your machines\r\nremotely over a simple web interface written in Python. There are 2 cronjobs,\r\none checks for updates, another does them. You can choose from the\r\nwebinterface which servers to update (it shows up the packages) and read\r\nlogs after the updates are done.\r\n\r\nUpdian does not need any databases, all data is stored in (mostly empty)\r\nflatfiles. It can manage a high number of servers, we've tested/used it with\r\n100+ servers without any problems...\r\n\r\nActually, Updian only does ``apt-get upgrade``, not ``dist-upgrade``. So it's a\r\ngood idea to run ``apticron`` or anything in parallel on the remote machines to\r\nkeep informed about upcoming dist-upgrades. Apticron is also good for checking\r\nthe correctness of Updian - it mails you the updates every day including\r\nchangelog. These you can now install with Updian. If Updian is working\r\ncorrectly, apticron should mail you the same update-infos (except\r\ndist-upgrades) as Updian shows up in the webfrontend.\r\n\r\nFor every server Updian creates an logfile, so you're always informed about\r\nupdates made. The logfiles are available through the webfrontend.\r\n\r\n\r\nRequirements\r\n------------\r\n\r\n- Any Linux distribution on the machine which runs Updian (local-side)\r\n- Debian GNU/Linux or other apt-running systems (Ubuntu, Knoppix ...) or\r\n yum-running systems (CentOS, RHEL, Fedora Core ...) on the remote-side\r\n- Python 2.6 or newer (local-side)\r\n- `Fabric `_ and `pip `_ for\r\n automated installation (local-side)\r\n- a crond if you want to automate updian's checking and updating (local-side)\r\n- Access as root to all involved machines (gaining root via sudo is also\r\n supported)\r\n- Exchanged SSH-publickeys between the local machine running Updian and the\r\n remote servers\r\n\r\n * that means you can login from the machine running Updian to the remote\r\n server via ``ssh `` without entering a password\r\n * Howto: On the machine running Updian::\r\n\r\n ssh-keygen -t rsa\r\n cat ~/.ssh/id_rsa.pub | ssh remote-user@remote-server cat - \">>\" ~/.ssh/authorized_keys\r\n # or 'ssh-copy-id remote-server'\r\n\r\n- Optional: Web server with WSGI support or\r\n a separate WSGI application server (local-side, see below)\r\n\r\n\r\nInstallation\r\n------------\r\n\r\nUsing Updian's fabfile (recommended)\r\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n\r\n- Change directory to where Updian shall be installed (Updian's home directory)\r\n- Download the `latest fabfile `_\r\n- Run ``fab`` and follow the onscreen instructions.\r\n- Add cronjobs for fully automated updates (see `Example crontab entries`_).\r\n\r\nFrom snapshot archive (manually)\r\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n\r\n- Extract the files to a folder on your server (the machine where Updian should\r\n run).\r\n- Run ``updiancmd init_cfg`` to create an example configuration file.\r\n- Edit the file config.ini according to the instructions inside the file.\r\n- Install Updian's dependencies listed in requirements.txt\r\n (e.g. via pip: ``pip install -r requirements.txt``).\r\n Note: It is recommended to use a virtual environment for production usage (see\r\n `virtualenv documentation`_).\r\n- Optional: Use ``updiancmd setpw`` to create one or more users for basic\r\n authentication. If you skip this everyone on the network you serve Updian on\r\n will be able to access it without restriction as long as you don't add any\r\n protection upstream.\r\n- Run ``updiancmd runserver `` (omitting the ip address\r\n argument leads to serving Updian on the loopback interface).\r\n- Open http://yourhost:5000/ in your web browser.\r\n- Click on \"Servers\" and add your servers.\r\n- For testing purposes run ``updiancmd collect`` on your shell.\r\n\r\n * You should see some output and (if there are updates) the updates should\r\n be visible via the web interface.\r\n\r\n- Run ``updiancmd update`` if you want Updian to update your chosen servers.\r\n- Add cronjobs for fully automated updates (see `Example crontab entries`_).\r\n- If you plan on serving Updian's web interface on an untrusted network\r\n configure your web server or a WSGI container to serve it using the file\r\n ``updian.wsgi``. For further information see `Flask Deployment Options`_.\r\n\r\n.. _virtualenv documentation: http://www.virtualenv.org/en/latest/\r\n.. _Flask Deployment Options: http://flask.pocoo.org/docs/deploying/\r\n\r\n\r\nExample crontab entries\r\n^^^^^^^^^^^^^^^^^^^^^^^\r\n\r\n::\r\n\r\n 0 8 * * * /var/www/updian/updiancmd collect > /dev/null 2>&1 # (collect updates daily at 8 am)\r\n 0 9 * * * /var/www/updian/updiancmd update > /dev/null 2>&1 # (run updates daily at 9 am)\r\n\r\n\r\nExample configuration using Apache HTTPd 2.x with mod\\_wsgi\r\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n\r\nTo use mod\\_wsgi on the Apache2 web server you can use something along the\r\nfollowing lines in your virtual host configuration (Assuming you installed\r\nUpdian in /var/www/updian)::\r\n\r\n \r\n WSGIScriptAlias /updian /var/www/updian/updian.wsgi\r\n WSGIPassAuthorization On\r\n\r\n WSGIDaemonProcess updian-webif python-path=/var/www/updian home=/var/www/updian\r\n WSGIProcessGroup updian-webif\r\n\r\n Alias /updian/static /var/www/updian/static\r\n\r\n \r\n Order allow,deny\r\n Allow from all\r\n \r\n \r\n\r\nIf you have installed Updian's dependencies into a virtual environment you\r\nshould add its site-packages directory to the python-path of the daemon\r\nprocess::\r\n\r\n WSGIDaemonProcess updian-webif python-path=/yourvenv/lib/python2.6/site-packages:/var/www/updian home=/var/www/updian\r\n\r\nYou can also use ``WSGIPythonHome`` to set an alternative Python interpreter for\r\nmod\\_wsgi to use globally (see: `WSGIPythonHome documentation`_).\r\n\r\n.. _WSGIPythonHome documentation: http://code.google.com/p/modwsgi/wiki/ConfigurationDirectives#WSGIPythonHome\r\n\r\n\r\nUpdating from old server.txt format (used in UPDIAN v0.4 and older)\r\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n\r\n- Run ``updiancmd convert_sl``\r\n- For v0.5 only: Update your config.php to point to the newly created file\r\n\r\n\r\nCheckrestart for updated services on remote machines\r\n----------------------------------------------------\r\n\r\nSince v0.3 Updian can check if there are services running on remote machines\r\nthat need to be restartet. That is often needed if libs used by many\r\nprograms (libssl i.e.) have been updated on the remote machine. After that\r\nit is i.e. required to restart apache or postfix.\r\n\r\nUpdian uses the script ``checkrestart`` from the package ``debian-goodies`` for\r\nthat. Just apply ``apt-get install debian-goodies`` on the desired remote\r\nmachines.\r\n\r\nIt does, in short, anything like this to find out which procs using\r\ndeprecated libs: ``lsof -n | egrep -i \"(DEL|inode)\"``\r\n\r\nUpdian writes the output from ``checkrestart`` to \\_checkrestart.log\r\n(see \"Logs\" in webfrontend).\r\n\r\n\r\nUPDIAN restricted shell - updian-rsh\r\n------------------------------------\r\n\r\nUpdian's default mode of operation gives the updian server unlimited root access\r\nto all servers.\r\nupdian-rsh is a shell script that can be used with ssh's forced command feature\r\nto limit the commands updian can execute over ssh. Then, even if the updian\r\nserver is compromised, the intruder can only do one thing with your other\r\nservers: Update them.\r\n\r\nTo use it, copy updian-rsh to the machines you want to update, for example to\r\n/usr/local/bin.\r\nPrefix the line in /root/.ssh/authorized\\_keys with\r\n\r\n::\r\n\r\n command=\"/usr/local/bin/updian-rsh\"\r\n\r\nso that it looks like this:\r\n\r\n::\r\n\r\n command=\"/usr/local/bin/updian-rsh\" ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA8Yf[...]\r\n\r\nNow when you try to connect to that server with ``ssh root@remote_server``\r\nyou should get the message\r\n\r\n::\r\n\r\n Updian Restriced Shell: Interactive shell not allowed\r\n\r\nand the connection is closed.", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://www.robhost.de/updian/", "keywords": "", "license": "GPLv2+ ", "maintainer": "", "maintainer_email": "", "name": "UPDIAN", "package_url": "https://pypi.org/project/UPDIAN/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/UPDIAN/", "project_urls": { "Download": "UNKNOWN", "Homepage": "http://www.robhost.de/updian/" }, "release_url": "https://pypi.org/project/UPDIAN/0.6/", "requires_dist": null, "requires_python": null, "summary": "A program for monitoring and executing updates on remote systems", "version": "0.6" }, "last_serial": 772984, "releases": { "0.6": [ { "comment_text": "", "digests": { "md5": "82bec97c282803a71c3e889474b157d4", "sha256": "49b98a9e53a35787e4413b4077eb86bbda466c9fa18ed1fa164fba85ddce4dd6" }, "downloads": -1, "filename": "UPDIAN-0.6.tar.gz", "has_sig": false, "md5_digest": "82bec97c282803a71c3e889474b157d4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 43652, "upload_time": "2013-06-17T12:25:11", "url": "https://files.pythonhosted.org/packages/ba/d3/22c785f718f2f328bcc58dd44bc4f3befdf8aa5c4443b5ddd2b1fcf0f2f6/UPDIAN-0.6.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "82bec97c282803a71c3e889474b157d4", "sha256": "49b98a9e53a35787e4413b4077eb86bbda466c9fa18ed1fa164fba85ddce4dd6" }, "downloads": -1, "filename": "UPDIAN-0.6.tar.gz", "has_sig": false, "md5_digest": "82bec97c282803a71c3e889474b157d4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 43652, "upload_time": "2013-06-17T12:25:11", "url": "https://files.pythonhosted.org/packages/ba/d3/22c785f718f2f328bcc58dd44bc4f3befdf8aa5c4443b5ddd2b1fcf0f2f6/UPDIAN-0.6.tar.gz" } ] }