[[TOC]] = !SysAdmins = We can always use !SysAdmin support to help out with our infrastructure: developing tools & maintaining sites. == Deployment Cycle == * InstallationGuidelines * InstallationGuidelinesLinuxScript (if not using the templates on Zen infrastructure) * MaintenanceGuidelines * UserGuidelinesUpgrade * BluePrintUpgrades * PakistanDeploymentCycle == Setting up a New Instance == Eden project have 2 servers kindly donated by [http://zen.co.uk Zen Internet].[[BR]] These run KVM to provide different virtual machines.[[BR]] We use [http://pve.proxmox.com/wiki/Installation#Fully_virtualized_Machines_.28KVM.29 Proxmox] to manage these VMs: * Type: Fully Virtualized (KVM) * Installation media: Debian-507-amd64-netinst.iso (if not using the template) * Disk Storage: Images (Host1) data (Host2) * Start at Boot: tick * Disk type: VIRTIO * Disk size: 22GB * Guest Type: Linux-2.6 * Network Card: virtio * Bridge: vmbr0 These documents are secured - ask for access if you are going to contribute: * [https://spreadsheets.google.com/ccc?key=0AgESuewSG-wodHJTUEp1eGUzODY0bkg3aEhldllxMnc&hl=en_GB&pli=1#gid=0 IP Addresses/RAM Allocations for Eden Infrastructure] * [https://docs.google.com/Doc?docid=0Ac-Y6NVjUsjiZGN4a2s1Y3RfMTRkc2c0Y2djYw&hl=en_GB Setting up a new VM instance on Eden Infrastructure] === Copy from Template === We normally copy an instance from a predefined template rather than starting with a fresh OS build. * consider changing this with scripts similar to ISO/VM builds? Instances run [wiki:InstallationGuidelinesApacheModWSGI WSGI] & [wiki:InstallationGuidelinesMySQL MySQL]. 1. Turn off template VM instance if on 2. SSH into the host machine If using Host1: 3. {{{cd /spare/images/images}}} 4. {{{cp 106/vm-106-disk-1.raw 1xx/vm-1xx-disk-1.raw}}} If using Host2: 3. {{{ #zcat /spare/template/vm_release.gz | dd of=/dev/data/vm-1xx-disk-1 bs=8M dd if=/dev/data/vm-106-disk-1 of=/dev/data/vm-1xx-disk-1 bs=8M }}} 4. That'll take a while. You can get it to notify progress by doing a kill -USR1 {process id of the dd} 5. start your VM after the copy is complete 6. Open VNC Console 7. read /home/INSTALL in the vm 8. Set the IP (using the spreadsheet) == Upgrading an Instance == Need to decide whether the site will be upgraded straight from Trunk, or whether upgrades are staged via a Test server. Simple upgrades can be done using the aliases: * ConfigurationGuidelines#UsefulAliases We manage complex upgrades using Fabric: 1. Add the site to [http://eden.sahanafoundation.org/browser/static/scripts/tools/fabfile.py fabfile.py] 2. If no keys generated yet, then generate some: {{{ fab generate_keys }}} 3. deploy keys {{{ fab distribute_keys }}} 4. Run the upgrade (as/when required) {{{ fab deploy }}} == Trac Maintenance == To reset tickets which have been assigned to nobody: {{{ apache2ctl stop sqlite3 /home/sahana/trac/db/trac.db UPDATE ticket SET status = 'new' WHERE owner = '' and status = 'assigned'; .q apache2ctl start }}} To clear blocks from !MathCaptcha failures: * View Blocks: http://eden.sahanafoundation.org/mathcaptcha-attempts * Clear blocks: http://eden.sahanafoundation.org/mathcaptcha-clear == Mail Queues == View queue: {{{ mailq }}} Flush queue (inc Frozen messages): {{{ exim -qff }}} == References == * [https://docs.google.com/Doc?docid=0Ac-Y6NVjUsjiZGN4a2s1Y3RfMTNnNXZjbnpoZA&hl=en_GB SysAdmin notes for Eden Infrastructure] * [https://docs.google.com/Doc?docid=0ASR82JeFPTCOZGNicWQ2cl80N2c3Y21jcGdu&hl=en_GB Foundation Infrastructure] * [https://docs.google.com/Doc?docid=0Ac-Y6NVjUsjiZGN4a2s1Y3RfMTJjdjJ3MjNnZg&hl=en_GB Contacts] == !ToDo == === Windows Installer === See if we can upgrade the [InstallationGuidelinesWindowsMaintenance Windows Installer] to Python 2.7 to have Foreign-Key support (#900) Use Esky to provide an auto-update method: * http://pyconau.blip.tv/file/3840197/ === Infrastructure Virtual Machine Template === * {{{/home/INSTALL}}} * {{{/root/ChangeTemplate.sh}}} * scripts in {{{/usr/local/bin}}} * {{{apt-get install -y python-shapely}}} * Convert to PostgreSQL/PostGIS * Update Eden * Update Web2Py (as-required) * Update OS * 90 not upgraded packages (held back) * Increase swap to 2048Mb (from 750Mb) * can we do this in image? Add an [MaintenanceGuidelinesTips#Addingaswapfile emergency swapfile]? * Add extra disk for those instances which need extra capacity === Fabfile === * SQL indexes need restoring after DB upgrades * Add support for PostgreSQL * Add support for PostgreSQL to [http://eden.sahanafoundation.org/browser/static/scripts/tools/dbstruct.py dbstruct] (or have an equivalent file) === Test === We have an instance of Jenkins to automatically run through our Selenium tests: SysAdminJenkins * Fix the current builds * Trigger builds upon every commit * Email notifications: set up a mailing list which people can register/unregister themselves * Add timings to the output * Add a VPN Server (e.g. PPTPd) to allow NAT'd desktops to contribute tests (e.g. IE7) === Demo === * Have a set of reference data available === OSGeo LiveDVD === * https://svn.osgeo.org/osgeo/livedvd/gisvm/trunk/bin/install_sahana.sh * http://wiki.osgeo.org/wiki/Live_GIS_Add_Project#Install_Script * http://wiki.osgeo.org/wiki/Live_GIS_Build * InstallationGuidelinesLinuxScript#Ubuntu * https://wiki.mozilla.org/Firefox_Rebranding:Worksheet#Bookmarks === Pootle === * SysAdmin#TranslationProcess === Trac === * http://eden.sahanafoundation.org/wiki/BluePrintTrac * Old: [TracUpgradeEden TracUpgrade] * Convert from sqlite to PostgreSQL (or MySQL) to improve performance * [wiki:InstallationGuidelinesPostgreSQL#InstallPostgreSQL Install PostgreSQL] {{{ su postgres createuser -s -P trac createdb -O trac -E UTF8 trac }}} * http://trac-hacks.org/wiki/SqliteToPgScript {{{ vim /home/sahana/trac/conf/trac.ini trac.db.postgres_backend.postgresqlconnector = enabled svn co http://trac-hacks.org/svn/sqlitetopgscript/0.10 sqlitetopgscript cd sqlitetopgscript ./sqlite2pg -e /home/sahana/trac -p 'postgres://tracuser:pass@localhost/trac' }}} Errors: {{{ /usr/local/lib/python2.6/dist-packages/TracScreenshots-0.8dev-py2.6.egg/tracscreenshots/core.py:13: DeprecationWarning: the sets module is deprecated import sets Traceback (most recent call last): File "./sqlite2pg", line 335, in sys.exit(main(sys.argv[1:])) File "./sqlite2pg", line 331, in main Main(opts) File "./sqlite2pg", line 250, in Main rc = tmigration.migrateTable(tname) or rc File "./sqlite2pg", line 72, in migrateTable rc = self.default_copy(table) File "./sqlite2pg", line 93, in default_copy pgcur.execute(insert_into, row) File "/usr/local/lib/python2.6/dist-packages/Trac-0.12.1-py2.6.egg/trac/db/util.py", line 65, in execute return self.cursor.execute(sql_escape_percent(sql), args) psycopg2.InternalError: current transaction is aborted, commands ignored until end of transaction block }}} * Add Timing & Estmation Plugin * Investigate a fix or alternative to http://trac-hacks.org/wiki/MathCaptchaPlugin for allowing Trac users to register bugs anonymously whilst not locking out our testing team. * See if we can not send emails out to users for the updates they make themselves (maybe fixed in 0.12.x?) * Investigate a fix for the last section edit doubling-up the footers (maybe fixed in 0.12.x?) === Release Process === * [wiki:DeveloperGuidelinesReleaseProcess#ExportApplication] * Bzr start-commit hook to [wiki:DeveloperGuidelinesBzr#ToolsfordirectcommitterstoTrunk check for existence of 'compiled' folder] * Installation scripts or packages for operating systems and distributions that aren't already available (i.e. other than Windows or Debian/Ubuntu). === Translation Process === * Bzr start-commit hook to update all languages (need a script rather than the current appadmin UI method) {{{ cd web2py python web2py.py -S eden -R applications/eden/static/scripts/tools/languages.py }}} * Scripts to automate the conversion 2 PO & upload/download to/from Pootle: UserGuidelinesLocalisation Unfortunately it doesn't seem that we can currently automate the upload back to Pootle: * http://www.mail-archive.com/translate-pootle@lists.sourceforge.net/msg01187.html === !MeetBot === We could use a MeetBot to log our IRC meetings better: * https://launchpad.net/meetbot * example output: http://meetings.jenkins-ci.org/jenkins/2011/jenkins.2011-02-04-23.02.html ---- [wiki:Projects/Infrastructure]