layout: true name: centered class: center, middle .footnote[ \#pillarcon ### [@schmonz](https://twitter.com/schmonz) ] --- layout: true name: twitterhandle .footnote[ \#pillarcon ### [@schmonz](https://twitter.com/schmonz) ] --- template: centered # Cross-Platform Full-Stack Deployment ## Amitai Schlair ### PillarCon 2016/04/16 ??? These are presenter notes. Press 'C' to clone, then 'P' to show these notes. --- .right-column[ ## You'd _think_ I must know all about... - Chef - Puppet - Ansible - Docker - ...? ] --- template: centered # Nope --- .right-column[ ## Here's what I _do_ know ### Laptop (Mac OS X) ```sh laptop$ echo $(uname; pkg_info -L ikiwiki | grep 'bin/ikiwiki$'; ikiwiki --version) Darwin /Users/schmonz/pkg/bin/ikiwiki ikiwiki version 3.20160121 ``` ### Server (NetBSD) ```sh server$ echo $(uname; pkg_info -L ikiwiki | grep 'bin/ikiwiki$'; ikiwiki --version) NetBSD /usr/pkg/bin/ikiwiki ikiwiki version 3.20160121 ``` ] --- .right-column[ ## It's dangerous to know only one thing
> To a database person, every nail looks like a thumb. Or something like that. > — Jamie Zawinski ] --- .right-column[ ## Let's be dangerous together* Got Xcode (or at least the command-line tools)? ```sh $ curl -O ftp://ftp.netbsd.org/pub/pkgsrc/pkgsrc-2016Q1/pkgsrc-2016Q1.tar.gz $ tar -zxf pkgsrc-2016Q1.tar.gz && rm pkgsrc-2016Q1.tar.gz $ cd pkgsrc/bootstrap $ ./bootstrap --unprivileged $ sudo vi /etc/paths # add ~/pkg/sbin and ~/pkg/bin (but fully spelled out) ``` ### *Not actually very dangerous ] --- .right-column[ ## You've got [pkgsrc](http://www.pkgsrc.org)! None of the tools you'd actually want (yet). ```sh $ pkg_info bmake-20150505 Portable (autoconf) version of NetBSD 'make' utility [...] ``` Yes all the tools for **getting** what you want. ] --- .right-column[ ## Let's get something you'd want I hear this Ruby gem is **extremely popular** for parsing XML and **notoriously annoying** to build. ```sh $ cd ../textproc/ruby-nokogiri $ bmake install ``` (FYI, we might not finish compiling Ruby and Nokogiri before this session ends.) ] --- .right-column[ ## When it's time to deploy Which Unixy OS does your server run? **Doesn't matter**. Do you have root access on it, or not? **Doesn't matter**. Just do the **exact same stuff** to get the **exact same packages**. ] --- .right-column[ ## When it's time to automate To update what's installed: `pkg_rolling-replace` To report security vulnerabilities: `audit-packages` To declaratively build sets of packages: `pbulk`, `pkg_comp`, ... I'm told [pkgsrc plays well with Ansible](http://www.feyrer.de/NetBSD/pkgsrcCon2013/). ] --- .right-column[ ## Questions? How does this compare with what you've done before? What should _I_ learn about, to become less dangerous? ] --- template: centered # Cross-Platform Full-Stack Deployment ## Amitai Schlair ### PillarCon 2016/04/16 ## [schmonz.com](https://schmonz.com) ## [ai3m.co](http://ai3m.co)