organising sysadmin documentationjmtd.net/software/ikiwiki/organising_sysadmin_documentation.pdf ·...

67
organising sysadmin documentation Jon Dowland Information Systems and Services Newcastle University

Transcript of organising sysadmin documentationjmtd.net/software/ikiwiki/organising_sysadmin_documentation.pdf ·...

Page 1: organising sysadmin documentationjmtd.net/software/ikiwiki/organising_sysadmin_documentation.pdf · Introduction • Newcastle University o~4,800 staff; ~20,000 students • Information

organising sysadmin documentation

Jon DowlandInformation Systems and Services

Newcastle University

Page 2: organising sysadmin documentationjmtd.net/software/ikiwiki/organising_sysadmin_documentation.pdf · Introduction • Newcastle University o~4,800 staff; ~20,000 students • Information

Overview

• History and first attempt• Findings• Next generation• Conclusion

Page 3: organising sysadmin documentationjmtd.net/software/ikiwiki/organising_sysadmin_documentation.pdf · Introduction • Newcastle University o~4,800 staff; ~20,000 students • Information

History and first attempt

Page 4: organising sysadmin documentationjmtd.net/software/ikiwiki/organising_sysadmin_documentation.pdf · Introduction • Newcastle University o~4,800 staff; ~20,000 students • Information

Introduction

• Newcastle Universityo ~4,800 staff; ~20,000 students

• Information Systems and Serviceso ~160 people

• Diverse ecosystem

Page 5: organising sysadmin documentationjmtd.net/software/ikiwiki/organising_sysadmin_documentation.pdf · Introduction • Newcastle University o~4,800 staff; ~20,000 students • Information

ISS UNIX Team

small, 5 peoplewidely varying age and experience

responsibilitiessystem administration and infrastructurehigher-level (user-facing) services sister teams: networks, windows, SAPlegacy systems

Page 6: organising sysadmin documentationjmtd.net/software/ikiwiki/organising_sysadmin_documentation.pdf · Introduction • Newcastle University o~4,800 staff; ~20,000 students • Information

Inherited situation

directory full of text filescategorization by directorylots of out-of-date informationlots of undocumented stuff

Page 7: organising sysadmin documentationjmtd.net/software/ikiwiki/organising_sysadmin_documentation.pdf · Introduction • Newcastle University o~4,800 staff; ~20,000 students • Information

What do we keep in there?

• Procedure documents• HOWTOs

Page 8: organising sysadmin documentationjmtd.net/software/ikiwiki/organising_sysadmin_documentation.pdf · Introduction • Newcastle University o~4,800 staff; ~20,000 students • Information

Existing experience

• wikipedia editing• webteam-based mediawiki hosting service• version control (CVS, SVN)

Page 9: organising sysadmin documentationjmtd.net/software/ikiwiki/organising_sysadmin_documentation.pdf · Introduction • Newcastle University o~4,800 staff; ~20,000 students • Information

First-cut requirements

• import existing data• support reviewing material• version control

• online• multimedia• integrated with SSO

Page 10: organising sysadmin documentationjmtd.net/software/ikiwiki/organising_sysadmin_documentation.pdf · Introduction • Newcastle University o~4,800 staff; ~20,000 students • Information

Mediawiki

Page 11: organising sysadmin documentationjmtd.net/software/ikiwiki/organising_sysadmin_documentation.pdf · Introduction • Newcastle University o~4,800 staff; ~20,000 students • Information

Mediawiki

• <http://www.mediawiki.org/> • powers wikipedia• LAMP• GPL (v2)• CMS

Page 12: organising sysadmin documentationjmtd.net/software/ikiwiki/organising_sysadmin_documentation.pdf · Introduction • Newcastle University o~4,800 staff; ~20,000 students • Information

SSO integration

Shibboleth SSO software

<http://shibboleth.internet2.edu/>

mediawiki Shibboleth plugin

<http://www.mediawiki.org/wiki/Extension:Shibboleth_Authentication>

Apache configured with mod_shibd

AuthType shibbolethShibRequireSession Onrequire eppn [email protected]...

Page 13: organising sysadmin documentationjmtd.net/software/ikiwiki/organising_sysadmin_documentation.pdf · Introduction • Newcastle University o~4,800 staff; ~20,000 students • Information

Mediawiki markup

• simple• proprietary

Page 14: organising sysadmin documentationjmtd.net/software/ikiwiki/organising_sysadmin_documentation.pdf · Introduction • Newcastle University o~4,800 staff; ~20,000 students • Information

Categories

a tagging mechanism

adding the following to the 'Sandbox' page

[[Category: Example]] yields the page 'Category:Example'

Page 15: organising sysadmin documentationjmtd.net/software/ikiwiki/organising_sysadmin_documentation.pdf · Introduction • Newcastle University o~4,800 staff; ~20,000 students • Information

Importing data

• one page per old file• each page is categorized with

o "imported from fireman FAQ"o "articles to review"

• Imported files on a per-parent-directory basis

o vary the precise categories for each directory

Page 16: organising sysadmin documentationjmtd.net/software/ikiwiki/organising_sysadmin_documentation.pdf · Introduction • Newcastle University o~4,800 staff; ~20,000 students • Information

WWW::MediaWiki

perl module to manipulate mediawikisVCS-like command-line tool front-end

$ mvs login -d (host) -u (user) -p (pass) -w (path)

Create a new page, or checkout an existing one: $ mvs update Somepage.wiki make and commit a change: $ echo hello world >> Somepage.wiki$ mvs update Somepage.wiki

Page 17: organising sysadmin documentationjmtd.net/software/ikiwiki/organising_sysadmin_documentation.pdf · Introduction • Newcastle University o~4,800 staff; ~20,000 students • Information

Importing: categorisation

$ echo '[[Category: articles to review]]' \ >> Somepage.wiki $ echo '[[Category: Imported from fireman FAQ]]' \ >> Somepage.wiki

Page 18: organising sysadmin documentationjmtd.net/software/ikiwiki/organising_sysadmin_documentation.pdf · Introduction • Newcastle University o~4,800 staff; ~20,000 students • Information

Side-stepping the SSO

A separate apache vhost for the script

<Location /unix/localwiki> Order deny,allow Deny from all Allow from localhost</Location>

Page 19: organising sysadmin documentationjmtd.net/software/ikiwiki/organising_sysadmin_documentation.pdf · Introduction • Newcastle University o~4,800 staff; ~20,000 students • Information

Findings

Page 20: organising sysadmin documentationjmtd.net/software/ikiwiki/organising_sysadmin_documentation.pdf · Introduction • Newcastle University o~4,800 staff; ~20,000 students • Information

Findings

• in use for 2 years• roughly doubled in size• removed some older material

• scope has grown

Page 21: organising sysadmin documentationjmtd.net/software/ikiwiki/organising_sysadmin_documentation.pdf · Introduction • Newcastle University o~4,800 staff; ~20,000 students • Information

What do we now keep in there?

• meeting notes• project outlines• TODO lists• documents for other teams

Page 22: organising sysadmin documentationjmtd.net/software/ikiwiki/organising_sysadmin_documentation.pdf · Introduction • Newcastle University o~4,800 staff; ~20,000 students • Information

Audience

• originally, just us• now other teams too

o meeting minuteso cross-team procedural documents

Page 23: organising sysadmin documentationjmtd.net/software/ikiwiki/organising_sysadmin_documentation.pdf · Introduction • Newcastle University o~4,800 staff; ~20,000 students • Information

Access control

• SSO layer gives us "full on, full off" access• mediawiki offers some tiered write-access control• everyone has full read control

Page 24: organising sysadmin documentationjmtd.net/software/ikiwiki/organising_sysadmin_documentation.pdf · Introduction • Newcastle University o~4,800 staff; ~20,000 students • Information

Types of contributor

willing / reluctant structural / brain dump

novice / experienced

Page 25: organising sysadmin documentationjmtd.net/software/ikiwiki/organising_sysadmin_documentation.pdf · Introduction • Newcastle University o~4,800 staff; ~20,000 students • Information

"A major killer of wiki projects is the imposition

of too much structure during the early stages"

The Practise of System and Network Administration, p254

Page 26: organising sysadmin documentationjmtd.net/software/ikiwiki/organising_sysadmin_documentation.pdf · Introduction • Newcastle University o~4,800 staff; ~20,000 students • Information

Editor role

Subset of team take on responsibility for maintaining the wiki

The remainder read/brain dump/suggest

Page 27: organising sysadmin documentationjmtd.net/software/ikiwiki/organising_sysadmin_documentation.pdf · Introduction • Newcastle University o~4,800 staff; ~20,000 students • Information

Accessing/organising data

• "search, don't sort"• Three Letter Acronyms

Page 28: organising sysadmin documentationjmtd.net/software/ikiwiki/organising_sysadmin_documentation.pdf · Introduction • Newcastle University o~4,800 staff; ~20,000 students • Information

High Availability

• failure points for old system:o filesystemo network

• failure points for new systemo web servero database servero authentication paths o network

Page 29: organising sysadmin documentationjmtd.net/software/ikiwiki/organising_sysadmin_documentation.pdf · Introduction • Newcastle University o~4,800 staff; ~20,000 students • Information

Mediawiki UI revisited

Page 30: organising sysadmin documentationjmtd.net/software/ikiwiki/organising_sysadmin_documentation.pdf · Introduction • Newcastle University o~4,800 staff; ~20,000 students • Information

Revised requirements

• Import existing data• support reviewing material• version control

• online• multimedia• integrated with SSO

• High availability• get data out again• Search

Page 31: organising sysadmin documentationjmtd.net/software/ikiwiki/organising_sysadmin_documentation.pdf · Introduction • Newcastle University o~4,800 staff; ~20,000 students • Information

Next generation

Page 32: organising sysadmin documentationjmtd.net/software/ikiwiki/organising_sysadmin_documentation.pdf · Introduction • Newcastle University o~4,800 staff; ~20,000 students • Information

Candidates

• freshmeat.net: 209 matches for 'wiki'• sourceforge.net: 893 matches

...other "document management" / CMS software, besides wikisOn my horizon:

• sharepoint• ikiwiki

Page 33: organising sysadmin documentationjmtd.net/software/ikiwiki/organising_sysadmin_documentation.pdf · Introduction • Newcastle University o~4,800 staff; ~20,000 students • Information

Sharepoint

• DB backend• proprietry• UI usability concerns• ...

Page 34: organising sysadmin documentationjmtd.net/software/ikiwiki/organising_sysadmin_documentation.pdf · Introduction • Newcastle University o~4,800 staff; ~20,000 students • Information

IkiWiki

• <http://ikiwiki.info/>• perl-based• open source• static rendering by default• real VCS backend• plugin support

Page 35: organising sysadmin documentationjmtd.net/software/ikiwiki/organising_sysadmin_documentation.pdf · Introduction • Newcastle University o~4,800 staff; ~20,000 students • Information

IkiWiki

Page 36: organising sysadmin documentationjmtd.net/software/ikiwiki/organising_sysadmin_documentation.pdf · Introduction • Newcastle University o~4,800 staff; ~20,000 students • Information

The basics

$ find .../src./src/somefile.extension./src/foo.mdwn$ ikiwiki src dest $ find dest...dest/somefile.extension...dest/foo/index.html...

Page 37: organising sysadmin documentationjmtd.net/software/ikiwiki/organising_sysadmin_documentation.pdf · Introduction • Newcastle University o~4,800 staff; ~20,000 students • Information

The basics

a command-line toola compiler most of the code in a library

Page 38: organising sysadmin documentationjmtd.net/software/ikiwiki/organising_sysadmin_documentation.pdf · Introduction • Newcastle University o~4,800 staff; ~20,000 students • Information

The basics

modify behaviour with command-line arguments

$ ikiwiki --no-usedirs ./src ./dest$ find ./dest..../dest/somefile.extension..../dest/foo.html... or a configuration file

$ ikiwiki --setup config.setup ./src ./dest

Page 39: organising sysadmin documentationjmtd.net/software/ikiwiki/organising_sysadmin_documentation.pdf · Introduction • Newcastle University o~4,800 staff; ~20,000 students • Information

Plugins

lots of hooks for plugins (24+)perl native modulesexternal plugins via XML RPC

Page 40: organising sysadmin documentationjmtd.net/software/ikiwiki/organising_sysadmin_documentation.pdf · Introduction • Newcastle University o~4,800 staff; ~20,000 students • Information

Version control integration

via pluginssupport for git; bzr; subversion; monotone; mercurial; tla

helper tool to migrate from source dir to source repository

$ ikiwiki-makerepo <vcstype> <srcdir> <repository>

then setup your .setup file accordingly

Page 41: organising sysadmin documentationjmtd.net/software/ikiwiki/organising_sysadmin_documentation.pdf · Introduction • Newcastle University o~4,800 staff; ~20,000 students • Information

Web integration

A CGI script for web-editsVCS hooks for refreshing as a result

setuid (to owner of srcdir/repository) urgh otoh, small, easily-audited code

Page 42: organising sysadmin documentationjmtd.net/software/ikiwiki/organising_sysadmin_documentation.pdf · Introduction • Newcastle University o~4,800 staff; ~20,000 students • Information

Syntax• via plugins• "default" is markdown

o simpleo not proprietary

Page 43: organising sysadmin documentationjmtd.net/software/ikiwiki/organising_sysadmin_documentation.pdf · Introduction • Newcastle University o~4,800 staff; ~20,000 students • Information

Approximate structure

Page 44: organising sysadmin documentationjmtd.net/software/ikiwiki/organising_sysadmin_documentation.pdf · Introduction • Newcastle University o~4,800 staff; ~20,000 students • Information

IkiWiki pagespec

page specification

booleans foo or bar or baz

negations foo* and !*baz

functions link(somepage)

Page 45: organising sysadmin documentationjmtd.net/software/ikiwiki/organising_sysadmin_documentation.pdf · Introduction • Newcastle University o~4,800 staff; ~20,000 students • Information

Useful plugins

Page 46: organising sysadmin documentationjmtd.net/software/ikiwiki/organising_sysadmin_documentation.pdf · Introduction • Newcastle University o~4,800 staff; ~20,000 students • Information

Mediawiki syntax plugin

<http://u32.net/Mediawiki_Plugin/>

some limitations, including transclusion

Page 47: organising sysadmin documentationjmtd.net/software/ikiwiki/organising_sysadmin_documentation.pdf · Introduction • Newcastle University o~4,800 staff; ~20,000 students • Information

useful plugins: graphviz

inline graphs

[[!graph src="a -> b ; b -> c; c -> a"]]

Page 48: organising sysadmin documentationjmtd.net/software/ikiwiki/organising_sysadmin_documentation.pdf · Introduction • Newcastle University o~4,800 staff; ~20,000 students • Information

useful plugins: img

• scaled images• link to fullsize• uses ikiwiki pagespecs

[[!img foo.png alt="alt text" size="100x400"]]

Page 49: organising sysadmin documentationjmtd.net/software/ikiwiki/organising_sysadmin_documentation.pdf · Introduction • Newcastle University o~4,800 staff; ~20,000 students • Information

useful plugins: inline and map

[[!inline pages="blog/* and !*/Discussion"]] copies the matching pages into the page [[!map pages="* and !blog/* and !*/Discussion"]] creates a bullet-list of links to matching pages

Page 50: organising sysadmin documentationjmtd.net/software/ikiwiki/organising_sysadmin_documentation.pdf · Introduction • Newcastle University o~4,800 staff; ~20,000 students • Information

useful plugins: toctable of contentsderived from headers in the page

Page 51: organising sysadmin documentationjmtd.net/software/ikiwiki/organising_sysadmin_documentation.pdf · Introduction • Newcastle University o~4,800 staff; ~20,000 students • Information

useful plugins: template

Uses HTML::Template perl moduledefine a home for templates in the wiki

templates/example.mdwn: hello <TMPL_VAR name>index.mdwn: : [[!template id=example name="Jon"]] ;

result: : hello Jon ;

Page 52: organising sysadmin documentationjmtd.net/software/ikiwiki/organising_sysadmin_documentation.pdf · Introduction • Newcastle University o~4,800 staff; ~20,000 students • Information

useful plugins: tag

essentially a hidden wikilink add a tag in a page [[!tag foo bar baz]]list pages which are tagged foo: [[!map pages="link(foo)"]]

Page 53: organising sysadmin documentationjmtd.net/software/ikiwiki/organising_sysadmin_documentation.pdf · Introduction • Newcastle University o~4,800 staff; ~20,000 students • Information

useful plugins: pagecount

how many pages match a pagespec?

[[!pagecount pages="* and !*/Discussion"]]

Page 54: organising sysadmin documentationjmtd.net/software/ikiwiki/organising_sysadmin_documentation.pdf · Introduction • Newcastle University o~4,800 staff; ~20,000 students • Information

Possible migration strategy

• Tandem period• automatic import from one to the other

• don't rely on mediawiki syntax forever

Page 55: organising sysadmin documentationjmtd.net/software/ikiwiki/organising_sysadmin_documentation.pdf · Introduction • Newcastle University o~4,800 staff; ~20,000 students • Information

Migrating data

• One approach:• <http://u32.net/Mediawiki_Conversion/>

o Scott Bronson's excellent guide

Procedure involves

• Parsing HTML to extract lists of pages (urgh)• exporting data in an XML container• various scripting runs to remove mediawiki-isms• Mediawiki syntax plugin

Page 56: organising sysadmin documentationjmtd.net/software/ikiwiki/organising_sysadmin_documentation.pdf · Introduction • Newcastle University o~4,800 staff; ~20,000 students • Information

Another approach

• Parse HTML as before (urgh)o get_pagenames.py script to extract pagenameso alternative: SQL query of the mediawiki tables

• use WWW::MediaWiki to fetch page contents• various scripting runs to remove mediawiki-isms

• another: mine the database

Page 57: organising sysadmin documentationjmtd.net/software/ikiwiki/organising_sysadmin_documentation.pdf · Introduction • Newcastle University o~4,800 staff; ~20,000 students • Information

get_pagenames.py

from xml.dom.minidom import parse, \ parseString

dom = parse('Special:Allpages')tables = dom.getElementsByTagName("table")pagetable = tables[-1]anchors = \ pagetable.getElementsByTagName("a")for a in anchors: print a.firstChild.toxml()

Page 58: organising sysadmin documentationjmtd.net/software/ikiwiki/organising_sysadmin_documentation.pdf · Introduction • Newcastle University o~4,800 staff; ~20,000 students • Information

Tackling high-availability

static copies on separate machines

Page 59: organising sysadmin documentationjmtd.net/software/ikiwiki/organising_sysadmin_documentation.pdf · Introduction • Newcastle University o~4,800 staff; ~20,000 students • Information

Tackling access control

Our needs are for tiered read controlselectively publish static copies of sub-sections?

Page 60: organising sysadmin documentationjmtd.net/software/ikiwiki/organising_sysadmin_documentation.pdf · Introduction • Newcastle University o~4,800 staff; ~20,000 students • Information

IkiWiki drawbacks

• searcho xapian plugino google site search plugin

• speed

Page 61: organising sysadmin documentationjmtd.net/software/ikiwiki/organising_sysadmin_documentation.pdf · Introduction • Newcastle University o~4,800 staff; ~20,000 students • Information

Comparison

Page 62: organising sysadmin documentationjmtd.net/software/ikiwiki/organising_sysadmin_documentation.pdf · Introduction • Newcastle University o~4,800 staff; ~20,000 students • Information

Comparison

Page 63: organising sysadmin documentationjmtd.net/software/ikiwiki/organising_sysadmin_documentation.pdf · Introduction • Newcastle University o~4,800 staff; ~20,000 students • Information

Conclusions

Page 64: organising sysadmin documentationjmtd.net/software/ikiwiki/organising_sysadmin_documentation.pdf · Introduction • Newcastle University o~4,800 staff; ~20,000 students • Information

Sysadmin specifics

• high-availability• data fidelity• "hackability"

Page 65: organising sysadmin documentationjmtd.net/software/ikiwiki/organising_sysadmin_documentation.pdf · Introduction • Newcastle University o~4,800 staff; ~20,000 students • Information

Software specifics

• "text files in a dir" inadequate• mediawiki/LAMP hard to HA• ikiwiki promising

• not just a software problem

Page 66: organising sysadmin documentationjmtd.net/software/ikiwiki/organising_sysadmin_documentation.pdf · Introduction • Newcastle University o~4,800 staff; ~20,000 students • Information

People

uptake crucial

Page 67: organising sysadmin documentationjmtd.net/software/ikiwiki/organising_sysadmin_documentation.pdf · Introduction • Newcastle University o~4,800 staff; ~20,000 students • Information

References

http://www.staff.ncl.ac.uk/jon.dowland/unix/docs/