Kainos Tech Space #1 : DevOps : Pawel Chmielinski - Dobre praktyki przy pisaniu kodu
-
Upload
kainos-polska -
Category
Technology
-
view
35 -
download
0
Transcript of Kainos Tech Space #1 : DevOps : Pawel Chmielinski - Dobre praktyki przy pisaniu kodu
Organizacja kodu i danychLogika i dane aplikacji
01/12/2016 4
• Instalacja, konfiguracja konkretnej usługi, komponentu
Zawarta w MODUŁACH
• Domyślna, generyczna konfiguracja• Logika pozwalająca na wsparcie
różnych systemów• Dane użytkownika konfigurowane
przez parametry wejściowe
Logika i dane aplikacjiMODUŁY
If Debian: apacheIf Redhat: httpd
Lokalizacja konfiguracji
Obsługiwane przez konfigurację parametry
Domyślne wartości konfiguracji
Nowe typy wymagane do obsługi aplikacji
Skrypt inicjalizujący
Organizacja kodu i danychLogika biznesowa
01/12/2016 5
• Wyższa warstwa abstrakcji• Logika sklejająca moduły w przydatne
rozwiązanie• Defniuje zasoby, które są specyficzne
dla naszych potrzeb
Zawarta w ROLACH I PROFILACH
• Nieprzenośne -‐ przydatne tylko dla naszej organizacji
Logika biznesowaROLE I PROFILE
Maszyna www1 ma zainstalowany apache, php, wordpress, iptables
Na roli www dwa vhosty: wordpress, wordpress-‐test
Vhost wordpress-‐test tylkodla 192.168.84.0/24
Firewall otwarty na portach 80, 443
Wordpress łączy się z bazą na hoście db1
Dostęp do apache wymaga hasła
Organizacja kodu i danychDane biznesowe
01/12/2016 6
• Rozdzielenie kodu od danych
• Ramię w ramię z logiką biznesową
• Dane specyficzne dla organizacji, projektu
Zawarte w HIERZE
• Przydatne tylko dla naszej organizacji
Logika biznesowaROLE I PROFILE
Dane biznesoweHIERA
If $local_db { include mysql }
PRODTEST
local_db: falselocal_db: true
If $wp_test { ... } PRODTEST
wp_test: falsewp_test: true
Allow from $net LONWAW
net: 192.168.19.0/24net: 192.168.84.0/24
Firewall::Allow { $fw_ports: }
WWWDB
fw_ports: 80, 443fw_ports: 3306
DB_HOST: $db_host PRODTEST
db_host: db1db_host: localhost
PASS: $pass PRODTEST
pass: zc%63*dm$dpass: admin
Organizacja kodu i danychRole i profile
01/12/2016 7
modules/role/manifests/www.pp
modules/profile/manifests/base.pp
modules/profile/manifests/wordpress.pp
Organizacja kodu i danychParę słów o hierze
01/12/2016 8
puppet/hiera.yaml
hieradata/tier/prod.yaml
hieradata/common.yaml
Organizacja kodu i danychHardcoding danych biznesowych w module
01/12/2016 10
modules/resolv_conf/manifests/init.pp
modules/resolv_conf/manifests/init.pp
modules/resolv_conf/templates/etc/resolv.conf.erb
NIE!
OK
Organizacja kodu i danychNieprawidłowe użycie hiery
01/12/2016 11
puppet/hiera.yaml
hieradata/osfamily/redhat.yaml
NIE!
hieradata/osfamily/debian.yamlNIE!
Organizacja kodu i danychUżycie hiery w module
01/12/2016 12
modules/resolv_conf/manifests/init.pp
modules/profile/manifests/ntp.pp
hieradata/tier/production/common.yaml
NIE!
OK
OK
Organizacja kodu i danychModuły, które robią za dużo
01/12/2016 13
modules/tomcat/manifests/package.pp
modules/tomcat/manifests/init.pp
NIE!
OK
Organizacja kodu i danychNiepotrzebne interdepedencje
01/12/2016 14
modules/wordpress/manifests/init.pp
modules/profile/manifests/wordpress.pp
NIE!
OK
OK
hieradata/common.yaml
Rekomendowane narzędziaTestowanie kodu
01/12/2016 19
Testy składni:• puppet-‐syntax + puppet-‐lintTesty jednostkowe:• puppet-‐rspecTesty akceptacyjne:• Beaker i/lub VagrantA uruchamiać testy można za pomocą Rake
Rekomendowane narzędziaSzkielety
01/12/2016 20
• Szkielet modułu -‐https://github.com/garethr/puppet-‐module-‐skeleton• Szkielet repozytorium -‐https://github.com/gds-‐operations/puppet-‐skeleton• Szkielet Control Repo R10K -‐https://github.com/puppetlabs/control-‐repo