SlideShare a Scribd company logo
Modern tooling to assist with
developing applications on
FreeBSD
Sean Chittenden
Engineering, HashiCorp
sean@hashicorp.com
seanc@FreeBSD.org (less retired)
Quick Demo
Packer Template
(.json)
ISO
(Stem Cell Image)
Awkward Little Chat
Problem Child
Problems
• Stable
• Debuggable
• Knowledgable
Administrators
• Performance
• Secure
• Manageable
• Embeddable
• Pride
Problem: Stability
Problem: Stable
• Affinity for uptime
• Time required to install amortized over
life of the server
• Artisanal configuration acceptable
• 900d uptimes are bragged about
Problem: Debuggable
Problem: Debuggable
http://brendangregg.com/Perf/freebsd_observability_tools.png
Problem: Knowledgable
Administrators
Problems: Knowledgable Admins
• Comments
• Commit Comment Quality
• Documentation Project
• Handbook and man(1) pages are
excellent
• Lack of questions on Stack
Overflow or other Search
Engine-index sites
Problem: Performance
Problems: Performance
http://www.erlang-factory.com/upload/presentations/558/efsf2012-whatsapp-scaling.pdf
Problems: Performance
https://blog.whatsapp.com/196/1-million-is-so-2011?
Problems: Performance
• ENOMEM
• malloc(3) can return NULL
• Fixed kernel/userland memory limits
Problem: Secure
Problems: Secure
• Deny by Default runs deep
• Network Services: OpenSSH, IPsec
• Firewall(s!) - ipfw/pf
• Yarrow (?)
• ACLs (discretionary enforcement)
• MAC (mandatory enforcement)
Problem: Manageable
Problems: Manageable
• Ports Tree
• pkg(1) binary and src
• poudriere(1)
• make release
• mergemaster(1) -> etcupdate(1)
• Packable Base / {make,src}.conf
Problem: Embeddable
Problems: Embeddable
• Appliance Vendors: stable, long lived branching
• Userland not exposed to customers
• Stripped down Kernel "just works, forever"
• Product life-cycles measured in years

(vs software which is measured in months)
Problem: Pride
Problems: Pride
noun ˈprīd:
1. a high or inordinate opinion of one's own dignity, importance, merit,
or superiority, whether as cherished in the mind or as displayed in
bearing, conduct, etc.
3. a becoming or dignified sense of what is due to oneself or one's
position or character; self-respect; self-esteem.
4. pleasure or satisfaction taken in something done by or belonging to
oneself or believed to reflect credit upon oneself: civic pride.
http://www.dictionary.com/browse/pride
Problems: Pride
noun, van·i·ty ˈva-nə-tē:
• the quality of people who have too much pride in their own
appearance, abilities, achievements, etc. : the quality of being
vain
• something (such as a belief or a way of behaving) which
shows that you have too much pride in yourself, your social
status, etc.

"Vanity - definitely my favorite sin." -Satan

https://www.youtube.com/watch?v=Cv9zXUd55Sw
http://www.merriam-webster.com/dictionary/vanity
Why are these problems?
Wrong set of KPIs for Users
Problems: KPIs
• Stable
• Debuggable
• Knowledgable
Administrators
• Performance
• Secure
• Manageable
• Embeddable
• Pride
Problems: KPIs
• Stable = Maximized Mean Time Between
"Incident"
• Debuggable = Number of Unknowns
• Knowledgable Administrators = Number of
servers per administrator
Problems: KPIs
• Performance = Maximal number of Bits
Chucked Per Server
• Performance = Bytes read/written per Server
• Secure = Mean Time Between Security Incident
• Secure = Average Severity of Security Incidents
Problems: KPIs
• Manageable = Mean Time Between Fresh
Installs (MTTBFI?)
• Manageable = Maximize ROI per Server
• Embeddable = Maximize the number of random
corners of the physical nether-verse BSD can
be installed (small footprint and control)
Problems: KPIs
Pride = Emotional investment or impact per
server installed in production.
Problems: KPIs
Cloud KPIs for FreeBSD
Cloud KPIs
• Friction: Effort required to spin up a new
instance
• Street cred: Number of blog posts/Stack
Overflow questions referring about ${TOPIC}
on ${AWS,GCP,DigitalOcean,etc}
Cloud KPI: Friction
• Number of steps required to create a new
image
• Maximize Reliability of the build process for
creating a new golden image
• Minimal number of differences between
development and production
Meatspace KPI: Distance
Cloud KPI: Friction
???
Modern Workflow
Workflow
1. Spin up a VM
a. Dev
b. Test
c. Ship
2. Create golden image per app
3. Upload golden image
4. Scale golden image in production
Vagrant: Config (1/3)
% cat Vagrantfile

VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.guest = :freebsd
config.vm.box = "freebsd/FreeBSD-11.0-CURRENT"
config.ssh.shell = "sh"
config.vm.synced_folder ".", "/vagrant", nfs: true, id: "vagrant-
root"
# Insert Provider Snippet here
end

% cat Vagrantfile | wc -l

26
Vagrant: Config VMware (2/3)
Vagrant.configure(VAGRANTFILE_API_VERSION) do |
config|
# Insert VM configs from 1/3 here
config.vm.provider :vmware_fusion do |v|
v.vmx["memsize"] = "4096"
v.vmx["numvcpus"] = "8"
end
end
Vagrant: Config VirtualBox (3/3)
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
# Insert VM configs from 1/3 here
config.vm.provider :virtualbox do |vb|
vb.gui = false
vb.memory = "4096"
vb.cpus = 8
vb.customize ["modifyvm", :id, "--ioapic", "on"]
vb.customize ["modifyvm", :id, "--hwvirtex", "on"]
vb.customize ["modifyvm", :id, "--usb", "off"]
vb.customize ["modifyvm", :id, "--usbehci", "off"]
vb.customize ["modifyvm", :id, "--audio", "none"]
vb.customize ["modifyvm", :id, "--nictype1", "virtio"]
vb.customize ["modifyvm", :id, "--nictype2", "virtio"]
end

end
$ vagrant up
$ vagrant up
Bringing machine 'default' up with 'vmware_fusion' provider...
==> default: Cloning VMware VM: 'freebsd/FreeBSD-11.0-CURRENT'. This can take some
time...
==> default: Checking if box 'freebsd/FreeBSD-11.0-CURRENT' is up to date...
==> default: A newer version of the box 'freebsd/FreeBSD-11.0-CURRENT' is available! You
currently
==> default: have version '2016.03.08'. The latest is version '2016.04.30'. Run
==> default: `vagrant box update` to update.
==> default: Verifying vmnet devices are healthy...
==> default: Preparing network adapters...
==> default: Starting the VMware VM...
==> default: Waiting for machine to boot. This may take a few minutes...
default: SSH address: 172.16.139.158:22
default: SSH username: vagrant
default: SSH auth method: private key
$ vagrant up
$ vagrant help up
Usage: vagrant up [options] [name]
Options:
--[no-]provision Enable or disable provisioning
--provision-with x,y,z Enable only certain provisioners, by type.
--[no-]destroy-on-error Destroy machine if any fatal error happens
(default to true)
--[no-]parallel Enable or disable parallelism if provider
supports it
--provider PROVIDER Back the machine with a specific provider
-h, --help Print this help
$ vagrant up
$ vagrant up --provider=vmware_fusion

or
$ vagrant up --provider=virtualbox
…
$ vagrant up
$ vagrant up
[snip]
default: Warning: Connection refused. Retrying...
default: Warning: Connection refused. Retrying...
default: Warning: Remote connection disconnect. Retrying...
default: Warning: Connection refused. Retrying...
default: Warning: Connection timeout. Retrying...
default: Warning: Connection timeout. Retrying...
default: Warning: Connection refused. Retrying...
default:
default: Vagrant insecure key detected. Vagrant will automatically replace
default: this with a newly generated keypair for better security.
default:
default: Inserting generated public key within guest...
default: Removing insecure key from the guest if it's present...
$ vagrant up
$ vagrant up
[snip]
default: Key inserted! Disconnecting and reconnecting using new SSH key...
==> default: Machine booted and ready!
==> default: Forwarding ports...
default: -- 22 => 2222
==> default: Configuring network adapters within the VM...
The following SSH command responded with a non-zero exit status.
Vagrant assumes that this means the command failed!
sed -i '' -e '/^#VAGRANT-BEGIN/,/^#VAGRANT-END/ d' /etc/rc.conf
Stdout from the command:
$ vagrant up
$ vagrant up
[snip]
Stderr from the command:
sudo: error in /usr/local/etc/sudo.conf, line 0 while
loading plugin `sudoers_policy'
sudo: unable to load /usr/local/libexec/sudo/sudoers.so:
Shared object "libpam.so.6" not found, required by
"sudoers.so"
sudo: fatal error, unable to load plugins
$ vagrant up
$ vagrant box update
==> default: Checking for updates to 'freebsd/FreeBSD-11.0-CURRENT'
default: Latest installed version: 2016.03.08
default: Version constraints:
default: Provider: vmware_desktop
==> default: Updating 'freebsd/FreeBSD-11.0-CURRENT' with provider 'vmware_desktop' from version
==> default: '2016.03.08' to '2016.04.30'...
==> default: Loading metadata for box 'https://atlas.hashicorp.com/freebsd/FreeBSD-11.0-CURRENT?
access_token=62kMYhn6H0ZNBQ.atlasv1.XfHqcMrbfCd7HNFQoT7HVZ6rmICYI3lXx99nJr013yEJ1UsdxQGuXzE79ZFi
qd04I4o'
==> default: Adding box 'freebsd/FreeBSD-11.0-CURRENT' (v2016.04.30) for provider:
vmware_desktop
default: Downloading: https://atlas.hashicorp.com/freebsd/boxes/FreeBSD-11.0-CURRENT/
versions/2016.04.30/providers/vmware_desktop.box
[snip]
default: Downloading: https://atlas.hashicorp.com/freebsd/boxes/FreeBSD-11.0-CURRENT/
versions/2016.04.30/providers/vmware_desktop.box
==> default: Successfully added box 'freebsd/FreeBSD-11.0-CURRENT' (v2016.04.30) for
'vmware_desktop'!
$ vagrant up
$ vagrant up
Bringing machine 'default' up with 'vmware_fusion' provider...
==> default: Checking if box 'freebsd/FreeBSD-11.0-CURRENT' is up to date...
==> default: Machine is already running.
$ vagrant status
Current machine states:
default running (vmware_fusion)
The VM is running. To stop this VM, you can run `vagrant halt` to
shut it down, or you can run `vagrant suspend` to simply suspend
the virtual machine. In either case, to restart it again, run
`vagrant up`.
$ vagrant ssh
$ vagrant ssh
FreeBSD 11.0-CURRENT (GENERIC) #0 r296485: Tue Mar 8 07:04:36
UTC 2016
Welcome to FreeBSD!
[snip]
vagrant@:~ % uname -a
FreeBSD 11.0-CURRENT FreeBSD 11.0-CURRENT #0 r296485: Tue Mar
8 07:04:36 UTC 2016 root@releng2.nyi.freebsd.org:/usr/obj/
usr/src/sys/GENERIC amd64
http://www.slideshare.net/gmccance/cern-data-centre-evolution
$ vagrant destroy
$ vagrant destroy
default: Are you sure you want to destroy the 'default'
VM? [y/N] y
==> default: Stopping the VMware VM...
Connection to 172.16.139.158 closed by remote host.
==> default: Deleting the VM…
$
$ vagrant up
$ vagrant up
Bringing machine 'default' up with 'vmware_fusion' provider...
==> default: Cloning VMware VM: 'freebsd/FreeBSD-11.0-CURRENT'. This can take some time...
==> default: Checking if box 'freebsd/FreeBSD-11.0-CURRENT' is up to date...
==> default: Verifying vmnet devices are healthy...
==> default: Preparing network adapters...
==> default: Starting the VMware VM...
==> default: Waiting for machine to boot. This may take a few minutes...
default: SSH address: 172.16.139.159:22
default: SSH username: vagrant
default: SSH auth method: private key
default: Warning: Connection refused. Retrying…
[snip]
$ vagrant up
$ vagrant up
[snip]
==> default: Configuring network adapters within the VM...
The following SSH command responded with a non-zero exit status.
Vagrant assumes that this means the command failed!
sed -i '' -e '/^#VAGRANT-BEGIN/,/^#VAGRANT-END/ d' /etc/rc.conf
Stdout from the command:
Stderr from the command:
sudo: error in /usr/local/etc/sudo.conf, line 0 while loading plugin `sudoers_policy'
sudo: unable to load /usr/local/libexec/sudo/sudoers.so: Shared object "libpam.so.6" not found, required by "sudoers.so"
sudo: fatal error, unable to load plugins
$ vagrant up
$ vagrant ssh
$ vagrant@:~ % sudo tcsh
sudo: error in /usr/local/etc/sudo.conf, line 0 while loading plugin
`sudoers_policy'
sudo: unable to load /usr/local/libexec/sudo/sudoers.so: Shared object "libpam.so.
6" not found, required by "sudoers.so"
sudo: fatal error, unable to load plugins
vagrant@:~ % su
Password:
root@:/home/vagrant # pkg delete sudo

root@:/home/vagrant # pkg install -y sudo
$ vagrant reload
[blows up again]
$ vagrant up
vagrant@:~ % ldd /usr/local/libexec/sudo/sudoers.so
/usr/local/libexec/sudo/sudoers.so:
libbsm.so.3 => /usr/lib/libbsm.so.3 (0x801246000)
libutil.so.9 => /lib/libutil.so.9 (0x801461000)
libpam.so.6 => not found (0)
libsudo_util.so.0 => /usr/local/libexec/sudo/libsudo_util.so.0
(0x801674000)
libintl.so.8 => /usr/local/lib/libintl.so.8 (0x801887000)
libz.so.6 => /lib/libz.so.6 (0x801a91000)
libc.so.7 => /lib/libc.so.7 (0x800823000)
$ vagrant up
vagrant@:~ % su
Password:
root@:~vagrant # cd /usr/lib
root@:/usr/lib # ln -s libpam.so.5 libpam.so.6
root@:/usr/lib # ldd /usr/local/libexec/sudo/sudoers.so
/usr/local/libexec/sudo/sudoers.so:
libbsm.so.3 => /usr/lib/libbsm.so.3 (0x801246000)
libutil.so.9 => /lib/libutil.so.9 (0x801461000)
libpam.so.6 => /usr/lib/libpam.so.6 (0x801674000)
libsudo_util.so.0 => /usr/local/libexec/sudo/libsudo_util.so.0 (0x801881000)
libintl.so.8 => /usr/local/lib/libintl.so.8 (0x801a94000)
libz.so.6 => /lib/libz.so.6 (0x801c9e000)
libc.so.7 => /lib/libc.so.7 (0x800823000)
$ vagrant reload
$ vagrant reload
==> default: Attempting graceful shutdown of VM...
Connection to 172.16.139.159 closed by remote host.
==> default: Checking if box 'freebsd/FreeBSD-11.0-CURRENT' is up to date...
==> default: Verifying vmnet devices are healthy...
==> default: Preparing network adapters...
==> default: Starting the VMware VM...
==> default: Waiting for machine to boot. This may take a few minutes...
default: SSH address: 172.16.139.159:22
default: SSH username: vagrant
default: SSH auth method: private key
default: Warning: Connection timeout. Retrying...
default: Warning: Host appears down. Retrying...
default: Warning: Connection refused. Retrying...
==> default: Machine booted and ready!
==> default: Forwarding ports...
default: -- 22 => 2222
==> default: Configuring network adapters within the VM...
==> default: Exporting NFS shared folders...
==> default: Preparing to edit /etc/exports. Administrator privileges will be required...
==> default: Mounting NFS shared folders...
Make Development Great Again
my-laptop$ ls -lA
total 8
drwxr-xr-x 3 sean staff 102 Jun 11 13:12 .vagrant
-rw-r--r-- 1 sean staff 867 Jun 11 13:11 Vagrantfile
my-laptop$ vagrant ssh
vagrant@:~ % ll /vagrant/
total 8
drwxr-xr-x 3 501 staff 102 Jun 11 17:12 .vagrant/
-rw-r--r-- 1 501 staff 867 Jun 11 17:11 Vagrantfile
vagrant@:~ % mount
/dev/gpt/rootfs on / (ufs, local, soft-updates)
devfs on /dev (devfs, local, multilabel)
172.16.139.1:/Users/sean/src/FreeBSD/vagrant/vm-nfs on /vagrant (nfs)
$ vagrant suspend
vagrant@:~ % echo goozfraba > /vagrant/foo
vagrant@:~ % logout
Shared connection to 172.16.139.159 closed.
my-laptop $ cat foo
goozfraba
my-laptop $ vagrant suspend
==> default: Suspending the VMware VM…
my-laptop $ vagrant status

Current machine states:
default suspended (vmware_fusion)
The VM is suspended. To resume this VM, run `vagrant up`.
Scripted Hotness
% cat Vagrantfile

[snip]

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.guest = :freebsd
config.vm.box = "freebsd/FreeBSD-11.0-CURRENT"
config.ssh.shell = "sh"
config.vm.synced_folder ".", "/vagrant", nfs: true, id:
"vagrant-root"
config.vm.provision "shell", inline: $script, privileged: false
[snip]
Scripted Hotness
% cat Vagrantfile

$script = <<SCRIPT
sudo pkg install -y go runit
SCRIPT
[snip]

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.guest = :freebsd
config.vm.box = "freebsd/FreeBSD-11.0-CURRENT"
config.ssh.shell = "sh"
config.vm.synced_folder ".", "/vagrant", nfs: true, id: "vagrant-root"
config.vm.provision "shell", inline: $script, privileged: false
[snip]
vagrant + bhyve?
https://github.com/jesa7955/vagrant-bhyve
{
"provider" : "libvirt",
"loader" : "bhyveload"
}
vagrant + bhyve?
https://github.com/jesa7955/vagrant-bhyve
{
"provider" : "libvirt",
"loader" : "bhyveload"
}
$ vagrant up
$ vagrant up --provider=vmware_fusion

or
$ vagrant up --provider=virtualbox
or
$ vagrant up --provider=bhyve
Serverless Clusters
$ cat Vagrantfile
[snip]
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
1.upto(3) do |n|
vmName = "nomad-server%02d" % [n]
config.vm.define vmName, autostart: (n == 1 ? true : false), primary: (n == 1 ? true : false) do |vmCfg|
vmCfg.vm.hostname = vmName
vmCfg = configureVM(vmCfg)
end
end
1.upto(3) do |n|
vmName = "nomad-client%02d" % [n]
config.vm.define vmName, autostart: false, primary: false do |vmCfg|
vmCfg.vm.hostname = vmName
vmCfg = configureVM(vmCfg)
end
end
end
Serverless Clusters
# Launch nomad-server01
$ vagrant up


# Suspends nomad-server01
$ vagrant suspend




$ vagrant up '/nomad-server*/' nomad-client01
Golden Image
Dev to Prod?
???
Packer FTW
(Part of a Larger Ecosystem)
Packer Templates
# Hat tip to brd@ for doing the initial heavy lifting!

$ git clone https://github.com/brd/packer-freebsd.git
$ cd packer-freebsd
$ ./automatic-11.0-current-ufs.sh —only=vmware-iso

[snip]
$ vagrant up
$ vagrant ssh
Packer Templates
$ ./automatic-11.0-current-ufs.sh --only=vmware-iso
Looking for latest -CURRENT from ftp://ftp.FreeBSD.org/pub/FreeBSD/snapshots/ISO-IMAGES/11.0/ ...
Using FreeBSD-11.0-CURRENT-amd64-20160518-r300097-disc1.iso (checksum
8b5c9a9240962a497507f374dcf3839744c63f271fe2b2d36a4fd4d46eb966a3a697684f3379dcb87816b92b44f443e5fa4a71ec713fc408c
1ac60990d73817e) ...
vmware-iso output will be in this color.
==> vmware-iso: Downloading or copying ISO
vmware-iso: Downloading or copying: http://ftp.freebsd.org/pub/FreeBSD/snapshots/ISO-IMAGES/11.0/
FreeBSD-11.0-CURRENT-amd64-20160518-r300097-disc1.iso
==> vmware-iso: Creating virtual machine disk
==> vmware-iso: Building and writing VMX file
==> vmware-iso: Starting virtual machine...
vmware-iso: The VM will be run headless, without a GUI. If you want to
vmware-iso: view the screen of the VM, connect via VNC without a password to
vmware-iso: 127.0.0.1:5997
==> vmware-iso: Waiting 45s for boot...
==> vmware-iso: Connecting to VM via VNC
==> vmware-iso: Error connecting to VNC: dial tcp 127.0.0.1:5965: getsockopt: connection refused
==> vmware-iso: Typing the boot command over VNC...
Packer Templates
$ ./automatic-11.0-current-ufs.sh --only=vmware-iso
Packer Templates
$ ./automatic-11.0-current-ufs.sh --only=vmware-iso
Looking for latest -CURRENT from ftp://ftp.FreeBSD.org/pub/FreeBSD/snapshots/ISO-IMAGES/11.0/ ...
Using FreeBSD-11.0-CURRENT-amd64-20160518-r300097-disc1.iso (checksum
8b5c9a9240962a497507f374dcf3839744c63f271fe2b2d36a4fd4d46eb966a3a697684f3379dcb87816b92b44f443e5fa4a71ec713fc408c
1ac60990d73817e) ...
vmware-iso output will be in this color.
==> vmware-iso: Downloading or copying ISO
vmware-iso: Downloading or copying: http://ftp.freebsd.org/pub/FreeBSD/snapshots/ISO-IMAGES/11.0/
FreeBSD-11.0-CURRENT-amd64-20160518-r300097-disc1.iso
==> vmware-iso: Creating virtual machine disk
==> vmware-iso: Building and writing VMX file
==> vmware-iso: Starting virtual machine...
vmware-iso: The VM will be run headless, without a GUI. If you want to
vmware-iso: view the screen of the VM, connect via VNC without a password to
vmware-iso: 127.0.0.1:5997
==> vmware-iso: Waiting 45s for boot...
==> vmware-iso: Connecting to VM via VNC
==> vmware-iso: Error connecting to VNC: dial tcp 127.0.0.1:5965: getsockopt: connection refused
==> vmware-iso: Typing the boot command over VNC...
Questions?
Thanks!
sean@hashicorp.com

More Related Content

What's hot

HTTP For the Good or the Bad
HTTP For the Good or the BadHTTP For the Good or the Bad
HTTP For the Good or the Bad
Xavier Mertens
 
Regex Considered Harmful: Use Rosie Pattern Language Instead
Regex Considered Harmful: Use Rosie Pattern Language InsteadRegex Considered Harmful: Use Rosie Pattern Language Instead
Regex Considered Harmful: Use Rosie Pattern Language Instead
All Things Open
 
Top Node.js Metrics to Watch
Top Node.js Metrics to WatchTop Node.js Metrics to Watch
Top Node.js Metrics to Watch
Sematext Group, Inc.
 
Altitude SF 2017: Advanced VCL: Shielding and Clustering
Altitude SF 2017: Advanced VCL: Shielding and ClusteringAltitude SF 2017: Advanced VCL: Shielding and Clustering
Altitude SF 2017: Advanced VCL: Shielding and Clustering
Fastly
 
Hardening cassandra q2_2016
Hardening cassandra q2_2016Hardening cassandra q2_2016
Hardening cassandra q2_2016
zznate
 
Mitigating Security Threats with Fastly - Joe Williams at Fastly Altitude 2015
Mitigating Security Threats with Fastly - Joe Williams at Fastly Altitude 2015Mitigating Security Threats with Fastly - Joe Williams at Fastly Altitude 2015
Mitigating Security Threats with Fastly - Joe Williams at Fastly Altitude 2015
Fastly
 
Malware Detection with OSSEC HIDS - OSSECCON 2014
Malware Detection with OSSEC HIDS - OSSECCON 2014Malware Detection with OSSEC HIDS - OSSECCON 2014
Malware Detection with OSSEC HIDS - OSSECCON 2014
Santiago Bassett
 
ruxc0n 2012
ruxc0n 2012ruxc0n 2012
ruxc0n 2012
mimeframe
 
Data Encryption at Rest
Data Encryption at RestData Encryption at Rest
Data Encryption at Rest
All Things Open
 
LinkRest at JeeConf 2017
LinkRest at JeeConf 2017LinkRest at JeeConf 2017
LinkRest at JeeConf 2017
Andrus Adamchik
 
NGINX Can Do That? Test Drive Your Config File!
NGINX Can Do That? Test Drive Your Config File!NGINX Can Do That? Test Drive Your Config File!
NGINX Can Do That? Test Drive Your Config File!
Jeff Anderson
 
How to build a High Performance PSGI/Plack Server
How to build a High Performance PSGI/Plack Server How to build a High Performance PSGI/Plack Server
How to build a High Performance PSGI/Plack Server
Masahiro Nagano
 
Content Caching with NGINX and NGINX Plus
Content Caching with NGINX and NGINX PlusContent Caching with NGINX and NGINX Plus
Content Caching with NGINX and NGINX Plus
Kevin Jones
 
Stampede con 2014 cassandra in the real world
Stampede con 2014   cassandra in the real worldStampede con 2014   cassandra in the real world
Stampede con 2014 cassandra in the real world
zznate
 
Rails Caching Secrets from the Edge
Rails Caching Secrets from the EdgeRails Caching Secrets from the Edge
Rails Caching Secrets from the Edge
Michael May
 
DAST в CI/CD, Ольга Свиридова
DAST в CI/CD, Ольга СвиридоваDAST в CI/CD, Ольга Свиридова
DAST в CI/CD, Ольга Свиридова
Mail.ru Group
 
Stop Worrying & Love the SQL - A Case Study
Stop Worrying & Love the SQL - A Case StudyStop Worrying & Love the SQL - A Case Study
Stop Worrying & Love the SQL - A Case Study
All Things Open
 
Altitude SF 2017: Debugging Fastly VCL 101
Altitude SF 2017: Debugging Fastly VCL 101Altitude SF 2017: Debugging Fastly VCL 101
Altitude SF 2017: Debugging Fastly VCL 101
Fastly
 
Design & Performance - Steve Souders at Fastly Altitude 2015
Design & Performance - Steve Souders at Fastly Altitude 2015Design & Performance - Steve Souders at Fastly Altitude 2015
Design & Performance - Steve Souders at Fastly Altitude 2015
Fastly
 
Solving anything in VCL
Solving anything in VCLSolving anything in VCL
Solving anything in VCL
Fastly
 

What's hot (20)

HTTP For the Good or the Bad
HTTP For the Good or the BadHTTP For the Good or the Bad
HTTP For the Good or the Bad
 
Regex Considered Harmful: Use Rosie Pattern Language Instead
Regex Considered Harmful: Use Rosie Pattern Language InsteadRegex Considered Harmful: Use Rosie Pattern Language Instead
Regex Considered Harmful: Use Rosie Pattern Language Instead
 
Top Node.js Metrics to Watch
Top Node.js Metrics to WatchTop Node.js Metrics to Watch
Top Node.js Metrics to Watch
 
Altitude SF 2017: Advanced VCL: Shielding and Clustering
Altitude SF 2017: Advanced VCL: Shielding and ClusteringAltitude SF 2017: Advanced VCL: Shielding and Clustering
Altitude SF 2017: Advanced VCL: Shielding and Clustering
 
Hardening cassandra q2_2016
Hardening cassandra q2_2016Hardening cassandra q2_2016
Hardening cassandra q2_2016
 
Mitigating Security Threats with Fastly - Joe Williams at Fastly Altitude 2015
Mitigating Security Threats with Fastly - Joe Williams at Fastly Altitude 2015Mitigating Security Threats with Fastly - Joe Williams at Fastly Altitude 2015
Mitigating Security Threats with Fastly - Joe Williams at Fastly Altitude 2015
 
Malware Detection with OSSEC HIDS - OSSECCON 2014
Malware Detection with OSSEC HIDS - OSSECCON 2014Malware Detection with OSSEC HIDS - OSSECCON 2014
Malware Detection with OSSEC HIDS - OSSECCON 2014
 
ruxc0n 2012
ruxc0n 2012ruxc0n 2012
ruxc0n 2012
 
Data Encryption at Rest
Data Encryption at RestData Encryption at Rest
Data Encryption at Rest
 
LinkRest at JeeConf 2017
LinkRest at JeeConf 2017LinkRest at JeeConf 2017
LinkRest at JeeConf 2017
 
NGINX Can Do That? Test Drive Your Config File!
NGINX Can Do That? Test Drive Your Config File!NGINX Can Do That? Test Drive Your Config File!
NGINX Can Do That? Test Drive Your Config File!
 
How to build a High Performance PSGI/Plack Server
How to build a High Performance PSGI/Plack Server How to build a High Performance PSGI/Plack Server
How to build a High Performance PSGI/Plack Server
 
Content Caching with NGINX and NGINX Plus
Content Caching with NGINX and NGINX PlusContent Caching with NGINX and NGINX Plus
Content Caching with NGINX and NGINX Plus
 
Stampede con 2014 cassandra in the real world
Stampede con 2014   cassandra in the real worldStampede con 2014   cassandra in the real world
Stampede con 2014 cassandra in the real world
 
Rails Caching Secrets from the Edge
Rails Caching Secrets from the EdgeRails Caching Secrets from the Edge
Rails Caching Secrets from the Edge
 
DAST в CI/CD, Ольга Свиридова
DAST в CI/CD, Ольга СвиридоваDAST в CI/CD, Ольга Свиридова
DAST в CI/CD, Ольга Свиридова
 
Stop Worrying & Love the SQL - A Case Study
Stop Worrying & Love the SQL - A Case StudyStop Worrying & Love the SQL - A Case Study
Stop Worrying & Love the SQL - A Case Study
 
Altitude SF 2017: Debugging Fastly VCL 101
Altitude SF 2017: Debugging Fastly VCL 101Altitude SF 2017: Debugging Fastly VCL 101
Altitude SF 2017: Debugging Fastly VCL 101
 
Design & Performance - Steve Souders at Fastly Altitude 2015
Design & Performance - Steve Souders at Fastly Altitude 2015Design & Performance - Steve Souders at Fastly Altitude 2015
Design & Performance - Steve Souders at Fastly Altitude 2015
 
Solving anything in VCL
Solving anything in VCLSolving anything in VCL
Solving anything in VCL
 

Viewers also liked

HashiCorp at Just Eat
HashiCorp at Just EatHashiCorp at Just Eat
HashiCorp at Just Eat
Andrew Brown
 
AWS Lambda at JUST EAT
AWS Lambda at JUST EATAWS Lambda at JUST EAT
AWS Lambda at JUST EAT
Andrew Brown
 
Hashicorp @ JUST EAT - Part 2
Hashicorp @ JUST EAT - Part 2Hashicorp @ JUST EAT - Part 2
Hashicorp @ JUST EAT - Part 2
Andrew Brown
 
Using ansible vault to protect your secrets
Using ansible vault to protect your secretsUsing ansible vault to protect your secrets
Using ansible vault to protect your secrets
Excella
 
MeetBSD2014 Performance Analysis
MeetBSD2014 Performance AnalysisMeetBSD2014 Performance Analysis
MeetBSD2014 Performance Analysis
Brendan Gregg
 
Neil Saunders (Beamly) - Securing your AWS Infrastructure with Hashicorp Vault
Neil Saunders (Beamly) - Securing your AWS Infrastructure with Hashicorp Vault Neil Saunders (Beamly) - Securing your AWS Infrastructure with Hashicorp Vault
Neil Saunders (Beamly) - Securing your AWS Infrastructure with Hashicorp Vault
Outlyer
 
AWS Billing Deep Dive (DMG203) | AWS re:Invent 2013
AWS Billing Deep Dive (DMG203) | AWS re:Invent 2013AWS Billing Deep Dive (DMG203) | AWS re:Invent 2013
AWS Billing Deep Dive (DMG203) | AWS re:Invent 2013
Amazon Web Services
 
PostgreSQL + ZFS best practices
PostgreSQL + ZFS best practicesPostgreSQL + ZFS best practices
PostgreSQL + ZFS best practices
Sean Chittenden
 

Viewers also liked (8)

HashiCorp at Just Eat
HashiCorp at Just EatHashiCorp at Just Eat
HashiCorp at Just Eat
 
AWS Lambda at JUST EAT
AWS Lambda at JUST EATAWS Lambda at JUST EAT
AWS Lambda at JUST EAT
 
Hashicorp @ JUST EAT - Part 2
Hashicorp @ JUST EAT - Part 2Hashicorp @ JUST EAT - Part 2
Hashicorp @ JUST EAT - Part 2
 
Using ansible vault to protect your secrets
Using ansible vault to protect your secretsUsing ansible vault to protect your secrets
Using ansible vault to protect your secrets
 
MeetBSD2014 Performance Analysis
MeetBSD2014 Performance AnalysisMeetBSD2014 Performance Analysis
MeetBSD2014 Performance Analysis
 
Neil Saunders (Beamly) - Securing your AWS Infrastructure with Hashicorp Vault
Neil Saunders (Beamly) - Securing your AWS Infrastructure with Hashicorp Vault Neil Saunders (Beamly) - Securing your AWS Infrastructure with Hashicorp Vault
Neil Saunders (Beamly) - Securing your AWS Infrastructure with Hashicorp Vault
 
AWS Billing Deep Dive (DMG203) | AWS re:Invent 2013
AWS Billing Deep Dive (DMG203) | AWS re:Invent 2013AWS Billing Deep Dive (DMG203) | AWS re:Invent 2013
AWS Billing Deep Dive (DMG203) | AWS re:Invent 2013
 
PostgreSQL + ZFS best practices
PostgreSQL + ZFS best practicesPostgreSQL + ZFS best practices
PostgreSQL + ZFS best practices
 

Similar to Modern tooling to assist with developing applications on FreeBSD

introduction-infra-as-a-code using terraform
introduction-infra-as-a-code using terraformintroduction-infra-as-a-code using terraform
introduction-infra-as-a-code using terraform
niyof97
 
Tips and Tricks for Automating Windows with Chef
Tips and Tricks for Automating Windows with ChefTips and Tricks for Automating Windows with Chef
Tips and Tricks for Automating Windows with Chef
Chef Software, Inc.
 
IT Automation with Ansible
IT Automation with AnsibleIT Automation with Ansible
IT Automation with Ansible
Rayed Alrashed
 
The Modern Developer Toolbox
The Modern Developer ToolboxThe Modern Developer Toolbox
The Modern Developer Toolbox
Pablo Godel
 
Virtual Infrastructure
Virtual InfrastructureVirtual Infrastructure
Virtual Infrastructure
Bryan McLellan
 
Test-Driven Infrastructure with Chef
Test-Driven Infrastructure with ChefTest-Driven Infrastructure with Chef
Test-Driven Infrastructure with Chef
Michael Lihs
 
Assembling an Open Source Toolchain to Manage Public, Private and Hybrid Clou...
Assembling an Open Source Toolchain to Manage Public, Private and Hybrid Clou...Assembling an Open Source Toolchain to Manage Public, Private and Hybrid Clou...
Assembling an Open Source Toolchain to Manage Public, Private and Hybrid Clou...
POSSCON
 
Create your very own Development Environment with Vagrant and Packer
Create your very own Development Environment with Vagrant and PackerCreate your very own Development Environment with Vagrant and Packer
Create your very own Development Environment with Vagrant and Packer
frastel
 
Testing Terraform
Testing TerraformTesting Terraform
Testing Terraform
Nathen Harvey
 
Vagrant WordCamp Hamilton
Vagrant  WordCamp HamiltonVagrant  WordCamp Hamilton
Vagrant WordCamp Hamilton
Paul Bearne
 
Azure from scratch part 4
Azure from scratch part 4Azure from scratch part 4
Azure from scratch part 4
Girish Kalamati
 
OpenSource ToolChain for the Hybrid Cloud
OpenSource ToolChain for the Hybrid CloudOpenSource ToolChain for the Hybrid Cloud
OpenSource ToolChain for the Hybrid Cloud
Isaac Christoffersen
 
Create Development and Production Environments with Vagrant
Create Development and Production Environments with VagrantCreate Development and Production Environments with Vagrant
Create Development and Production Environments with Vagrant
Brian Hogan
 
EC2 AMI Factory with Chef, Berkshelf, and Packer
EC2 AMI Factory with Chef, Berkshelf, and PackerEC2 AMI Factory with Chef, Berkshelf, and Packer
EC2 AMI Factory with Chef, Berkshelf, and Packer
George Miranda
 
Minicurso de Vagrant
Minicurso de VagrantMinicurso de Vagrant
Minicurso de Vagrant
Leandro Nunes
 
How to create your own hack environment
How to create your own hack environmentHow to create your own hack environment
How to create your own hack environment
Sumedt Jitpukdebodin
 
Write php deploy everywhere tek11
Write php deploy everywhere   tek11Write php deploy everywhere   tek11
Write php deploy everywhere tek11
Michelangelo van Dam
 
Intro To Node.js
Intro To Node.jsIntro To Node.js
Intro To Node.js
Chris Cowan
 
Docker Security workshop slides
Docker Security workshop slidesDocker Security workshop slides
Docker Security workshop slides
Docker, Inc.
 
Dependencies Managers in C/C++. Using stdcpp 2014
Dependencies Managers in C/C++. Using stdcpp 2014Dependencies Managers in C/C++. Using stdcpp 2014
Dependencies Managers in C/C++. Using stdcpp 2014
biicode
 

Similar to Modern tooling to assist with developing applications on FreeBSD (20)

introduction-infra-as-a-code using terraform
introduction-infra-as-a-code using terraformintroduction-infra-as-a-code using terraform
introduction-infra-as-a-code using terraform
 
Tips and Tricks for Automating Windows with Chef
Tips and Tricks for Automating Windows with ChefTips and Tricks for Automating Windows with Chef
Tips and Tricks for Automating Windows with Chef
 
IT Automation with Ansible
IT Automation with AnsibleIT Automation with Ansible
IT Automation with Ansible
 
The Modern Developer Toolbox
The Modern Developer ToolboxThe Modern Developer Toolbox
The Modern Developer Toolbox
 
Virtual Infrastructure
Virtual InfrastructureVirtual Infrastructure
Virtual Infrastructure
 
Test-Driven Infrastructure with Chef
Test-Driven Infrastructure with ChefTest-Driven Infrastructure with Chef
Test-Driven Infrastructure with Chef
 
Assembling an Open Source Toolchain to Manage Public, Private and Hybrid Clou...
Assembling an Open Source Toolchain to Manage Public, Private and Hybrid Clou...Assembling an Open Source Toolchain to Manage Public, Private and Hybrid Clou...
Assembling an Open Source Toolchain to Manage Public, Private and Hybrid Clou...
 
Create your very own Development Environment with Vagrant and Packer
Create your very own Development Environment with Vagrant and PackerCreate your very own Development Environment with Vagrant and Packer
Create your very own Development Environment with Vagrant and Packer
 
Testing Terraform
Testing TerraformTesting Terraform
Testing Terraform
 
Vagrant WordCamp Hamilton
Vagrant  WordCamp HamiltonVagrant  WordCamp Hamilton
Vagrant WordCamp Hamilton
 
Azure from scratch part 4
Azure from scratch part 4Azure from scratch part 4
Azure from scratch part 4
 
OpenSource ToolChain for the Hybrid Cloud
OpenSource ToolChain for the Hybrid CloudOpenSource ToolChain for the Hybrid Cloud
OpenSource ToolChain for the Hybrid Cloud
 
Create Development and Production Environments with Vagrant
Create Development and Production Environments with VagrantCreate Development and Production Environments with Vagrant
Create Development and Production Environments with Vagrant
 
EC2 AMI Factory with Chef, Berkshelf, and Packer
EC2 AMI Factory with Chef, Berkshelf, and PackerEC2 AMI Factory with Chef, Berkshelf, and Packer
EC2 AMI Factory with Chef, Berkshelf, and Packer
 
Minicurso de Vagrant
Minicurso de VagrantMinicurso de Vagrant
Minicurso de Vagrant
 
How to create your own hack environment
How to create your own hack environmentHow to create your own hack environment
How to create your own hack environment
 
Write php deploy everywhere tek11
Write php deploy everywhere   tek11Write php deploy everywhere   tek11
Write php deploy everywhere tek11
 
Intro To Node.js
Intro To Node.jsIntro To Node.js
Intro To Node.js
 
Docker Security workshop slides
Docker Security workshop slidesDocker Security workshop slides
Docker Security workshop slides
 
Dependencies Managers in C/C++. Using stdcpp 2014
Dependencies Managers in C/C++. Using stdcpp 2014Dependencies Managers in C/C++. Using stdcpp 2014
Dependencies Managers in C/C++. Using stdcpp 2014
 

More from Sean Chittenden

BSDCan '19 Core Update
BSDCan '19 Core UpdateBSDCan '19 Core Update
BSDCan '19 Core Update
Sean Chittenden
 
pg_prefaulter: Scaling WAL Performance
pg_prefaulter: Scaling WAL Performancepg_prefaulter: Scaling WAL Performance
pg_prefaulter: Scaling WAL Performance
Sean Chittenden
 
FreeBSD VPC Introduction
FreeBSD VPC IntroductionFreeBSD VPC Introduction
FreeBSD VPC Introduction
Sean Chittenden
 
Universal Userland
Universal UserlandUniversal Userland
Universal Userland
Sean Chittenden
 
Life Cycle of Metrics, Alerting, and Performance Monitoring in Microservices
Life Cycle of Metrics, Alerting, and Performance Monitoring in MicroservicesLife Cycle of Metrics, Alerting, and Performance Monitoring in Microservices
Life Cycle of Metrics, Alerting, and Performance Monitoring in Microservices
Sean Chittenden
 
PostgreSQL on ZFS Lightning Talk
PostgreSQL on ZFS Lightning TalkPostgreSQL on ZFS Lightning Talk
PostgreSQL on ZFS Lightning Talk
Sean Chittenden
 

More from Sean Chittenden (6)

BSDCan '19 Core Update
BSDCan '19 Core UpdateBSDCan '19 Core Update
BSDCan '19 Core Update
 
pg_prefaulter: Scaling WAL Performance
pg_prefaulter: Scaling WAL Performancepg_prefaulter: Scaling WAL Performance
pg_prefaulter: Scaling WAL Performance
 
FreeBSD VPC Introduction
FreeBSD VPC IntroductionFreeBSD VPC Introduction
FreeBSD VPC Introduction
 
Universal Userland
Universal UserlandUniversal Userland
Universal Userland
 
Life Cycle of Metrics, Alerting, and Performance Monitoring in Microservices
Life Cycle of Metrics, Alerting, and Performance Monitoring in MicroservicesLife Cycle of Metrics, Alerting, and Performance Monitoring in Microservices
Life Cycle of Metrics, Alerting, and Performance Monitoring in Microservices
 
PostgreSQL on ZFS Lightning Talk
PostgreSQL on ZFS Lightning TalkPostgreSQL on ZFS Lightning Talk
PostgreSQL on ZFS Lightning Talk
 

Recently uploaded

一比一原版(sdsu毕业证书)圣地亚哥州立大学毕业证如何办理
一比一原版(sdsu毕业证书)圣地亚哥州立大学毕业证如何办理一比一原版(sdsu毕业证书)圣地亚哥州立大学毕业证如何办理
一比一原版(sdsu毕业证书)圣地亚哥州立大学毕业证如何办理
kgyxske
 
DECODING JAVA THREAD DUMPS: MASTER THE ART OF ANALYSIS
DECODING JAVA THREAD DUMPS: MASTER THE ART OF ANALYSISDECODING JAVA THREAD DUMPS: MASTER THE ART OF ANALYSIS
DECODING JAVA THREAD DUMPS: MASTER THE ART OF ANALYSIS
Tier1 app
 
ppt on the brain chip neuralink.pptx
ppt  on   the brain  chip neuralink.pptxppt  on   the brain  chip neuralink.pptx
ppt on the brain chip neuralink.pptx
Reetu63
 
Operational ease MuleSoft and Salesforce Service Cloud Solution v1.0.pptx
Operational ease MuleSoft and Salesforce Service Cloud Solution v1.0.pptxOperational ease MuleSoft and Salesforce Service Cloud Solution v1.0.pptx
Operational ease MuleSoft and Salesforce Service Cloud Solution v1.0.pptx
sandeepmenon62
 
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
dakas1
 
Kubernetes at Scale: Going Multi-Cluster with Istio
Kubernetes at Scale:  Going Multi-Cluster  with IstioKubernetes at Scale:  Going Multi-Cluster  with Istio
Kubernetes at Scale: Going Multi-Cluster with Istio
Severalnines
 
Superpower Your Apache Kafka Applications Development with Complementary Open...
Superpower Your Apache Kafka Applications Development with Complementary Open...Superpower Your Apache Kafka Applications Development with Complementary Open...
Superpower Your Apache Kafka Applications Development with Complementary Open...
Paul Brebner
 
WWDC 2024 Keynote Review: For CocoaCoders Austin
WWDC 2024 Keynote Review: For CocoaCoders AustinWWDC 2024 Keynote Review: For CocoaCoders Austin
WWDC 2024 Keynote Review: For CocoaCoders Austin
Patrick Weigel
 
How Can Hiring A Mobile App Development Company Help Your Business Grow?
How Can Hiring A Mobile App Development Company Help Your Business Grow?How Can Hiring A Mobile App Development Company Help Your Business Grow?
How Can Hiring A Mobile App Development Company Help Your Business Grow?
ToXSL Technologies
 
Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...
Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...
Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...
XfilesPro
 
🏎️Tech Transformation: DevOps Insights from the Experts 👩‍💻
🏎️Tech Transformation: DevOps Insights from the Experts 👩‍💻🏎️Tech Transformation: DevOps Insights from the Experts 👩‍💻
🏎️Tech Transformation: DevOps Insights from the Experts 👩‍💻
campbellclarkson
 
ACE - Team 24 Wrapup event at ahmedabad.
ACE - Team 24 Wrapup event at ahmedabad.ACE - Team 24 Wrapup event at ahmedabad.
ACE - Team 24 Wrapup event at ahmedabad.
Maitrey Patel
 
The Power of Visual Regression Testing_ Why It Is Critical for Enterprise App...
The Power of Visual Regression Testing_ Why It Is Critical for Enterprise App...The Power of Visual Regression Testing_ Why It Is Critical for Enterprise App...
The Power of Visual Regression Testing_ Why It Is Critical for Enterprise App...
kalichargn70th171
 
WMF 2024 - Unlocking the Future of Data Powering Next-Gen AI with Vector Data...
WMF 2024 - Unlocking the Future of Data Powering Next-Gen AI with Vector Data...WMF 2024 - Unlocking the Future of Data Powering Next-Gen AI with Vector Data...
WMF 2024 - Unlocking the Future of Data Powering Next-Gen AI with Vector Data...
Luigi Fugaro
 
Enhanced Screen Flows UI/UX using SLDS with Tom Kitt
Enhanced Screen Flows UI/UX using SLDS with Tom KittEnhanced Screen Flows UI/UX using SLDS with Tom Kitt
Enhanced Screen Flows UI/UX using SLDS with Tom Kitt
Peter Caitens
 
What’s New in Odoo 17 – A Complete Roadmap
What’s New in Odoo 17 – A Complete RoadmapWhat’s New in Odoo 17 – A Complete Roadmap
What’s New in Odoo 17 – A Complete Roadmap
Envertis Software Solutions
 
J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...
J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...
J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...
Bert Jan Schrijver
 
Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)
Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)
Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)
safelyiotech
 
Enums On Steroids - let's look at sealed classes !
Enums On Steroids - let's look at sealed classes !Enums On Steroids - let's look at sealed classes !
Enums On Steroids - let's look at sealed classes !
Marcin Chrost
 
A Comprehensive Guide on Implementing Real-World Mobile Testing Strategies fo...
A Comprehensive Guide on Implementing Real-World Mobile Testing Strategies fo...A Comprehensive Guide on Implementing Real-World Mobile Testing Strategies fo...
A Comprehensive Guide on Implementing Real-World Mobile Testing Strategies fo...
kalichargn70th171
 

Recently uploaded (20)

一比一原版(sdsu毕业证书)圣地亚哥州立大学毕业证如何办理
一比一原版(sdsu毕业证书)圣地亚哥州立大学毕业证如何办理一比一原版(sdsu毕业证书)圣地亚哥州立大学毕业证如何办理
一比一原版(sdsu毕业证书)圣地亚哥州立大学毕业证如何办理
 
DECODING JAVA THREAD DUMPS: MASTER THE ART OF ANALYSIS
DECODING JAVA THREAD DUMPS: MASTER THE ART OF ANALYSISDECODING JAVA THREAD DUMPS: MASTER THE ART OF ANALYSIS
DECODING JAVA THREAD DUMPS: MASTER THE ART OF ANALYSIS
 
ppt on the brain chip neuralink.pptx
ppt  on   the brain  chip neuralink.pptxppt  on   the brain  chip neuralink.pptx
ppt on the brain chip neuralink.pptx
 
Operational ease MuleSoft and Salesforce Service Cloud Solution v1.0.pptx
Operational ease MuleSoft and Salesforce Service Cloud Solution v1.0.pptxOperational ease MuleSoft and Salesforce Service Cloud Solution v1.0.pptx
Operational ease MuleSoft and Salesforce Service Cloud Solution v1.0.pptx
 
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
 
Kubernetes at Scale: Going Multi-Cluster with Istio
Kubernetes at Scale:  Going Multi-Cluster  with IstioKubernetes at Scale:  Going Multi-Cluster  with Istio
Kubernetes at Scale: Going Multi-Cluster with Istio
 
Superpower Your Apache Kafka Applications Development with Complementary Open...
Superpower Your Apache Kafka Applications Development with Complementary Open...Superpower Your Apache Kafka Applications Development with Complementary Open...
Superpower Your Apache Kafka Applications Development with Complementary Open...
 
WWDC 2024 Keynote Review: For CocoaCoders Austin
WWDC 2024 Keynote Review: For CocoaCoders AustinWWDC 2024 Keynote Review: For CocoaCoders Austin
WWDC 2024 Keynote Review: For CocoaCoders Austin
 
How Can Hiring A Mobile App Development Company Help Your Business Grow?
How Can Hiring A Mobile App Development Company Help Your Business Grow?How Can Hiring A Mobile App Development Company Help Your Business Grow?
How Can Hiring A Mobile App Development Company Help Your Business Grow?
 
Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...
Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...
Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...
 
🏎️Tech Transformation: DevOps Insights from the Experts 👩‍💻
🏎️Tech Transformation: DevOps Insights from the Experts 👩‍💻🏎️Tech Transformation: DevOps Insights from the Experts 👩‍💻
🏎️Tech Transformation: DevOps Insights from the Experts 👩‍💻
 
ACE - Team 24 Wrapup event at ahmedabad.
ACE - Team 24 Wrapup event at ahmedabad.ACE - Team 24 Wrapup event at ahmedabad.
ACE - Team 24 Wrapup event at ahmedabad.
 
The Power of Visual Regression Testing_ Why It Is Critical for Enterprise App...
The Power of Visual Regression Testing_ Why It Is Critical for Enterprise App...The Power of Visual Regression Testing_ Why It Is Critical for Enterprise App...
The Power of Visual Regression Testing_ Why It Is Critical for Enterprise App...
 
WMF 2024 - Unlocking the Future of Data Powering Next-Gen AI with Vector Data...
WMF 2024 - Unlocking the Future of Data Powering Next-Gen AI with Vector Data...WMF 2024 - Unlocking the Future of Data Powering Next-Gen AI with Vector Data...
WMF 2024 - Unlocking the Future of Data Powering Next-Gen AI with Vector Data...
 
Enhanced Screen Flows UI/UX using SLDS with Tom Kitt
Enhanced Screen Flows UI/UX using SLDS with Tom KittEnhanced Screen Flows UI/UX using SLDS with Tom Kitt
Enhanced Screen Flows UI/UX using SLDS with Tom Kitt
 
What’s New in Odoo 17 – A Complete Roadmap
What’s New in Odoo 17 – A Complete RoadmapWhat’s New in Odoo 17 – A Complete Roadmap
What’s New in Odoo 17 – A Complete Roadmap
 
J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...
J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...
J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...
 
Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)
Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)
Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)
 
Enums On Steroids - let's look at sealed classes !
Enums On Steroids - let's look at sealed classes !Enums On Steroids - let's look at sealed classes !
Enums On Steroids - let's look at sealed classes !
 
A Comprehensive Guide on Implementing Real-World Mobile Testing Strategies fo...
A Comprehensive Guide on Implementing Real-World Mobile Testing Strategies fo...A Comprehensive Guide on Implementing Real-World Mobile Testing Strategies fo...
A Comprehensive Guide on Implementing Real-World Mobile Testing Strategies fo...
 

Modern tooling to assist with developing applications on FreeBSD

  • 1. Modern tooling to assist with developing applications on FreeBSD
  • 6.
  • 8. Problems • Stable • Debuggable • Knowledgable Administrators • Performance • Secure • Manageable • Embeddable • Pride
  • 10. Problem: Stable • Affinity for uptime • Time required to install amortized over life of the server • Artisanal configuration acceptable • 900d uptimes are bragged about
  • 14. Problems: Knowledgable Admins • Comments • Commit Comment Quality • Documentation Project • Handbook and man(1) pages are excellent • Lack of questions on Stack Overflow or other Search Engine-index sites
  • 18. Problems: Performance • ENOMEM • malloc(3) can return NULL • Fixed kernel/userland memory limits
  • 20. Problems: Secure • Deny by Default runs deep • Network Services: OpenSSH, IPsec • Firewall(s!) - ipfw/pf • Yarrow (?) • ACLs (discretionary enforcement) • MAC (mandatory enforcement)
  • 22. Problems: Manageable • Ports Tree • pkg(1) binary and src • poudriere(1) • make release • mergemaster(1) -> etcupdate(1) • Packable Base / {make,src}.conf
  • 24. Problems: Embeddable • Appliance Vendors: stable, long lived branching • Userland not exposed to customers • Stripped down Kernel "just works, forever" • Product life-cycles measured in years
 (vs software which is measured in months)
  • 26. Problems: Pride noun ˈprīd: 1. a high or inordinate opinion of one's own dignity, importance, merit, or superiority, whether as cherished in the mind or as displayed in bearing, conduct, etc. 3. a becoming or dignified sense of what is due to oneself or one's position or character; self-respect; self-esteem. 4. pleasure or satisfaction taken in something done by or belonging to oneself or believed to reflect credit upon oneself: civic pride. http://www.dictionary.com/browse/pride
  • 27. Problems: Pride noun, van·i·ty ˈva-nə-tē: • the quality of people who have too much pride in their own appearance, abilities, achievements, etc. : the quality of being vain • something (such as a belief or a way of behaving) which shows that you have too much pride in yourself, your social status, etc.
 "Vanity - definitely my favorite sin." -Satan
 https://www.youtube.com/watch?v=Cv9zXUd55Sw http://www.merriam-webster.com/dictionary/vanity
  • 28. Why are these problems?
  • 29. Wrong set of KPIs for Users
  • 30. Problems: KPIs • Stable • Debuggable • Knowledgable Administrators • Performance • Secure • Manageable • Embeddable • Pride
  • 31. Problems: KPIs • Stable = Maximized Mean Time Between "Incident" • Debuggable = Number of Unknowns • Knowledgable Administrators = Number of servers per administrator
  • 32. Problems: KPIs • Performance = Maximal number of Bits Chucked Per Server • Performance = Bytes read/written per Server • Secure = Mean Time Between Security Incident • Secure = Average Severity of Security Incidents
  • 33. Problems: KPIs • Manageable = Mean Time Between Fresh Installs (MTTBFI?) • Manageable = Maximize ROI per Server • Embeddable = Maximize the number of random corners of the physical nether-verse BSD can be installed (small footprint and control)
  • 34. Problems: KPIs Pride = Emotional investment or impact per server installed in production.
  • 36. Cloud KPIs for FreeBSD
  • 37. Cloud KPIs • Friction: Effort required to spin up a new instance • Street cred: Number of blog posts/Stack Overflow questions referring about ${TOPIC} on ${AWS,GCP,DigitalOcean,etc}
  • 38. Cloud KPI: Friction • Number of steps required to create a new image • Maximize Reliability of the build process for creating a new golden image • Minimal number of differences between development and production
  • 42. Workflow 1. Spin up a VM a. Dev b. Test c. Ship 2. Create golden image per app 3. Upload golden image 4. Scale golden image in production
  • 43.
  • 44. Vagrant: Config (1/3) % cat Vagrantfile
 VAGRANTFILE_API_VERSION = "2"
 Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| config.vm.guest = :freebsd config.vm.box = "freebsd/FreeBSD-11.0-CURRENT" config.ssh.shell = "sh" config.vm.synced_folder ".", "/vagrant", nfs: true, id: "vagrant- root" # Insert Provider Snippet here end
 % cat Vagrantfile | wc -l
 26
  • 45. Vagrant: Config VMware (2/3) Vagrant.configure(VAGRANTFILE_API_VERSION) do | config| # Insert VM configs from 1/3 here config.vm.provider :vmware_fusion do |v| v.vmx["memsize"] = "4096" v.vmx["numvcpus"] = "8" end end
  • 46. Vagrant: Config VirtualBox (3/3) Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| # Insert VM configs from 1/3 here config.vm.provider :virtualbox do |vb| vb.gui = false vb.memory = "4096" vb.cpus = 8 vb.customize ["modifyvm", :id, "--ioapic", "on"] vb.customize ["modifyvm", :id, "--hwvirtex", "on"] vb.customize ["modifyvm", :id, "--usb", "off"] vb.customize ["modifyvm", :id, "--usbehci", "off"] vb.customize ["modifyvm", :id, "--audio", "none"] vb.customize ["modifyvm", :id, "--nictype1", "virtio"] vb.customize ["modifyvm", :id, "--nictype2", "virtio"] end
 end
  • 47. $ vagrant up $ vagrant up Bringing machine 'default' up with 'vmware_fusion' provider... ==> default: Cloning VMware VM: 'freebsd/FreeBSD-11.0-CURRENT'. This can take some time... ==> default: Checking if box 'freebsd/FreeBSD-11.0-CURRENT' is up to date... ==> default: A newer version of the box 'freebsd/FreeBSD-11.0-CURRENT' is available! You currently ==> default: have version '2016.03.08'. The latest is version '2016.04.30'. Run ==> default: `vagrant box update` to update. ==> default: Verifying vmnet devices are healthy... ==> default: Preparing network adapters... ==> default: Starting the VMware VM... ==> default: Waiting for machine to boot. This may take a few minutes... default: SSH address: 172.16.139.158:22 default: SSH username: vagrant default: SSH auth method: private key
  • 48. $ vagrant up $ vagrant help up Usage: vagrant up [options] [name] Options: --[no-]provision Enable or disable provisioning --provision-with x,y,z Enable only certain provisioners, by type. --[no-]destroy-on-error Destroy machine if any fatal error happens (default to true) --[no-]parallel Enable or disable parallelism if provider supports it --provider PROVIDER Back the machine with a specific provider -h, --help Print this help
  • 49. $ vagrant up $ vagrant up --provider=vmware_fusion
 or $ vagrant up --provider=virtualbox …
  • 50. $ vagrant up $ vagrant up [snip] default: Warning: Connection refused. Retrying... default: Warning: Connection refused. Retrying... default: Warning: Remote connection disconnect. Retrying... default: Warning: Connection refused. Retrying... default: Warning: Connection timeout. Retrying... default: Warning: Connection timeout. Retrying... default: Warning: Connection refused. Retrying... default: default: Vagrant insecure key detected. Vagrant will automatically replace default: this with a newly generated keypair for better security. default: default: Inserting generated public key within guest... default: Removing insecure key from the guest if it's present...
  • 51. $ vagrant up $ vagrant up [snip] default: Key inserted! Disconnecting and reconnecting using new SSH key... ==> default: Machine booted and ready! ==> default: Forwarding ports... default: -- 22 => 2222 ==> default: Configuring network adapters within the VM... The following SSH command responded with a non-zero exit status. Vagrant assumes that this means the command failed! sed -i '' -e '/^#VAGRANT-BEGIN/,/^#VAGRANT-END/ d' /etc/rc.conf Stdout from the command:
  • 52. $ vagrant up $ vagrant up [snip] Stderr from the command: sudo: error in /usr/local/etc/sudo.conf, line 0 while loading plugin `sudoers_policy' sudo: unable to load /usr/local/libexec/sudo/sudoers.so: Shared object "libpam.so.6" not found, required by "sudoers.so" sudo: fatal error, unable to load plugins
  • 53. $ vagrant up $ vagrant box update ==> default: Checking for updates to 'freebsd/FreeBSD-11.0-CURRENT' default: Latest installed version: 2016.03.08 default: Version constraints: default: Provider: vmware_desktop ==> default: Updating 'freebsd/FreeBSD-11.0-CURRENT' with provider 'vmware_desktop' from version ==> default: '2016.03.08' to '2016.04.30'... ==> default: Loading metadata for box 'https://atlas.hashicorp.com/freebsd/FreeBSD-11.0-CURRENT? access_token=62kMYhn6H0ZNBQ.atlasv1.XfHqcMrbfCd7HNFQoT7HVZ6rmICYI3lXx99nJr013yEJ1UsdxQGuXzE79ZFi qd04I4o' ==> default: Adding box 'freebsd/FreeBSD-11.0-CURRENT' (v2016.04.30) for provider: vmware_desktop default: Downloading: https://atlas.hashicorp.com/freebsd/boxes/FreeBSD-11.0-CURRENT/ versions/2016.04.30/providers/vmware_desktop.box [snip] default: Downloading: https://atlas.hashicorp.com/freebsd/boxes/FreeBSD-11.0-CURRENT/ versions/2016.04.30/providers/vmware_desktop.box ==> default: Successfully added box 'freebsd/FreeBSD-11.0-CURRENT' (v2016.04.30) for 'vmware_desktop'!
  • 54. $ vagrant up $ vagrant up Bringing machine 'default' up with 'vmware_fusion' provider... ==> default: Checking if box 'freebsd/FreeBSD-11.0-CURRENT' is up to date... ==> default: Machine is already running. $ vagrant status Current machine states: default running (vmware_fusion) The VM is running. To stop this VM, you can run `vagrant halt` to shut it down, or you can run `vagrant suspend` to simply suspend the virtual machine. In either case, to restart it again, run `vagrant up`.
  • 55. $ vagrant ssh $ vagrant ssh FreeBSD 11.0-CURRENT (GENERIC) #0 r296485: Tue Mar 8 07:04:36 UTC 2016 Welcome to FreeBSD! [snip] vagrant@:~ % uname -a FreeBSD 11.0-CURRENT FreeBSD 11.0-CURRENT #0 r296485: Tue Mar 8 07:04:36 UTC 2016 root@releng2.nyi.freebsd.org:/usr/obj/ usr/src/sys/GENERIC amd64
  • 57. $ vagrant destroy $ vagrant destroy default: Are you sure you want to destroy the 'default' VM? [y/N] y ==> default: Stopping the VMware VM... Connection to 172.16.139.158 closed by remote host. ==> default: Deleting the VM… $
  • 58. $ vagrant up $ vagrant up Bringing machine 'default' up with 'vmware_fusion' provider... ==> default: Cloning VMware VM: 'freebsd/FreeBSD-11.0-CURRENT'. This can take some time... ==> default: Checking if box 'freebsd/FreeBSD-11.0-CURRENT' is up to date... ==> default: Verifying vmnet devices are healthy... ==> default: Preparing network adapters... ==> default: Starting the VMware VM... ==> default: Waiting for machine to boot. This may take a few minutes... default: SSH address: 172.16.139.159:22 default: SSH username: vagrant default: SSH auth method: private key default: Warning: Connection refused. Retrying… [snip]
  • 59. $ vagrant up $ vagrant up [snip] ==> default: Configuring network adapters within the VM... The following SSH command responded with a non-zero exit status. Vagrant assumes that this means the command failed! sed -i '' -e '/^#VAGRANT-BEGIN/,/^#VAGRANT-END/ d' /etc/rc.conf Stdout from the command: Stderr from the command: sudo: error in /usr/local/etc/sudo.conf, line 0 while loading plugin `sudoers_policy' sudo: unable to load /usr/local/libexec/sudo/sudoers.so: Shared object "libpam.so.6" not found, required by "sudoers.so" sudo: fatal error, unable to load plugins
  • 60. $ vagrant up $ vagrant ssh $ vagrant@:~ % sudo tcsh sudo: error in /usr/local/etc/sudo.conf, line 0 while loading plugin `sudoers_policy' sudo: unable to load /usr/local/libexec/sudo/sudoers.so: Shared object "libpam.so. 6" not found, required by "sudoers.so" sudo: fatal error, unable to load plugins vagrant@:~ % su Password: root@:/home/vagrant # pkg delete sudo
 root@:/home/vagrant # pkg install -y sudo $ vagrant reload [blows up again]
  • 61. $ vagrant up vagrant@:~ % ldd /usr/local/libexec/sudo/sudoers.so /usr/local/libexec/sudo/sudoers.so: libbsm.so.3 => /usr/lib/libbsm.so.3 (0x801246000) libutil.so.9 => /lib/libutil.so.9 (0x801461000) libpam.so.6 => not found (0) libsudo_util.so.0 => /usr/local/libexec/sudo/libsudo_util.so.0 (0x801674000) libintl.so.8 => /usr/local/lib/libintl.so.8 (0x801887000) libz.so.6 => /lib/libz.so.6 (0x801a91000) libc.so.7 => /lib/libc.so.7 (0x800823000)
  • 62. $ vagrant up vagrant@:~ % su Password: root@:~vagrant # cd /usr/lib root@:/usr/lib # ln -s libpam.so.5 libpam.so.6 root@:/usr/lib # ldd /usr/local/libexec/sudo/sudoers.so /usr/local/libexec/sudo/sudoers.so: libbsm.so.3 => /usr/lib/libbsm.so.3 (0x801246000) libutil.so.9 => /lib/libutil.so.9 (0x801461000) libpam.so.6 => /usr/lib/libpam.so.6 (0x801674000) libsudo_util.so.0 => /usr/local/libexec/sudo/libsudo_util.so.0 (0x801881000) libintl.so.8 => /usr/local/lib/libintl.so.8 (0x801a94000) libz.so.6 => /lib/libz.so.6 (0x801c9e000) libc.so.7 => /lib/libc.so.7 (0x800823000)
  • 63. $ vagrant reload $ vagrant reload ==> default: Attempting graceful shutdown of VM... Connection to 172.16.139.159 closed by remote host. ==> default: Checking if box 'freebsd/FreeBSD-11.0-CURRENT' is up to date... ==> default: Verifying vmnet devices are healthy... ==> default: Preparing network adapters... ==> default: Starting the VMware VM... ==> default: Waiting for machine to boot. This may take a few minutes... default: SSH address: 172.16.139.159:22 default: SSH username: vagrant default: SSH auth method: private key default: Warning: Connection timeout. Retrying... default: Warning: Host appears down. Retrying... default: Warning: Connection refused. Retrying... ==> default: Machine booted and ready! ==> default: Forwarding ports... default: -- 22 => 2222 ==> default: Configuring network adapters within the VM... ==> default: Exporting NFS shared folders... ==> default: Preparing to edit /etc/exports. Administrator privileges will be required... ==> default: Mounting NFS shared folders...
  • 64. Make Development Great Again my-laptop$ ls -lA total 8 drwxr-xr-x 3 sean staff 102 Jun 11 13:12 .vagrant -rw-r--r-- 1 sean staff 867 Jun 11 13:11 Vagrantfile my-laptop$ vagrant ssh vagrant@:~ % ll /vagrant/ total 8 drwxr-xr-x 3 501 staff 102 Jun 11 17:12 .vagrant/ -rw-r--r-- 1 501 staff 867 Jun 11 17:11 Vagrantfile vagrant@:~ % mount /dev/gpt/rootfs on / (ufs, local, soft-updates) devfs on /dev (devfs, local, multilabel) 172.16.139.1:/Users/sean/src/FreeBSD/vagrant/vm-nfs on /vagrant (nfs)
  • 65. $ vagrant suspend vagrant@:~ % echo goozfraba > /vagrant/foo vagrant@:~ % logout Shared connection to 172.16.139.159 closed. my-laptop $ cat foo goozfraba my-laptop $ vagrant suspend ==> default: Suspending the VMware VM… my-laptop $ vagrant status
 Current machine states: default suspended (vmware_fusion) The VM is suspended. To resume this VM, run `vagrant up`.
  • 66. Scripted Hotness % cat Vagrantfile
 [snip]
 Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| config.vm.guest = :freebsd config.vm.box = "freebsd/FreeBSD-11.0-CURRENT" config.ssh.shell = "sh" config.vm.synced_folder ".", "/vagrant", nfs: true, id: "vagrant-root" config.vm.provision "shell", inline: $script, privileged: false [snip]
  • 67. Scripted Hotness % cat Vagrantfile
 $script = <<SCRIPT sudo pkg install -y go runit SCRIPT [snip]
 Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| config.vm.guest = :freebsd config.vm.box = "freebsd/FreeBSD-11.0-CURRENT" config.ssh.shell = "sh" config.vm.synced_folder ".", "/vagrant", nfs: true, id: "vagrant-root" config.vm.provision "shell", inline: $script, privileged: false [snip]
  • 70. $ vagrant up $ vagrant up --provider=vmware_fusion
 or $ vagrant up --provider=virtualbox or $ vagrant up --provider=bhyve
  • 71. Serverless Clusters $ cat Vagrantfile [snip] Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| 1.upto(3) do |n| vmName = "nomad-server%02d" % [n] config.vm.define vmName, autostart: (n == 1 ? true : false), primary: (n == 1 ? true : false) do |vmCfg| vmCfg.vm.hostname = vmName vmCfg = configureVM(vmCfg) end end 1.upto(3) do |n| vmName = "nomad-client%02d" % [n] config.vm.define vmName, autostart: false, primary: false do |vmCfg| vmCfg.vm.hostname = vmName vmCfg = configureVM(vmCfg) end end end
  • 72. Serverless Clusters # Launch nomad-server01 $ vagrant up 
 # Suspends nomad-server01 $ vagrant suspend 
 
 $ vagrant up '/nomad-server*/' nomad-client01
  • 75.
  • 77. (Part of a Larger Ecosystem)
  • 78. Packer Templates # Hat tip to brd@ for doing the initial heavy lifting!
 $ git clone https://github.com/brd/packer-freebsd.git $ cd packer-freebsd $ ./automatic-11.0-current-ufs.sh —only=vmware-iso
 [snip] $ vagrant up $ vagrant ssh
  • 79. Packer Templates $ ./automatic-11.0-current-ufs.sh --only=vmware-iso Looking for latest -CURRENT from ftp://ftp.FreeBSD.org/pub/FreeBSD/snapshots/ISO-IMAGES/11.0/ ... Using FreeBSD-11.0-CURRENT-amd64-20160518-r300097-disc1.iso (checksum 8b5c9a9240962a497507f374dcf3839744c63f271fe2b2d36a4fd4d46eb966a3a697684f3379dcb87816b92b44f443e5fa4a71ec713fc408c 1ac60990d73817e) ... vmware-iso output will be in this color. ==> vmware-iso: Downloading or copying ISO vmware-iso: Downloading or copying: http://ftp.freebsd.org/pub/FreeBSD/snapshots/ISO-IMAGES/11.0/ FreeBSD-11.0-CURRENT-amd64-20160518-r300097-disc1.iso ==> vmware-iso: Creating virtual machine disk ==> vmware-iso: Building and writing VMX file ==> vmware-iso: Starting virtual machine... vmware-iso: The VM will be run headless, without a GUI. If you want to vmware-iso: view the screen of the VM, connect via VNC without a password to vmware-iso: 127.0.0.1:5997 ==> vmware-iso: Waiting 45s for boot... ==> vmware-iso: Connecting to VM via VNC ==> vmware-iso: Error connecting to VNC: dial tcp 127.0.0.1:5965: getsockopt: connection refused ==> vmware-iso: Typing the boot command over VNC...
  • 81. Packer Templates $ ./automatic-11.0-current-ufs.sh --only=vmware-iso Looking for latest -CURRENT from ftp://ftp.FreeBSD.org/pub/FreeBSD/snapshots/ISO-IMAGES/11.0/ ... Using FreeBSD-11.0-CURRENT-amd64-20160518-r300097-disc1.iso (checksum 8b5c9a9240962a497507f374dcf3839744c63f271fe2b2d36a4fd4d46eb966a3a697684f3379dcb87816b92b44f443e5fa4a71ec713fc408c 1ac60990d73817e) ... vmware-iso output will be in this color. ==> vmware-iso: Downloading or copying ISO vmware-iso: Downloading or copying: http://ftp.freebsd.org/pub/FreeBSD/snapshots/ISO-IMAGES/11.0/ FreeBSD-11.0-CURRENT-amd64-20160518-r300097-disc1.iso ==> vmware-iso: Creating virtual machine disk ==> vmware-iso: Building and writing VMX file ==> vmware-iso: Starting virtual machine... vmware-iso: The VM will be run headless, without a GUI. If you want to vmware-iso: view the screen of the VM, connect via VNC without a password to vmware-iso: 127.0.0.1:5997 ==> vmware-iso: Waiting 45s for boot... ==> vmware-iso: Connecting to VM via VNC ==> vmware-iso: Error connecting to VNC: dial tcp 127.0.0.1:5965: getsockopt: connection refused ==> vmware-iso: Typing the boot command over VNC...