From 977660bdc2ed57485344f4561fe99d1c1e0de239 Mon Sep 17 00:00:00 2001 From: Patrick Hetu Date: Tue, 29 Jul 2014 10:02:43 -0400 Subject: [PATCH] creation de la documentation --- montreal/gestionmateriel/README.rst | 63 ------- montreal/gestionmateriel/docs/conf.py | 262 ++++++++++++++++++++++++++++ montreal/gestionmateriel/docs/index.rst | 84 +++++++++ montreal/gestionmateriel/docs/machines.png | Bin 0 -> 27197 bytes 4 files changed, 346 insertions(+), 63 deletions(-) delete mode 100644 montreal/gestionmateriel/README.rst create mode 100644 montreal/gestionmateriel/docs/conf.py create mode 100644 montreal/gestionmateriel/docs/index.rst create mode 100644 montreal/gestionmateriel/docs/machines.png diff --git a/montreal/gestionmateriel/README.rst b/montreal/gestionmateriel/README.rst deleted file mode 100644 index fef8f65..0000000 --- a/montreal/gestionmateriel/README.rst +++ /dev/null @@ -1,63 +0,0 @@ -Projet ------- - -Ce site web permet l'envoi de commandes Ansible depuis Django. -Notez que ce site est en version Beta. - -Table des matières ------------------- - -.. contents:: - -Dépendances ------------ - -:: - - apt-get install python-virtualenv python-pip python-sqlite - - -Installation ------------- - -:: - - virtualenv . - source bin/activate - pip install -r requirements.txt - ./manage.py syncdb - ./manage.py migrate - ./manage.py createsuperuser - -Vous devez ensuite modifier le fichier `maj.yml` selon vos besoins. - -Documentation -------------- - -Un fois le service Django démarré avec la commande:: - - ./manage.py runserver - -Pour utiliser l'interface web vous devez d'abord vous autentifier: - - http://localhost:8000/sandbox/login - -puis visiter la page suivante: - - http://localhost:8000/maj/machine/ - - -Aide et support ---------------- - - -Contribution ------------- - - -Licence -------- - -Le code source et la documentation sous Copyright ©2014 AUF. -Le code est sous Licence AGPL3. Voir le fichier LICENCE - diff --git a/montreal/gestionmateriel/docs/conf.py b/montreal/gestionmateriel/docs/conf.py new file mode 100644 index 0000000..3bb314b --- /dev/null +++ b/montreal/gestionmateriel/docs/conf.py @@ -0,0 +1,262 @@ +# -*- coding: utf-8 -*- +# +# gestionmateriel documentation build configuration file, created by +# sphinx-quickstart on Mon Jul 28 16:22:28 2014. +# +# This file is execfile()d with the current directory set to its +# containing dir. +# +# Note that not all possible configuration values are present in this +# autogenerated file. +# +# All configuration values have a default; values that are commented out +# serve to show the default. + +import sys +import os + +# If extensions (or modules to document with autodoc) are in another directory, +# add these directories to sys.path here. If the directory is relative to the +# documentation root, use os.path.abspath to make it absolute, like shown here. +#sys.path.insert(0, os.path.abspath('.')) + +# -- General configuration ------------------------------------------------ + +# If your documentation needs a minimal Sphinx version, state it here. +#needs_sphinx = '1.0' + +# Add any Sphinx extension module names here, as strings. They can be +# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom +# ones. +extensions = ['sphinx.ext.doctest','rst2pdf.pdfbuilder'] + +pdf_documents = [ + ('index', u'', u'', u''), +] + +# Add any paths that contain templates here, relative to this directory. +templates_path = ['_templates'] + +# The suffix of source filenames. +source_suffix = '.rst' + +# The encoding of source files. +#source_encoding = 'utf-8-sig' + +# The master toctree document. +master_doc = 'index' + +# General information about the project. +project = u'gestionmateriel' +copyright = u'2014, Jean-Christophe André et Patrick Hétu' + +# The version info for the project you're documenting, acts as replacement for +# |version| and |release|, also used in various other places throughout the +# built documents. +# +# The short X.Y version. +version = '0.2' +# The full version, including alpha/beta/rc tags. +release = '0.2' + +# The language for content autogenerated by Sphinx. Refer to documentation +# for a list of supported languages. +#language = None + +# There are two options for replacing |today|: either, you set today to some +# non-false value, then it is used: +#today = '' +# Else, today_fmt is used as the format for a strftime call. +#today_fmt = '%B %d, %Y' + +# List of patterns, relative to source directory, that match files and +# directories to ignore when looking for source files. +exclude_patterns = [] + +# The reST default role (used for this markup: `text`) to use for all +# documents. +#default_role = None + +# If true, '()' will be appended to :func: etc. cross-reference text. +#add_function_parentheses = True + +# If true, the current module name will be prepended to all description +# unit titles (such as .. function::). +#add_module_names = True + +# If true, sectionauthor and moduleauthor directives will be shown in the +# output. They are ignored by default. +#show_authors = False + +# The name of the Pygments (syntax highlighting) style to use. +pygments_style = 'sphinx' + +# A list of ignored prefixes for module index sorting. +#modindex_common_prefix = [] + +# If true, keep warnings as "system message" paragraphs in the built documents. +#keep_warnings = False + + +# -- Options for HTML output ---------------------------------------------- + +# The theme to use for HTML and HTML Help pages. See the documentation for +# a list of builtin themes. +html_theme = 'default' + +# Theme options are theme-specific and customize the look and feel of a theme +# further. For a list of options available for each theme, see the +# documentation. +#html_theme_options = {} + +# Add any paths that contain custom themes here, relative to this directory. +#html_theme_path = [] + +# The name for this set of Sphinx documents. If None, it defaults to +# " v documentation". +#html_title = None + +# A shorter title for the navigation bar. Default is the same as html_title. +#html_short_title = None + +# The name of an image file (relative to this directory) to place at the top +# of the sidebar. +#html_logo = None + +# The name of an image file (within the static path) to use as favicon of the +# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 +# pixels large. +#html_favicon = None + +# Add any paths that contain custom static files (such as style sheets) here, +# relative to this directory. They are copied after the builtin static files, +# so a file named "default.css" will overwrite the builtin "default.css". +html_static_path = ['_static'] + +# Add any extra paths that contain custom files (such as robots.txt or +# .htaccess) here, relative to this directory. These files are copied +# directly to the root of the documentation. +#html_extra_path = [] + +# If not '', a 'Last updated on:' timestamp is inserted at every page bottom, +# using the given strftime format. +#html_last_updated_fmt = '%b %d, %Y' + +# If true, SmartyPants will be used to convert quotes and dashes to +# typographically correct entities. +#html_use_smartypants = True + +# Custom sidebar templates, maps document names to template names. +#html_sidebars = {} + +# Additional templates that should be rendered to pages, maps page names to +# template names. +#html_additional_pages = {} + +# If false, no module index is generated. +#html_domain_indices = True + +# If false, no index is generated. +#html_use_index = True + +# If true, the index is split into individual pages for each letter. +#html_split_index = False + +# If true, links to the reST sources are added to the pages. +#html_show_sourcelink = True + +# If true, "Created using Sphinx" is shown in the HTML footer. Default is True. +#html_show_sphinx = True + +# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True. +#html_show_copyright = True + +# If true, an OpenSearch description file will be output, and all pages will +# contain a tag referring to it. The value of this option must be the +# base URL from which the finished HTML is served. +#html_use_opensearch = '' + +# This is the file name suffix for HTML files (e.g. ".xhtml"). +#html_file_suffix = None + +# Output file base name for HTML help builder. +htmlhelp_basename = 'gestionmaterieldoc' + + +# -- Options for LaTeX output --------------------------------------------- + +latex_elements = { +# The paper size ('letterpaper' or 'a4paper'). +#'papersize': 'letterpaper', + +# The font size ('10pt', '11pt' or '12pt'). +#'pointsize': '10pt', + +# Additional stuff for the LaTeX preamble. +#'preamble': '', +} + +# Grouping the document tree into LaTeX files. List of tuples +# (source start file, target name, title, +# author, documentclass [howto, manual, or own class]). +latex_documents = [ + ('index', 'gestionmateriel.tex', u'gestionmateriel Documentation', + u'Jean-Christophe André et Patrick Hétu', 'manual'), +] + +# The name of an image file (relative to this directory) to place at the top of +# the title page. +#latex_logo = None + +# For "manual" documents, if this is true, then toplevel headings are parts, +# not chapters. +#latex_use_parts = False + +# If true, show page references after internal links. +#latex_show_pagerefs = False + +# If true, show URL addresses after external links. +#latex_show_urls = False + +# Documents to append as an appendix to all manuals. +#latex_appendices = [] + +# If false, no module index is generated. +#latex_domain_indices = True + + +# -- Options for manual page output --------------------------------------- + +# One entry per manual page. List of tuples +# (source start file, name, description, authors, manual section). +man_pages = [ + ('index', 'gestionmateriel', u'gestionmateriel Documentation', + [u'Jean-Christophe André et Patrick Hétu'], 1) +] + +# If true, show URL addresses after external links. +#man_show_urls = False + + +# -- Options for Texinfo output ------------------------------------------- + +# Grouping the document tree into Texinfo files. List of tuples +# (source start file, target name, title, author, +# dir menu entry, description, category) +texinfo_documents = [ + ('index', 'gestionmateriel', u'gestionmateriel Documentation', + u'Jean-Christophe André et Patrick Hétu', 'gestionmateriel', 'One line description of project.', + 'Miscellaneous'), +] + +# Documents to append as an appendix to all manuals. +#texinfo_appendices = [] + +# If false, no module index is generated. +#texinfo_domain_indices = True + +# How to display URL addresses: 'footnote', 'no', or 'inline'. +#texinfo_show_urls = 'footnote' + +# If true, do not generate a @detailmenu in the "Top" node's menu. +#texinfo_no_detailmenu = False diff --git a/montreal/gestionmateriel/docs/index.rst b/montreal/gestionmateriel/docs/index.rst new file mode 100644 index 0000000..dcd3bed --- /dev/null +++ b/montreal/gestionmateriel/docs/index.rst @@ -0,0 +1,84 @@ +Gestion Matériel +================ + +Ce site web permet l'exécution de commandes Ansible depuis Django. +Notez que ce site est en version Beta. + +.. image:: machines.png + +.. contents:: Table des matières + +Dépendances +----------- + +Veuillez installer les dépendances avec la commande suivante:: + + apt-get install python-virtualenv python-pip python-sqlite + + +Installation +------------ + +:: + + virtualenv . + source bin/activate + pip install -r requirements.txt + ./manage.py syncdb + ./manage.py migrate + ./manage.py createsuperuser + +Vous devez ensuite modifier le fichier `maj.yml` selon vos besoins. + +Utilisation +----------- + +Pour démarrer le service Django utilisé la commande:: + + bin/python manage.py runserver + +.. Pour démarrer le service Celery utilisé la commande suivante:: +.. +.. bin/python -O manage.py celery worker + +Pour utiliser l'interface web vous devez d'abord vous autentifier: + + http://localhost:8000/sandbox/login + +puis visiter la page suivante: + + http://localhost:8000/maj/machine/ + +Ligne de commande +^^^^^^^^^^^^^^^^^ + +Il est aussi possible d'utiliser la ligne de commande pour certaines tâches comme: + +Collecter le nombre de paquets à mettre à jour sur l'ensemble des machines:: + + bin/python manage.py get + +Aides et supports +----------------- + + patrick.hetu (a) auf.org + +Améliorations possibles +----------------------- + +* Fusion avec le site: http://git.auf.org/?p=progfou.git;a=tree;f=gestionmateriel +* Serveur API REST: http://docs.celeryproject.org/en/latest/userguide/remote-tasks.html +* Démarrage des machines à l'aide de la commande `wakeonlan` +* Sauvegarde des traces de l'exécution (logs) +* Sommaire de la mise-à-jour par courriel +* Gestion de la configuration de SSH (clés, config, etc) +* Interface utilisateur améliorée +* Tâches planifiées (cron) +* Tests unitaires et d'intégration + +Licence +------- + +Le code source et la documentation sous Copyright ©2014 AUF. +Le code est sous Licence AGPL3. Voir le fichier LICENCE + diff --git a/montreal/gestionmateriel/docs/machines.png b/montreal/gestionmateriel/docs/machines.png new file mode 100644 index 0000000000000000000000000000000000000000..a885e5d5a65374d1b827cc43d00fe982d0db5711 GIT binary patch literal 27197 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 literal 0 HcmV?d00001 -- 1.7.10.4