Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Pyton-w-pudelku

 Pyton-w-pudelku

Prezentacja o życiu deploymentach, budowaniu deb'ów z aplikacji w Pythonie i sensie życia devop'a ;).

Avatar for Tomek Wójcik

Tomek Wójcik

November 04, 2015
Tweet

More Decks by Tomek Wójcik

Other Decks in Programming

Transcript

  1. fabfile.py @task def deploy(): with cd('/home/kittymatic/kittymatic/kittymatic'): run('git pull origin master')

    run('../bin/pip install -q -r requirements.txt') run('sudo supervisorctl restart kittymatic')
  2. $ fab deploy [web.firma.com] Executing task 'deploy' [web.firma.com] run: git

    pull -q origin master [web.firma.com] run: ../bin/pip install -q -r requirements.txt [web.firma.com] out: Cannot fetch index base URL https://pypi.python.org/simple/ [web.firma.com] out: Could not find any downloads that satisfy the requirement Flask- WTF==0.12 (from -r requirements.txt (line 2)) [web.firma.com] out: No distributions at all found for Flask-WTF==0.12 (from -r requirements.txt (line 2)) [web.firma.com] out: Storing debug log for failure in /home/kittymatic/.pip/pip.log [web.firma.com] out: Fatal error: run() received nonzero return code 1 while executing! Requested: ../bin/pip install -q -r requirements.txt Executed: /bin/bash -l -c "cd /home/kittymatic/kittymatic/kittymatic >/dev/null && ../ bin/pip install -q -r requirements.txt" Aborting. Disconnecting from web.firma.com... done. #FA IL
  3. $ fab deploy [web.firma.com] Executing task ‘deploy' [web.firma.com] run: git

    pull -q origin master [web.firma.com] out: fatal: 'kittymatic.git' does not appear to be a git repository [web.firma.com] out: fatal: Could not read from remote repository. [web.firma.com] out: [web.firma.com] out: Please make sure you have the correct access rights [web.firma.com] out: and the repository exists. [web.firma.com] out: Fatal error: run() received nonzero return code 1 while executing! Requested: git pull -q origin master Executed: /bin/bash -l -c "cd /home/kittymatic/kittymatic/kittymatic >/dev/null && git pull -q origin master" Aborting. Disconnecting from web.firma.com... done. #FA IL
  4. $ fab deploy [web.firma.com] Executing task 'deploy' [web.firma.com] run: ../bin/pip

    install -q -U kittymatic [web.firma.com] out: Command /home/kittymatic/kittymatic/bin/python -c "import setuptools, tokenize;__file__='/home/kittymatic/kittymatic/build/lxml/ setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r \n', '\n'), __file__, 'exec'))" install --record /tmp/pip-kmjZjD-record/install- record.txt --single-version-externally-managed --compile --install-headers /home/ kittymatic/kittymatic/include/site/python2.7 failed with error code 1 in /home/ kittymatic/kittymatic/build/lxml [web.firma.com] out: Storing debug log for failure in /home/kittymatic/.pip/pip.log [web.firma.com] out: Fatal error: run() received nonzero return code 1 while executing! Requested: ../bin/pip install -q -U kittymatic Executed: /bin/bash -l -c "cd /home/kittymatic/kittymatic/kittymatic >/dev/null && ../ bin/pip install -q -U kittymatic" Aborting. Disconnecting from web.firma.com... done. #FA IL
  5. Jak żyć? • Rzucić tę robotę i wyprowadzić się w

    góry. • Dystrybuować aplikację jako paczkę deb przez własne repo APT.
  6. dh-virtualenv • Narzędzie do paczkowania aplikacji w Pythonie. • Paczkuje

    całe virtualenvy. • Integruje się ze standardowymi debianowymi narzędziami. • Praktycznie bezbolesne.
  7. Wymagania • Plik setup.py w aplikacji, • Plik requirements.txt w

    aplikacji, • Pliki kontrolne do zbudowania paczki deb, • Maszyna (VMka) z Debianem lub Ubuntu do zbudowania paczki, • Repo APT do dystrybucji paczki.
  8. Zalety • Jedno rozwiązanie na wiele problemów. • Możliwość pełnej

    automatyzacji procesu budowania paczki. • Raz zbudowaną paczkę można instalować na wielu maszynach bez przebudowywania. • APT wspiera podpisywanie paczek dla zwiększonego bezpieczeństwa.
  9. Linki • devpi (serwer PyPI) - http://doc.devpi.net/latest/ • dh-virtualenv -

    http://dh-virtualenv.readthedocs.org/ en/latest/index.html