SlideShare a Scribd company logo
infrastructure as code
might be literally
impossible
joe damato
packagecloud.io
hi, i’m joe
i like computers
i once had a blog
called timetobleed.com
@joedamato
packagecloud.io
@packagecloudio
follow along
bit.ly/impossible-infra
BTW
bit.ly/linux-networking
literally everything
there is to know about
linux networking
infrastructure as
code might be
impossible because
nothing works.
code
what is code?
code
makes Computer do
complicated stuff in
small steps
code
each small step is
made up of a keyword
(and other stuff)
code
and so the keywords
let you use Computer
code
different languages
have different
tradeoffs
code
some languages are
difficult
code
assembly
C
C++
…
so, you need to use
them defensively
Story Time
opteron revision E
mysql
+
code
some languages are
perceived as easy, but
are terribly difficult
code
Ruby
Perl
Bash
…
An Aside
You must be an
expert in C to write
good, fast Ruby/etc
that’s part of a different talk called:
“high level languages don’t exist”
But
hard or impossible to
use these languages
defensively enough
Story Time
MRI segfaults
MRI threading
Infrastructure as code might be literally impossible / Joe Domato (packagecloud.io)
Thus
Your code does
things outside of
your reference frame
Unless
You’ve read every
line all the way
down (you haven’t).
OK.
infra code
makes Computer do
complicated stuff in
small steps
infra code
has really high level
‘keywords’
package “blah-pkg" do
version "1:1.2.8-1"
action :install
end
package { “blah-pkg“:
ensure => present,
source => “https://packagecloud.io/...”,
provider => rpm,
}
what if i told you
infra code operates
outside of your
reference frame, too
meaning
unless you’ve read
every line all the way
down…
you haven’t
OK.
some things you
(probably) didn’t
know
what if i told you…
an MRI bug
once made
puppet peg
CPU usage
sigprocmask
a syscall used
via
[sg]etcontext
[sg]etcontext
used for threading
and exception
handling
“The “puppet” process
spends 40-60% time in
“system time”, which
lengthens the time a single
puppet run takes from a few
minutes to > 20 minutes.”
I wrote a fix for this
bug that was never
accepted upstream
http://timetobleed.com/
fix-a-bug-in-rubys-
configurein-and-get-
a-30-performance-boost/
a friend working at a huge
company told me that
without that patch, they
couldn’t run puppet.
coincidence?
“We’re working on rebuilding
our entire client-side
technology stack, so it takes
fewer resources, runs faster,
and is more maintainable.”
- puppet blog
supposively
they are supposively
rebuilding (some/
all?) client side stuff
in C++
similarly
OHAI-330
Ohai crashes on Solaris 11,
Ubuntu 12.04 in mixins/
command.rb: popen4
GC.disable / GC.enable
workaround
(The work around is to disable a
major feature of the language.)
workaround
what if i told you…
it’s impossible to
install a program
securely on most
linuxes
But, package
mangers have
GPG!!!11!!
No
YUM + GPG
tl;dr: doesn’t work most
of the time and is
nearly impossible to
get it working
Story Time
pygpgme
repo_gpgcheck
gpg v3 signatures
gpg v3 signatures
%__gpg_sign_cmd %{__gpg} 
gpg --force-v3-sigs --digest-algo=sha1 --batc
verbose --no-armor --passphrase-fd 3 --no-secm
warning -u "%{_gpg_name}" -sbo %
{__signature_filename} %{__plaintext_filename}
Story Time
sslverify
APT + GPG
tl;dr: doesn’t work most
of the time and is
nearly impossible to
get it working
Story Time
debsigs vs dpkg-sig
gpg signing deb packages is
pointless
XML policy documents
/etc/debsig/policies/
DDDF2F4CE732A79A/hi.pol
<?xml version="1.0"?>
<!DOCTYPE Policy SYSTEM "http://www.debian.org/debsig/1.0/policy.dtd">
<Policy xmlns="http://www.debian.org/debsig/1.0/">
<Origin Name="test" id="DDDF2F4CE732A79A" Description="Test package"/>
<Selection>
<Required Type="origin" File="debsig.gpg" id="DDDF2F4CE732A79A"/>
</Selection>
<Verification MinOptional="0">
<Required Type="origin" File="debsig.gpg" id="DDDF2F4CE732A79A"/>
</Verification>
</Policy>
oh, and, um…
Both are
vulnerable to
replay attacks
Neither deal with
key revocation
Both are
vulnerable to
several GPG
related attacks
what if i told you…
the CA certificate
bundle you use
revoked AWS’s
SSL CA ?
but before i explain
that, periodic reminder
that trusted CA certs
come from this URL
periodic reminder
curl.haxx.se
OK, anw…
bento, vagrant, kitchen
opscode-centos-5.11
on or around 2015-02-23
updated the CA cert
bundle
bento, vagrant, kitchen
resulting in a bundle with
AWS’s CA being revoked
curl.haxx.se
“We in the curl project didn't
anticipate anything of this. We get
the data from the Mozilla project and
they changed the properties. We've
run the same script daily since a long
time. One day the output changed to
this.” - http://curl.haxx.se/mail/
archive-2014-10/0068.html
bento, vagrant, kitchen
and then accessing S3 from
vagrant boxes produced by
bento stopped working
read more on chef’s
blog: “Bento Box Update
for CentOS and Fedora”
https://www.chef.io/blog/2015/02/26/bento-box-update-for-
centos-and-fedora/
PS
debugging SSL is really
difficult
BTW QUICK THING
cognitive load
“cognitive load refers to
the total amount of mental
effort being used in the
working memory"
cognitive load
at some point you have
to wonder: when does it
become too much?
cognitive load
“just read the code” is
impossible because you
need to read millions of
lines of code
cognitive load
“People changing our Chef recipes to
make something work for them, but
then breaking everyone else’s [stuff] is
practically constant at [company] right
now.”
- my friend who works at [company]
this is all part of a different talk
called:
“the effect of capitalism on
computing”
But
anw
what if i told you…
you can DoS a
machine with
yum/apt
metadata?
when apt/yum
request metadata,
just reply with a
never ending file.
ya but i’m not
an official
mirror lol ??
“Debian and CentOS listed
the mirror within a few
hours, and Fedora listed
the mirror in minutes.”
- academic paper
what if i told you…
createrepo
generates
incorrect metadata
sometimes?
rpmUtils bug
rpmUtils uses python’s find
method instead of rfind when
splitting version strings
rpmUtils bug
version strings with two ‘-‘ in them
are split on the first, not the last
(incorrect)
rpmUtils bug
resulting in incorrect package
metadata
rpmUtils bug
this is live on the official mirrors
right now
rpmUtils bug
i filed a bug about it, but from the
looks of it, it won’t be fixed.
OK, these are all cool
stories, but…
people are using infrastructure as
code today though?
what gives?
indeed they are, with varying
levels of success and in many
cases great pain
what gives?
IN MY
OPINION
opinion 1
we won’t be able to have truly
reproducible infrastructure until we
figure out better ways of building
computer systems.
opinion 2
each time you move to a higher level of
abstraction, you need to know more stuff.
maybe cutting out some layers in between
can make this more easily solvable?
opinion 3
we need to be more honest and
responsible about our choices and
analysis of technology.
opinion 4
huge companies making billions of
dollars on top of these software
systems should take the initiative
to invest in making them better.
opinion 5
we haven’t found the “answer” yet.
what we have is better than what we
had, but we need to think bigger.
?packagecloud.io
@packagecloudio

More Related Content

PPT
scaling compiled applications - highload 2013
ice799
 
PDF
Package manages and Puppet - PuppetConf 2015
ice799
 
PDF
Chef Conf 2015: Package Management & Chef
ice799
 
PDF
Infrastructure as code might be literally impossible part 2
ice799
 
PPTX
Dear compiler please don't be my nanny v2
Dino Dini
 
PPTX
Real-time Ruby for the Real-time Web
Ilya Grigorik
 
PDF
Puppet Camp LA 2/19/2015
ice799
 
PDF
JavaScript nicht nur für Programmierer: Einblicke in die weltweit am meisten ...
Peter Hecker
 
scaling compiled applications - highload 2013
ice799
 
Package manages and Puppet - PuppetConf 2015
ice799
 
Chef Conf 2015: Package Management & Chef
ice799
 
Infrastructure as code might be literally impossible part 2
ice799
 
Dear compiler please don't be my nanny v2
Dino Dini
 
Real-time Ruby for the Real-time Web
Ilya Grigorik
 
Puppet Camp LA 2/19/2015
ice799
 
JavaScript nicht nur für Programmierer: Einblicke in die weltweit am meisten ...
Peter Hecker
 

What's hot (19)

PDF
Why I Love Python V2
gsroma
 
PDF
12 tricks to avoid hackers breaks your CI / CD
Daniel Garcia (a.k.a cr0hn)
 
PPTX
Rooted con 2020 - from the heaven to hell in the CI - CD
Daniel Garcia (a.k.a cr0hn)
 
ODP
Extjs Howto
Greg Hendricks
 
PDF
Sonatype DevSecOps Leadership forum 2020
Daniel Garcia (a.k.a cr0hn)
 
PDF
Ať se z kódu nepráší! 2013
Juraj Michálek
 
PPTX
ZN-2015
Ivan Elkin
 
PDF
Give me 15 minutes and i'll change your view of gdb
gregthelaw
 
PPTX
LVPHP.org
Joshua Copeland
 
ODP
Is Python still production ready ? Ludovic Gasc
Pôle Systematic Paris-Region
 
PDF
A Modest Introduction to Swift
John Anderson
 
PDF
A commercial open source project in Python
jbrendel
 
PDF
Rails advantages and techniques
DefV
 
PDF
Bringing choas to order in your node.js app
Dan Jenkins
 
PPTX
First python project
Neetu Jain
 
PDF
Documenting apps ti confnyc
Jamil Spain
 
PDF
What makes groovy groovy codeurs en seine - 2013 - light size
Normandy JUG
 
PPTX
PyCourse - Self driving python course
Eran Shlomo
 
PPTX
Python - The Good, The Bad and The ugly
Eran Shlomo
 
Why I Love Python V2
gsroma
 
12 tricks to avoid hackers breaks your CI / CD
Daniel Garcia (a.k.a cr0hn)
 
Rooted con 2020 - from the heaven to hell in the CI - CD
Daniel Garcia (a.k.a cr0hn)
 
Extjs Howto
Greg Hendricks
 
Sonatype DevSecOps Leadership forum 2020
Daniel Garcia (a.k.a cr0hn)
 
Ať se z kódu nepráší! 2013
Juraj Michálek
 
ZN-2015
Ivan Elkin
 
Give me 15 minutes and i'll change your view of gdb
gregthelaw
 
LVPHP.org
Joshua Copeland
 
Is Python still production ready ? Ludovic Gasc
Pôle Systematic Paris-Region
 
A Modest Introduction to Swift
John Anderson
 
A commercial open source project in Python
jbrendel
 
Rails advantages and techniques
DefV
 
Bringing choas to order in your node.js app
Dan Jenkins
 
First python project
Neetu Jain
 
Documenting apps ti confnyc
Jamil Spain
 
What makes groovy groovy codeurs en seine - 2013 - light size
Normandy JUG
 
PyCourse - Self driving python course
Eran Shlomo
 
Python - The Good, The Bad and The ugly
Eran Shlomo
 
Ad

Similar to Infrastructure as code might be literally impossible / Joe Domato (packagecloud.io) (20)

PDF
Infrastructure as code might be literally impossible
ice799
 
PDF
PHP Mega Meetup, Sep, 2020, Anti patterns in php
Ahmed Abdou
 
PDF
What every C++ programmer should know about modern compilers (w/ comments, AC...
Sławomir Zborowski
 
PDF
PuppetConf 2014 Killer R10K Workflow With Notes
Phil Zimmerman
 
PDF
Low maintenance perl notes
Perrin Harkins
 
ODP
Joxean Koret - Database Security Paradise [Rooted CON 2011]
RootedCON
 
PDF
Puppet at GitHub / ChatOps
Puppet
 
KEY
TxJS 2011
Brian LeRoux
 
PDF
Puppet Camp Berlin 2015: Felix Frank | Rapid Testing Setups for Puppet
NETWAYS
 
PDF
Puppet Camp Berlin 2015: Rapid testing Setups for Puppet
Puppet
 
PDF
Pilot Tech Talk #10 — Practical automation by Kamil Cholewiński
Pilot
 
ODP
When Good Code Goes Bad: Tools and Techniques for Troubleshooting Plone
David Glick
 
PDF
The Duck Teaches Learn to debug from the masters. Local to production- kill ...
ShaiAlmog1
 
PDF
Design and Evolution of cyber-dojo
Jon Jagger
 
PDF
How to get started with Site Reliability Engineering
Andrew Kirkpatrick
 
PPT
gdb-debug analysis and commnds on gcc.ppt
MaheshBabuD1
 
PPT
Why I Love Python
didip
 
PDF
Linux Security and How Web Browser Sandboxes Really Work (NDC Oslo 2017)
Patricia Aas
 
ODP
Concurrent Programming with Ruby and Tuple Spaces
luccastera
 
PDF
Introduction to Programming in Go
Amr Hassan
 
Infrastructure as code might be literally impossible
ice799
 
PHP Mega Meetup, Sep, 2020, Anti patterns in php
Ahmed Abdou
 
What every C++ programmer should know about modern compilers (w/ comments, AC...
Sławomir Zborowski
 
PuppetConf 2014 Killer R10K Workflow With Notes
Phil Zimmerman
 
Low maintenance perl notes
Perrin Harkins
 
Joxean Koret - Database Security Paradise [Rooted CON 2011]
RootedCON
 
Puppet at GitHub / ChatOps
Puppet
 
TxJS 2011
Brian LeRoux
 
Puppet Camp Berlin 2015: Felix Frank | Rapid Testing Setups for Puppet
NETWAYS
 
Puppet Camp Berlin 2015: Rapid testing Setups for Puppet
Puppet
 
Pilot Tech Talk #10 — Practical automation by Kamil Cholewiński
Pilot
 
When Good Code Goes Bad: Tools and Techniques for Troubleshooting Plone
David Glick
 
The Duck Teaches Learn to debug from the masters. Local to production- kill ...
ShaiAlmog1
 
Design and Evolution of cyber-dojo
Jon Jagger
 
How to get started with Site Reliability Engineering
Andrew Kirkpatrick
 
gdb-debug analysis and commnds on gcc.ppt
MaheshBabuD1
 
Why I Love Python
didip
 
Linux Security and How Web Browser Sandboxes Really Work (NDC Oslo 2017)
Patricia Aas
 
Concurrent Programming with Ruby and Tuple Spaces
luccastera
 
Introduction to Programming in Go
Amr Hassan
 
Ad

More from Ontico (20)

PDF
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
Ontico
 
PDF
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Ontico
 
PPTX
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Ontico
 
PDF
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Ontico
 
PDF
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Ontico
 
PDF
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
Ontico
 
PDF
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Ontico
 
PDF
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Ontico
 
PPTX
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
Ontico
 
PPTX
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
Ontico
 
PDF
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Ontico
 
PPTX
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Ontico
 
PPTX
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Ontico
 
PDF
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Ontico
 
PPT
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
Ontico
 
PPTX
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Ontico
 
PPTX
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Ontico
 
PPTX
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
Ontico
 
PPTX
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Ontico
 
PDF
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Ontico
 
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
Ontico
 
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Ontico
 
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Ontico
 
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Ontico
 
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Ontico
 
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
Ontico
 
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Ontico
 
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Ontico
 
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
Ontico
 
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
Ontico
 
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Ontico
 
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Ontico
 
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Ontico
 
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Ontico
 
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
Ontico
 
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Ontico
 
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Ontico
 
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
Ontico
 
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Ontico
 
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Ontico
 

Recently uploaded (20)

PPTX
22PCOAM21 Session 2 Understanding Data Source.pptx
Guru Nanak Technical Institutions
 
PPT
Understanding the Key Components and Parts of a Drone System.ppt
Siva Reddy
 
PDF
LEAP-1B presedntation xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
hatem173148
 
PDF
Advanced LangChain & RAG: Building a Financial AI Assistant with Real-Time Data
Soufiane Sejjari
 
PDF
20ME702-Mechatronics-UNIT-1,UNIT-2,UNIT-3,UNIT-4,UNIT-5, 2025-2026
Mohanumar S
 
PPTX
Online Cab Booking and Management System.pptx
diptipaneri80
 
PPTX
IoT_Smart_Agriculture_Presentations.pptx
poojakumari696707
 
PPTX
MT Chapter 1.pptx- Magnetic particle testing
ABCAnyBodyCanRelax
 
PDF
CAD-CAM U-1 Combined Notes_57761226_2025_04_22_14_40.pdf
shailendrapratap2002
 
PPTX
MSME 4.0 Template idea hackathon pdf to understand
alaudeenaarish
 
PPTX
FUNDAMENTALS OF ELECTRIC VEHICLES UNIT-1
MikkiliSuresh
 
PPTX
Victory Precisions_Supplier Profile.pptx
victoryprecisions199
 
PDF
All chapters of Strength of materials.ppt
girmabiniyam1234
 
PDF
2025 Laurence Sigler - Advancing Decision Support. Content Management Ecommer...
Francisco Javier Mora Serrano
 
PPTX
Information Retrieval and Extraction - Module 7
premSankar19
 
PPTX
business incubation centre aaaaaaaaaaaaaa
hodeeesite4
 
PDF
settlement FOR FOUNDATION ENGINEERS.pdf
Endalkazene
 
PPT
1. SYSTEMS, ROLES, AND DEVELOPMENT METHODOLOGIES.ppt
zilow058
 
PDF
Unit I Part II.pdf : Security Fundamentals
Dr. Madhuri Jawale
 
PPTX
database slide on modern techniques for optimizing database queries.pptx
aky52024
 
22PCOAM21 Session 2 Understanding Data Source.pptx
Guru Nanak Technical Institutions
 
Understanding the Key Components and Parts of a Drone System.ppt
Siva Reddy
 
LEAP-1B presedntation xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
hatem173148
 
Advanced LangChain & RAG: Building a Financial AI Assistant with Real-Time Data
Soufiane Sejjari
 
20ME702-Mechatronics-UNIT-1,UNIT-2,UNIT-3,UNIT-4,UNIT-5, 2025-2026
Mohanumar S
 
Online Cab Booking and Management System.pptx
diptipaneri80
 
IoT_Smart_Agriculture_Presentations.pptx
poojakumari696707
 
MT Chapter 1.pptx- Magnetic particle testing
ABCAnyBodyCanRelax
 
CAD-CAM U-1 Combined Notes_57761226_2025_04_22_14_40.pdf
shailendrapratap2002
 
MSME 4.0 Template idea hackathon pdf to understand
alaudeenaarish
 
FUNDAMENTALS OF ELECTRIC VEHICLES UNIT-1
MikkiliSuresh
 
Victory Precisions_Supplier Profile.pptx
victoryprecisions199
 
All chapters of Strength of materials.ppt
girmabiniyam1234
 
2025 Laurence Sigler - Advancing Decision Support. Content Management Ecommer...
Francisco Javier Mora Serrano
 
Information Retrieval and Extraction - Module 7
premSankar19
 
business incubation centre aaaaaaaaaaaaaa
hodeeesite4
 
settlement FOR FOUNDATION ENGINEERS.pdf
Endalkazene
 
1. SYSTEMS, ROLES, AND DEVELOPMENT METHODOLOGIES.ppt
zilow058
 
Unit I Part II.pdf : Security Fundamentals
Dr. Madhuri Jawale
 
database slide on modern techniques for optimizing database queries.pptx
aky52024
 

Infrastructure as code might be literally impossible / Joe Domato (packagecloud.io)