Successfully reported this slideshow.

Travel with your mock server

2

Share

Upcoming SlideShare
Introducción a Wiremock
Introducción a Wiremock
Loading in …3
×
1 of 28
1 of 28

More Related Content

Related Books

Free with a 14 day trial from Scribd

See all

Related Audiobooks

Free with a 14 day trial from Scribd

See all

Travel with your mock server

  1. 1. Travel with your mock server Jorge D. Ortiz-Fuentes @jdortiz
  2. 2. A POWWAU production
  3. 3. Agenda ★ “Problem” ★ A realistic solution ★ Automation insights ★More automation ★Useful ★Q&A
  4. 4. First world problems
  5. 5. My first Raspberry Pi A DIY Story
  6. 6. No Power Warning Raspberry Pi ADSL UPS Internet ⌁ X Notification Ruby mailer Email
  7. 7. The “problem” ★ I bought another Raspberry Pi ★ Possible uses: • Learning computer • Git server • File downloader • File server (even ownCloud) • Rails test environment • Domotics server Want them all!
  8. 8. A realistic solution
  9. 9. Have them all separately ★Use different SDs ★ Each for its own purpose ★But…
  10. 10. But… ★ Isn’t it to burdensome/expensive to create and maintain all those “disks”? ★Will they be updated when I need them?
  11. 11. Automation
  12. 12. Automate my wishes
  13. 13. Automation requirements ★ No dependencies (or few): root and ssh. The image can be used as is ★ No central server ★ No constant updating ★Reusable solution with my cloud servers ★Configuration in VCS ★My own recipes, but lots available ★Better if language is known
  14. 14. CM Tools
  15. 15. Alternatives ★Docker:Go; container portability, Linux x86 ★ PalletOps:Clojure/JVM; targets cloud servers ★ cfengine: C; steep learning curve, agent ★ Puppet: Ruby; agent based, pull, declarative ★Chef: Ruby; agent based, more imperative ★ Ansible: Python; just ssh access, modules for * ★ Fabric: Python; like scripting SSH, deploy apps ★Capistrano: Ruby; like fabric
  16. 16. Ansible ★ Python based (but modules in other langs) ★ Agent-less (SSH with public key auth) ★Declarative ★ Idempotent ★ Playbooks are equal for my cloud server and my raspberry pi (Ubuntu & Raspbian) and even VM. ★ Talks to other devices (like my Mikrotik)
  17. 17. Some Ansible hints
  18. 18. Linux before ansible ★Download latest Raspbian ★Copy image to SD with dd (bs=4M) ★ Setup connected to monitor&kbd (preserve) ★ Extend FS (preserve to use)
  19. 19. Hints ★Don’t put everything in a playbook ★ Some basics: • Update system • ntp, ssh, tmux • iptables • gitolite • nginx, postgreSQL,… ★ Playbooks available in: http://galaxy.ansible.com
  20. 20. Configure iptables (1) roles: - role: iptables vars: incomming_rules: [ { proto: tcp, dport: http }, { proto: udp, sport: ntp } ] outgoing_rules: [ { proto: udp, dport: bootps } ]
  21. 21. Configure iptables (2) - name: Add temporary IPv4 rules to allow packaged downloads shell: "{{ item }}" with_items: - iptables -A OUTPUT -p tcp --dport http -j ACCEPT - iptables -A OUTPUT -p tcp --dport https -j ACCEPT - name: Update apt cache apt: update_cache=yes - name: Ensure iptables is installed (debian) apt: name={{ item }} state=latest when: ansible_os_family == 'Debian' with_items: - iptables - iptables-persistent - name: Verify directory exists for iptables rules file: path={{rules_dir}} owner=root group=root mode=0700 state=directory - name: Create iptables rules for IPv4 from template and vars template: dest={{ip4tables_rules_path}} src=etc/iptables/rules.v4.j2 owner=root group=root mode=0400
  22. 22. Can’t automate anymore, my a**
  23. 23. Deploy (rails) apps
  24. 24. Git hooks ★Bare repo ★Git hook • post-commit • Run script ★ If (conditions) git push to deploy repo
  25. 25. Capistrano ★More specific task for this purpose ★Better integration with ruby ★Config file is a ruby DSL
  26. 26. Talkin’ to me?
  27. 27. Use your mock server with your apps ★Use a small router (airport express is perfect) ★ IP parameter in the settings bundle ★ Another settings bundle for production code. ★Consume web services as always
  28. 28. Thank you! Images courtesy of Shutterstock

×