SlideShare a Scribd company logo
1 of 52
Sphinx, reST i Ansible
Wprowadzenie do automatycznego generowania dokumentacji
Info
● Na SlideShare dostępne są notatki
pod oknem prezentacji w zakładce Notes
● Prezentacja na SlideShare zawiera więcej
slajdów niż materiał wideo.
Agenda
● O czym jest ta prezentacja
● O czym NIE jest ta prezentacja
● Problemy i Skutki
● Jak można to naprawić
● Co dostajemy w efekcie
● Przykład z Ansible
O czym jest ta prezentacja
● Jaki jest ogólny problem?
● Jakim sposobem możemy to rozwiązać
● Co dostaniemy w zamian
● W jakim kierunku można to pociągnąć
O czym NIE jest ta prezentacja
● Jaki pisać dobrą dokumentację
● Przegląd innych rozwiązań
● Niestety nie mam komend dla Windows
● reStructuredText specjalnie zdawkowo opisany
Problem
● Nie chce mi się
● Brak czasu
● Permanentna zmiana
● Nie wiemy jak
Skutki
● O tamten w rogu wie...
● Chcą dokumentację teraz?
● Mam kogoś szkolić?
● Fajnie, że mamy internet
● FFFFFFFFFFF…..
Jak to naprawić?
Napisać dokumentację.
Po co?
● Oszczędność czasu zespołu
● Logiczny podział wiedzy
● Różne scenariusze pracy
● Integracje
Jak to zrobić?
● Przejrzeć to co jest i dopisać
● Najlepiej trzymać w repo projektu
● Automatycznie generować i publikować
● Używać perswazji :)
Przejrzenie tego co jest
● Istniejące dokumenty
● W kodzie: komentarze, docstrings
● Wiedza plemienna
● Inne źródła wiedzy
Sphinx-doc
Python documentation
generator
Github :: official docs
Czym to skleić razem?
Instalacja
Sphinx-doc:
apt-get install -y sphinx-doc
sphinx-rtd-theme-common
python-sphinxcontrib-*
Python pip / virtualenv / pipenv
pipenv install sphinx
Konfiguracja
sphinx-quickstart
> Separate source and build directories (y/n) [n]:
> Source file suffix [.rst]:
> Name of your master document (without suffix) [index]:
> Create Makefile? (y/n) [y]:
source/conf.py
Konfiguracja
# domyślna konfiguracja sphinxa to source/conf.py
# czysty python z komentarzami
extlinks = {
'jira': ('https://comp.atlassian.net/browse/%s', 'JIRA '),
'bb': ( 'https://bitbucket.org/comp/repo/pull-requests/%s','BitBucket'),
}
linkcheck_ignore = [
'https://internal.site/*',
'http://example.com/*',
]
Index.rst
Welcome to example!
===================
.. toctree::
:maxdepth: 2
:caption: Contents:
example
Indices and tables
==================
* :ref:`genindex`
* :ref:`modindex`
* :ref:`search`
Budowanie
Przestroga
reStructuredText
● Język do tworzenia dokumentacji
● Oparty na znacznikach
● Bardzo łatwo przejść z MarkDown na reST
● Można konwertować .md na .rst
● Złożone projekty pokazują jego wyższość nad .md
● Krótki wstęp
example.rst
Examples of reST
================
- URL: `Official docutils page
<http://docutils.sourceforge.net/>`_
- URL: Quick reStructuredText reference_
.. _reference:
http://docutils.sourceforge.net/docs/user/rst/quickref.html
Code:
.. code:: json
{ "some_key": "some value", "other_key": 42 }
Lists
-----
Lists:
#. one
- bullet1
- bullet2
#. two
Images
------
.. image:: _static/images/test.prod.png
example.rst
Sphinx - Kilka bajerów
● Makefile i dodatkowe komendy
● Inne formaty wyjściowe - epub, pdf...
● Skórki (themes)
● Rozszerzenia
Makefile
● linkcheck
● changes
● doctest/coverage
linkcheck
Inne formaty
● single html / dir html
● epub, man pages...
● PDF - texlive-latex-extra albo ...-full
Skórki
Skórki
Skórki
Skórki
Rozszerzenia
● extensions
● sphinx contrib
● github awesome-sphinxdoc
● sphinx survey
Rozszerzenia
● autodoc
● napoleon / numpy
● autosummary / todo
● releases / git
● versioning
Rozszerzenia
● extlinks
● intersphinx
● viewcode
● issue tracker
Rozszerzenia
● graphviz
● blockdiag / sdedit
● aafig (aafigure)
● plantUML
Rozszerzenia
● programoutput
● autoprogram
● argparse
Rozszerzenia
● hieroglyph
● tut
● autobuild
Rozszerzenia
● sphinx-me
● confluence
● sphinx-to-github
Ansible?
Ansible
● playbooki + sekcje komentarzy
● sphinx-autoyaml
Sphinx
#conf.py
# extensions
extensions = [
'sphinxcontrib.autoyaml',
]
# autoyaml, relative to makefile location
autoyaml_root = './'
import sphinx_rtd_theme
html_theme = "sphinx_rtd_theme"
pipenv install sphinxcontrib-autoyaml
pipenv install sphinx_rtd_theme
Ansible deploy_etcd.yml
###
#
# Deploy etcd cluster
# -------------------
#
# Requirements
# ~~~~~~~~~~~~
# - playbook <base>.yml + <provider>.yml
#
# Features
# ~~~~~~~~
# - parallel provision if cluster is fresh
# - sequential rolling upgrade without downtime if cluster already exists
#
###
---
index.rst
Welcome to example!
===================
.. toctree::
:maxdepth: 2
:caption: Contents:
example
etcd
etcd.rst
Deploy ETCD cluster
===================
.. autoyaml:: ../deploy_etcd.yml
Some other text goes here...
make clean html
etcd.rst
###
#
# Deploy etcd cluster
# -------------------
#
# .. warning::
#
# Read carefully before doing upgrades to v3.2.10
#
# Parameters
# ~~~~~~~~~~
# - ``etcd_version`` - use custom etcd version, for example `v3.2.12`
# - ``etcd_defrag`` - `true` or `false`
###
Moduły
● Moduły: czysty python + docstrings
● Ansible Docs
Co dalej?
● Role i README.md
Co dalej?
● Inne dodatki
Co dalej?
● Przykłady: Matplotlib docs / Blender
● doc8 do sprawdzania składni .rst
● Ansible / Jenkins + autoprogram
● Write the docs
● Ops report card
● Openstack Reno release notes
Pytania?
Dziękuję za uwagę.

More Related Content

Similar to CodiLime Tech Talk - Michał Sochoń: Sphinx, reST & Ansible

Elasticsearch nie tylko dla Wielkodanowców
Elasticsearch nie tylko dla WielkodanowcówElasticsearch nie tylko dla Wielkodanowców
Elasticsearch nie tylko dla WielkodanowcówŁukasz Kuczyński
 
DrupalDay Podstawy Drupal 8
DrupalDay Podstawy Drupal 8DrupalDay Podstawy Drupal 8
DrupalDay Podstawy Drupal 8Grzegorz Bartman
 
Codeception - jak zacząć pisać automatyczne testy do Drupala [PL]
Codeception - jak zacząć pisać automatyczne testy do Drupala [PL]Codeception - jak zacząć pisać automatyczne testy do Drupala [PL]
Codeception - jak zacząć pisać automatyczne testy do Drupala [PL]Droptica
 
4Developers 2015: Rozpraszanie offline aplikacji zcentralizowanej online - Łu...
4Developers 2015: Rozpraszanie offline aplikacji zcentralizowanej online - Łu...4Developers 2015: Rozpraszanie offline aplikacji zcentralizowanej online - Łu...
4Developers 2015: Rozpraszanie offline aplikacji zcentralizowanej online - Łu...PROIDEA
 
Zautomatyzuj swój proces wdrażania projektów SSIS
Zautomatyzuj swój proces wdrażania projektów SSISZautomatyzuj swój proces wdrażania projektów SSIS
Zautomatyzuj swój proces wdrażania projektów SSISBartosz Ratajczyk
 
Kurs z zakresu technik składu komputerowego
Kurs z zakresu technik składu komputerowegoKurs z zakresu technik składu komputerowego
Kurs z zakresu technik składu komputerowegommyhhh
 
PHPUnit - jak zacząć pisać testy automatyczne [PL]
PHPUnit - jak zacząć pisać testy automatyczne [PL]PHPUnit - jak zacząć pisać testy automatyczne [PL]
PHPUnit - jak zacząć pisać testy automatyczne [PL]Droptica
 
Extjs & netzke
Extjs & netzkeExtjs & netzke
Extjs & netzkeGaldoMedia
 
Xdebug – debugowanie i profilowanie aplikacji PHP
Xdebug – debugowanie i profilowanie aplikacji PHPXdebug – debugowanie i profilowanie aplikacji PHP
Xdebug – debugowanie i profilowanie aplikacji PHP3camp
 
Docker na MacOS przy wsparciu maszyny wirtualnej z Linuksem [PL]
Docker na MacOS przy wsparciu maszyny wirtualnej z Linuksem [PL]Docker na MacOS przy wsparciu maszyny wirtualnej z Linuksem [PL]
Docker na MacOS przy wsparciu maszyny wirtualnej z Linuksem [PL]Droptica
 
CodiLime Tech Talk - Michał Cłapiński, Mateusz Jabłoński: Debugging faultily ...
CodiLime Tech Talk - Michał Cłapiński, Mateusz Jabłoński: Debugging faultily ...CodiLime Tech Talk - Michał Cłapiński, Mateusz Jabłoński: Debugging faultily ...
CodiLime Tech Talk - Michał Cłapiński, Mateusz Jabłoński: Debugging faultily ...CodiLime
 
Poznaj GITa - Natalia Stanko
Poznaj GITa - Natalia StankoPoznaj GITa - Natalia Stanko
Poznaj GITa - Natalia StankoNatalia Stanko
 
PSD2WP: kodowanie dedykowanych motywów dla WordPressa w modelu komponentowym
PSD2WP: kodowanie dedykowanych motywów dla WordPressa w modelu komponentowymPSD2WP: kodowanie dedykowanych motywów dla WordPressa w modelu komponentowym
PSD2WP: kodowanie dedykowanych motywów dla WordPressa w modelu komponentowymKrzysztof Łęcki
 
Podstawowe informacje o szablonach w Drupalu [openBIT]
Podstawowe informacje o szablonach w Drupalu [openBIT]Podstawowe informacje o szablonach w Drupalu [openBIT]
Podstawowe informacje o szablonach w Drupalu [openBIT]Grzegorz Bartman
 
SkładQA 2018 - Daniel Dec
SkładQA 2018 - Daniel DecSkładQA 2018 - Daniel Dec
SkładQA 2018 - Daniel Deckraqa
 
CI oraz CD w złożonym projekcie o małym budżecie
CI oraz CD w złożonym projekcie o małym budżecieCI oraz CD w złożonym projekcie o małym budżecie
CI oraz CD w złożonym projekcie o małym budżecieGrzegorz Godlewski
 

Similar to CodiLime Tech Talk - Michał Sochoń: Sphinx, reST & Ansible (20)

Elasticsearch nie tylko dla Wielkodanowców
Elasticsearch nie tylko dla WielkodanowcówElasticsearch nie tylko dla Wielkodanowców
Elasticsearch nie tylko dla Wielkodanowców
 
DrupalDay Podstawy Drupal 8
DrupalDay Podstawy Drupal 8DrupalDay Podstawy Drupal 8
DrupalDay Podstawy Drupal 8
 
Codeception - jak zacząć pisać automatyczne testy do Drupala [PL]
Codeception - jak zacząć pisać automatyczne testy do Drupala [PL]Codeception - jak zacząć pisać automatyczne testy do Drupala [PL]
Codeception - jak zacząć pisać automatyczne testy do Drupala [PL]
 
4Developers 2015: Rozpraszanie offline aplikacji zcentralizowanej online - Łu...
4Developers 2015: Rozpraszanie offline aplikacji zcentralizowanej online - Łu...4Developers 2015: Rozpraszanie offline aplikacji zcentralizowanej online - Łu...
4Developers 2015: Rozpraszanie offline aplikacji zcentralizowanej online - Łu...
 
Zautomatyzuj swój proces wdrażania projektów SSIS
Zautomatyzuj swój proces wdrażania projektów SSISZautomatyzuj swój proces wdrażania projektów SSIS
Zautomatyzuj swój proces wdrażania projektów SSIS
 
Projektowanie ewolucyjne
Projektowanie ewolucyjneProjektowanie ewolucyjne
Projektowanie ewolucyjne
 
Kurs z zakresu technik składu komputerowego
Kurs z zakresu technik składu komputerowegoKurs z zakresu technik składu komputerowego
Kurs z zakresu technik składu komputerowego
 
PHPUnit - jak zacząć pisać testy automatyczne [PL]
PHPUnit - jak zacząć pisać testy automatyczne [PL]PHPUnit - jak zacząć pisać testy automatyczne [PL]
PHPUnit - jak zacząć pisać testy automatyczne [PL]
 
Extjs & netzke
Extjs & netzkeExtjs & netzke
Extjs & netzke
 
Xdebug – debugowanie i profilowanie aplikacji PHP
Xdebug – debugowanie i profilowanie aplikacji PHPXdebug – debugowanie i profilowanie aplikacji PHP
Xdebug – debugowanie i profilowanie aplikacji PHP
 
Docker na MacOS przy wsparciu maszyny wirtualnej z Linuksem [PL]
Docker na MacOS przy wsparciu maszyny wirtualnej z Linuksem [PL]Docker na MacOS przy wsparciu maszyny wirtualnej z Linuksem [PL]
Docker na MacOS przy wsparciu maszyny wirtualnej z Linuksem [PL]
 
CodiLime Tech Talk - Michał Cłapiński, Mateusz Jabłoński: Debugging faultily ...
CodiLime Tech Talk - Michał Cłapiński, Mateusz Jabłoński: Debugging faultily ...CodiLime Tech Talk - Michał Cłapiński, Mateusz Jabłoński: Debugging faultily ...
CodiLime Tech Talk - Michał Cłapiński, Mateusz Jabłoński: Debugging faultily ...
 
Poznaj GITa - Natalia Stanko
Poznaj GITa - Natalia StankoPoznaj GITa - Natalia Stanko
Poznaj GITa - Natalia Stanko
 
Poznaj GITa - Natalia Stanko
Poznaj GITa - Natalia StankoPoznaj GITa - Natalia Stanko
Poznaj GITa - Natalia Stanko
 
university day 1
university day 1university day 1
university day 1
 
PSD2WP: kodowanie dedykowanych motywów dla WordPressa w modelu komponentowym
PSD2WP: kodowanie dedykowanych motywów dla WordPressa w modelu komponentowymPSD2WP: kodowanie dedykowanych motywów dla WordPressa w modelu komponentowym
PSD2WP: kodowanie dedykowanych motywów dla WordPressa w modelu komponentowym
 
Podstawowe informacje o szablonach w Drupalu [openBIT]
Podstawowe informacje o szablonach w Drupalu [openBIT]Podstawowe informacje o szablonach w Drupalu [openBIT]
Podstawowe informacje o szablonach w Drupalu [openBIT]
 
Kurs "Zrób to tak, aby to zrobić" - prezentacja 5
Kurs "Zrób to tak, aby to zrobić" - prezentacja 5Kurs "Zrób to tak, aby to zrobić" - prezentacja 5
Kurs "Zrób to tak, aby to zrobić" - prezentacja 5
 
SkładQA 2018 - Daniel Dec
SkładQA 2018 - Daniel DecSkładQA 2018 - Daniel Dec
SkładQA 2018 - Daniel Dec
 
CI oraz CD w złożonym projekcie o małym budżecie
CI oraz CD w złożonym projekcie o małym budżecieCI oraz CD w złożonym projekcie o małym budżecie
CI oraz CD w złożonym projekcie o małym budżecie
 

More from CodiLime

CodiLime Tech Talk - Dawid Trzebiatowski i Wojciech Urbański: Opening the Flo...
CodiLime Tech Talk - Dawid Trzebiatowski i Wojciech Urbański: Opening the Flo...CodiLime Tech Talk - Dawid Trzebiatowski i Wojciech Urbański: Opening the Flo...
CodiLime Tech Talk - Dawid Trzebiatowski i Wojciech Urbański: Opening the Flo...CodiLime
 
Rapid help for current networking challenges
Rapid help for current networking challengesRapid help for current networking challenges
Rapid help for current networking challengesCodiLime
 
CodiLime Tech Talk - Grzegorz Rozdzialik: What the java script
CodiLime Tech Talk - Grzegorz Rozdzialik: What the java scriptCodiLime Tech Talk - Grzegorz Rozdzialik: What the java script
CodiLime Tech Talk - Grzegorz Rozdzialik: What the java scriptCodiLime
 
CodiLime Tech Talk - Mateusz Psujek: Keep calm and stay motivated
CodiLime Tech Talk - Mateusz Psujek: Keep calm and stay motivatedCodiLime Tech Talk - Mateusz Psujek: Keep calm and stay motivated
CodiLime Tech Talk - Mateusz Psujek: Keep calm and stay motivatedCodiLime
 
CodiLime Tech Talk - Katarzyna Ziomek-Zdanowicz: RxJS main concepts and real ...
CodiLime Tech Talk - Katarzyna Ziomek-Zdanowicz: RxJS main concepts and real ...CodiLime Tech Talk - Katarzyna Ziomek-Zdanowicz: RxJS main concepts and real ...
CodiLime Tech Talk - Katarzyna Ziomek-Zdanowicz: RxJS main concepts and real ...CodiLime
 
CodiLime Tech Talk - Wojciech Urbański: Cloud Native
CodiLime Tech Talk - Wojciech Urbański: Cloud NativeCodiLime Tech Talk - Wojciech Urbański: Cloud Native
CodiLime Tech Talk - Wojciech Urbański: Cloud NativeCodiLime
 
CodiLime Tech Talk - Łukasz Maksymczuk: Monitoring: Prometheus and Influx
CodiLime Tech Talk - Łukasz Maksymczuk: Monitoring: Prometheus and InfluxCodiLime Tech Talk - Łukasz Maksymczuk: Monitoring: Prometheus and Influx
CodiLime Tech Talk - Łukasz Maksymczuk: Monitoring: Prometheus and InfluxCodiLime
 
CodiLime Tech Talk - Michał Sochoń: Configuration management hell
CodiLime Tech Talk - Michał Sochoń: Configuration management hellCodiLime Tech Talk - Michał Sochoń: Configuration management hell
CodiLime Tech Talk - Michał Sochoń: Configuration management hellCodiLime
 
CodiLime Tech Talk - Adam Kułagowski: IPv6 - introduction
CodiLime Tech Talk - Adam Kułagowski: IPv6 - introductionCodiLime Tech Talk - Adam Kułagowski: IPv6 - introduction
CodiLime Tech Talk - Adam Kułagowski: IPv6 - introductionCodiLime
 
Tech Talk - Konrad Gawda : P4 programming language
Tech Talk - Konrad Gawda : P4 programming languageTech Talk - Konrad Gawda : P4 programming language
Tech Talk - Konrad Gawda : P4 programming languageCodiLime
 
CodiLime Tech Talk - Michał Pawluk: Our production deployment in AWS (HashiCo...
CodiLime Tech Talk - Michał Pawluk: Our production deployment in AWS (HashiCo...CodiLime Tech Talk - Michał Pawluk: Our production deployment in AWS (HashiCo...
CodiLime Tech Talk - Michał Pawluk: Our production deployment in AWS (HashiCo...CodiLime
 
CodiLime Tech Talk - Michał Pawluk: Our deployment of HashiCorp Vault
CodiLime Tech Talk - Michał Pawluk: Our deployment of HashiCorp VaultCodiLime Tech Talk - Michał Pawluk: Our deployment of HashiCorp Vault
CodiLime Tech Talk - Michał Pawluk: Our deployment of HashiCorp VaultCodiLime
 
CodiLime Tech Talk - Jan Kanty Milczek: Basic Recommender Systems – SVDon't
CodiLime Tech Talk - Jan Kanty Milczek: Basic Recommender Systems – SVDon'tCodiLime Tech Talk - Jan Kanty Milczek: Basic Recommender Systems – SVDon't
CodiLime Tech Talk - Jan Kanty Milczek: Basic Recommender Systems – SVDon'tCodiLime
 
CodiLime Tech Talk - Maciej Sawicki: Streamline application deployments with ...
CodiLime Tech Talk - Maciej Sawicki: Streamline application deployments with ...CodiLime Tech Talk - Maciej Sawicki: Streamline application deployments with ...
CodiLime Tech Talk - Maciej Sawicki: Streamline application deployments with ...CodiLime
 
CodiLime Tech Talk - Jarek Łukow: You need a cloud to test a cloud: using Ope...
CodiLime Tech Talk - Jarek Łukow: You need a cloud to test a cloud: using Ope...CodiLime Tech Talk - Jarek Łukow: You need a cloud to test a cloud: using Ope...
CodiLime Tech Talk - Jarek Łukow: You need a cloud to test a cloud: using Ope...CodiLime
 

More from CodiLime (15)

CodiLime Tech Talk - Dawid Trzebiatowski i Wojciech Urbański: Opening the Flo...
CodiLime Tech Talk - Dawid Trzebiatowski i Wojciech Urbański: Opening the Flo...CodiLime Tech Talk - Dawid Trzebiatowski i Wojciech Urbański: Opening the Flo...
CodiLime Tech Talk - Dawid Trzebiatowski i Wojciech Urbański: Opening the Flo...
 
Rapid help for current networking challenges
Rapid help for current networking challengesRapid help for current networking challenges
Rapid help for current networking challenges
 
CodiLime Tech Talk - Grzegorz Rozdzialik: What the java script
CodiLime Tech Talk - Grzegorz Rozdzialik: What the java scriptCodiLime Tech Talk - Grzegorz Rozdzialik: What the java script
CodiLime Tech Talk - Grzegorz Rozdzialik: What the java script
 
CodiLime Tech Talk - Mateusz Psujek: Keep calm and stay motivated
CodiLime Tech Talk - Mateusz Psujek: Keep calm and stay motivatedCodiLime Tech Talk - Mateusz Psujek: Keep calm and stay motivated
CodiLime Tech Talk - Mateusz Psujek: Keep calm and stay motivated
 
CodiLime Tech Talk - Katarzyna Ziomek-Zdanowicz: RxJS main concepts and real ...
CodiLime Tech Talk - Katarzyna Ziomek-Zdanowicz: RxJS main concepts and real ...CodiLime Tech Talk - Katarzyna Ziomek-Zdanowicz: RxJS main concepts and real ...
CodiLime Tech Talk - Katarzyna Ziomek-Zdanowicz: RxJS main concepts and real ...
 
CodiLime Tech Talk - Wojciech Urbański: Cloud Native
CodiLime Tech Talk - Wojciech Urbański: Cloud NativeCodiLime Tech Talk - Wojciech Urbański: Cloud Native
CodiLime Tech Talk - Wojciech Urbański: Cloud Native
 
CodiLime Tech Talk - Łukasz Maksymczuk: Monitoring: Prometheus and Influx
CodiLime Tech Talk - Łukasz Maksymczuk: Monitoring: Prometheus and InfluxCodiLime Tech Talk - Łukasz Maksymczuk: Monitoring: Prometheus and Influx
CodiLime Tech Talk - Łukasz Maksymczuk: Monitoring: Prometheus and Influx
 
CodiLime Tech Talk - Michał Sochoń: Configuration management hell
CodiLime Tech Talk - Michał Sochoń: Configuration management hellCodiLime Tech Talk - Michał Sochoń: Configuration management hell
CodiLime Tech Talk - Michał Sochoń: Configuration management hell
 
CodiLime Tech Talk - Adam Kułagowski: IPv6 - introduction
CodiLime Tech Talk - Adam Kułagowski: IPv6 - introductionCodiLime Tech Talk - Adam Kułagowski: IPv6 - introduction
CodiLime Tech Talk - Adam Kułagowski: IPv6 - introduction
 
Tech Talk - Konrad Gawda : P4 programming language
Tech Talk - Konrad Gawda : P4 programming languageTech Talk - Konrad Gawda : P4 programming language
Tech Talk - Konrad Gawda : P4 programming language
 
CodiLime Tech Talk - Michał Pawluk: Our production deployment in AWS (HashiCo...
CodiLime Tech Talk - Michał Pawluk: Our production deployment in AWS (HashiCo...CodiLime Tech Talk - Michał Pawluk: Our production deployment in AWS (HashiCo...
CodiLime Tech Talk - Michał Pawluk: Our production deployment in AWS (HashiCo...
 
CodiLime Tech Talk - Michał Pawluk: Our deployment of HashiCorp Vault
CodiLime Tech Talk - Michał Pawluk: Our deployment of HashiCorp VaultCodiLime Tech Talk - Michał Pawluk: Our deployment of HashiCorp Vault
CodiLime Tech Talk - Michał Pawluk: Our deployment of HashiCorp Vault
 
CodiLime Tech Talk - Jan Kanty Milczek: Basic Recommender Systems – SVDon't
CodiLime Tech Talk - Jan Kanty Milczek: Basic Recommender Systems – SVDon'tCodiLime Tech Talk - Jan Kanty Milczek: Basic Recommender Systems – SVDon't
CodiLime Tech Talk - Jan Kanty Milczek: Basic Recommender Systems – SVDon't
 
CodiLime Tech Talk - Maciej Sawicki: Streamline application deployments with ...
CodiLime Tech Talk - Maciej Sawicki: Streamline application deployments with ...CodiLime Tech Talk - Maciej Sawicki: Streamline application deployments with ...
CodiLime Tech Talk - Maciej Sawicki: Streamline application deployments with ...
 
CodiLime Tech Talk - Jarek Łukow: You need a cloud to test a cloud: using Ope...
CodiLime Tech Talk - Jarek Łukow: You need a cloud to test a cloud: using Ope...CodiLime Tech Talk - Jarek Łukow: You need a cloud to test a cloud: using Ope...
CodiLime Tech Talk - Jarek Łukow: You need a cloud to test a cloud: using Ope...
 

CodiLime Tech Talk - Michał Sochoń: Sphinx, reST & Ansible

Editor's Notes

  1. Slajd: 1
  2. Slajd: 2 Wyjaśnienie, gdzie są notatki na slideShare
  3. Slajd: 3
  4. Slajd: 4
  5. Slajd: 5 reStrucuredText (reST) specjalnie zdawkowo opisany, bo Sphinx moze konwertować dokumentacje z innych formatów.Markdown jest dobry do prostych opisów, ale po jakimś czasie większość ludzi przechodzi na reST jeśli znają oba systemy, a nie mają potrzeby przechodzenia na inne rozwiązania.
  6. Slajd: 6 - zrobię to potem - to jest samo dokumentujący się kod! - nie lubimy się powtarzać, ciągły pożar na fejsbuku/jirze :) - ten dokument na wiki jest przestarzały, robimy to teraz inaczej… - nie mamy czasu aby przemyśleć dokumentację bo są ważniejsze rzeczy - nie znamy innych narzędzi czy metod, markdown starczy...
  7. Slajd: 7 - wiedza plemienna bo nie ma czasu pisać, albo co gorsza, ludzie chronią stanowiska - wszyscy wszystko rzucają i robią dokumentację - mamy tyle roboty i taki chaos, że realnie co najmniej 2 osoby są poza robotą - wdrażający i wdrażany - dostań się do dokumentacji online jak odciąłeś internet / wyłączyłem serwer w dokumentacją / klatka Faraday&amp;apos;a - jest awaria, ja się nie znam, telefon do przyjaciela w nocy, który jest na urlopie….
  8. Slajd: 8 Duuuhhh guess what.
  9. Slajd: 9 Cpt Obvios for the rescue. Tłum szaleje, wyrywa kaloryfery ze ścian.
  10. Slajd: 10 - write once, die whenever - rozproszenie wiedzy - inkludowanie komentarzy zamiast grzebanie w kodzie,a tym bardziej unikamy kopiowania - podzielenie całości na mniejsze, przyswajalne kawałki - zachowanie aktualnej dokumentacji - różne formaty i dostępność online/offline - co innego potrzebuje startujący w pracy a co innego osoba na on-callu - integracje z innymi narzędziami i serwisami, projektami, można się skupić tylko na specyficznych aspektach, a odesłać do dokładniejszej dokumentacji gdzie indziej
  11. Slajd: 11 - zrobić listę tego co mamy i w jakiej formie, szybko ogólnie określić czy cos sie nadaje czy wymaga poprawy - można wersjonować per release - automatyczne generowanie dokumentacji - jenkins/travis itd i automatyczna publikacja np na www, internal wiki, mailem... - wiercenie w brzuchu albo wysłanie kogoś na dyżur, w sumie dokumentacja powinna być użyteczna dla nas samych
  12. Slajd: 12 - pewnie już część tego mamy, w różnej formie - odkurzyć stare papiery - Masa ciekawostek zaszyta w komentarzach, szczególnie jak ukryte gdzieś na dole. - Wiedza plemienna, mniejsze kawałki łatwiej spisać, każdy może dopisać to co mu sie przypomni - Inne źródła - czat, jira, RCA, pentagramy na white-boardach ;)
  13. Slajd: 13 Dlaczego sphinx? - pewnie juz masz pythona - w tytule prezentacji jest Ansible, więc mamy pythona - potrafi generować dokumentację z innych języków, z docstrings - stabilny na tyle że wiele projektow go używa, np kernel org na niego przeszedł w 2016r
  14. Slajd: 14 Instalacja na start jak na ubuntu, w innych systemach podobnie. Najnowsze wersje z pip, można użyć virtualenv, pipenv. Na szaro to prefixy dodatkowych wartościowych paczek A gdzie docker? Sam se znajdz ;)
  15. Slajd: 15 Quickstart zawiera kilka ważnych pytań i uwaga na domyślne odpowiedzi Domyślnym formatem dokumentacji jest .rst, czyli reStructuredText, ale moze byc .md czyli Markdown Uwaga na istniejący plik makefile Config.py - prędzej czy pózniej tam popatrzycie
  16. Slajd: 16 Można wstawić kod pythona, przydaje się przy bardziej zaawansowanych dodatkach.
  17. Slajd: 17 Uwaga na identacje w reST, o tym za chwilę. Plik example.rst dodajemy do indeksu, i wrzucamy do sources/example.rst z kawałkami jakiegoś reST’a
  18. Slajd: 18 Budujemy, można wpisać komendy sphix-doc jak nie chcemy Makefile. Make clean Make html Samo wpisanie make pokaże dodatkowe opcje
  19. Slajd: 19 Domyślna skórka szału nie robi
  20. Slajd: 20 Entuzjazm po make html nie wszystkim się udziela… ;)
  21. Slajd: 21 Dobra, co jest w plikach .rst?
  22. Slajd: 22 Przykład, z tego wygenerujemy kod. Niestety listy i obrazka niet.
  23. Slajd: 23 Przykład renderowania do html Pygments do podświetlania innych języków, tutaj json.
  24. Slajd: 24 Makefile kryje kilka komend specyficznych dla sphinxa Można zmiksować z własnymi targetami w makefile
  25. Slajd: 25 Linkcheck sprawdza czy url są osiągalne, można w confie podać jakie wzorce nie są sprawdzane Changes pokazuje zmiany w dokumentacji Doctest i Coverage - czy nasze docki mają sens i pokrywają się kodem. W ansible w czystym yamlu bezużyteczne, ale jak masz już pythona (albo np zamiast ansible używasz fabrica) to się przydaje.
  26. Slajd: 26 Przykład linkcheck, przydaje się w wykrywaniu jak jakis inny projekt zmienia swoja stronę..
  27. Slajd: 27 Inne formaty wymagają dodatków na systemie, np latexa
  28. Slajd: 28 Default skin, troche straszny ;) Można zmieniać logo inne elementy aby bardziej spersonalizować dokumentacje
  29. Slajd: 29 RTD (read the docs) jest to jeden z popularniejszych theme
  30. Slajd: 30 Guzzle - jak ktos siedzial nad AWS Boto3 to pewnie poznaje
  31. Slajd: 31 Twitter
  32. Slajd: 32 Sugeruje zaznajomić się z nimi, oczywiście wiele się powtarza Uwaga na te same paczki opublikowane z inną nazwa...
  33. Slajd: 33 Autodoc / napoeon / numpy / google comment standards Git dla prostych projektów, releases jak mamy srs bsns. Versioning jak chcemy budować wiele wersji dokumentacji na raz. Robot framework deprecated afair, przeszli na docstrings.
  34. Slajd: 34 Extlinks - np jira, bitbucket or whatever Intersphinx, jak miksujemy innymi projektami Viewcode jak dajemy linka wprost do repo kodu Issue tracker - jira, mantis, trac i takie tam.
  35. Slajd: 35 Graphviz wymaga paczki, podobnie aafigure. Generacja .dot do obrazka albo svg
  36. Slajd: 36 Uwaga na output, można sobie zrobić niechcący krzywdę
  37. Slajd: 37 Jak ktoś wymaga bardzo dziwnych rzeczy. Hieroglyph - html5 presentation framework Tut - do robienia tutoriali Autobuild aby nie wpisywać make co chwile
  38. Slajd: 38 Do publikowania: Sphinx-me - read the docs official page Confluence, działa z Atlassian Confluence, w tym także wersja Cloud. Niestety trzeba samemu pokombinować bo Confluence jest specyficzny.
  39. Slajd: 39 Dobra, a jak tu wsadzić ansible?
  40. Slajd: 40 Zakładamy, że interesują nas na razie playbooki. Poprzez parsowanie komentarzy zamieszczonych w yml, pod warunkiem, że mają początkowy i końcowy znacznik, domyślnie ###
  41. Slajd: 41 Dorzucamy do projektu pakiety pip Dorzucamy do configa sekcje, gdzie sa pliki yaml, dorzucamy skórkę.
  42. Slajd: 42 Edycja naszego głównego playbooka Domyślnie sekcja zaczynająca komentarz zaczyna się i kończy trzema znakami # Wiele sekcji jest łączonych w jeden dokument. Inne dodatkowe znaki są dodawane na pałę, jak nie ma znacznika to komentarz jest ignorowany i nie będzie w dokumentacji.
  43. Slajd: 43 Dorzucamy etcd.rst do listy, na dole, bez rozszerzenia.
  44. Slajd: 44 A plik etcd.rst zawiera takie bebechy, uwaga na autoyaml i ścieżkę Make clean html I mamy output widoczny na prawo.
  45. Slajd: 45 Dorzucamy kawałki kodu w reST, warning box i listę parametrów jakimi można karmić playbook/role, tak pokrótce. Środkowej części nie ma aby sie zmiescilo na slajdzie.
  46. Slajd: 46 Efekt wyjściowy zmian w dokumentacji.Żółty warning box, lista Parameters.
  47. Slajd: 47 Slajd głównie dla deweloperów. Pythonowe docstringi - numpy/google docstring guide = zobacz dodatek napoleon. Ansible ma swój guideline jak pisać dokumentację do modułów - jest strasznie długi i niestety nie mamy na to czasu. Wychodzę z zalozenia, ze jak piszesz moduły do ansible to tak czy siak przekopałeś się przez dokumentację Ansible.
  48. Slajd: 48 Konwersja markdown moze byc problemem, lepiej pewne rzeczy zlinkowac ręcznie. Inaczej powstaje chaos i zniszczenie, bo każdy Markdown może mieć własny styl pisania.
  49. Slajd: 49 Ansible-playbook-graph Ansigenome Generują svg - można więc wykonać je przed dokumentacja, wrzucić do wybranego katalogu a następnie osadzić .svg w dokumentacji. Będą więc automatycznie aktualizowane per aktualizacja playbooka i build w jenkinsie.
  50. Slajd: 50 Matplotlib idealnym przykładem jak można używać sphinxa, Blender pokazuje jak mozna dostosowac css i pygments (kolorowanie składki względem języka). Doc8 - inspirowany pip8, do weryfikowania dokumentów np czy jet zgodny z reST, czy ma odpowiednia dlugosc linii itd. Sukcesywne rozszerzanie pipeline o doc build + publish. Write the docs / Ops Record Card - jak pisać sensowna dokumentacje dla ludzi/siebie/operations. Można się pokusić o jakieś czary jak openstack reno jeśli mamy problemy z faktu, że jesteśmy tak wielcy jak openstack ;)
  51. Slajd: 51 - Czy trzeba używać makefile? Nie, w makefile sa komendy aby wykonywać program sphinx-doc, więc możemy np używać sphinx-doc bespośrednio. - Czy można podać kilka formatów default? Nie wiem, chyba nie, lepiej raczej skonwertowac dokumenty na wybrany jeden format i nie mieszać. To raczej nie jest skomplikowany proces, chyba że mamy już dużo długich dokumentów. - Czemu było tak krótko o reST/docstrings? Głównie dlatego, by nie uśpić publiczności. Chciałem pokazać rozwiązanie, które może być użyte przez wszystkich w zespole z fokusem na Opsów, którzy niekoniecznie tęsknią za kodowaniem ;) Jeśli kogoś to zainteresuje to na pewno pogrzebie sobie na spokojnie co w tym można więcej zrobić.
  52. Slajd: 52 Czas na sucharka/dowcip:Słowa kluczowe jakie muszą paść na prezentacji: Docker, klałd, klałd nejtif Adżajl Kontinjus Integrejszyn i deplojmęt Maszin lernink i Big dejta &amp;lt;aktualnie gorąca technologia&amp;gt; :D