Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Workflow
Automating the Killer
Robots, all 10K of Them
Who Am I
@phil_zimmerman
Early Days
R10K Workflow Awesomeness
Demo Time
The Journey of A
Thousand Miles Begins
With A Single, Monolithic
Repo
A Single Repo?
What the F*@K?!!
Just
Starting
Out
Single CI Job
rspec-puppet
syntax check
lint
create/push tag
Capistrano tasks
poor mans dynamic environments
kludgy git logic w/conditionals in Capfile
Forge M
o
dules
e
k
r
o
W
n
d
i
D
t
I
l
i
t
n
U
l
l
e
dW
KLUDGY
Capistrano tasks?
s
e
l
u
d
o
M
e
g
r
o
F
e
d
Upgra
Version Management == Face Palm
Upgradin
g Affects a
ll Environ
ments!
ALL modules
everything in order to
Im
Losing
My
Patience!
problem where
upgrading forge modules can break
Oh - and that little
production
Tools Can Be
Awesome
(we just needed a couple more)
R10K
R10K
R10K!
https://github.com/
adrienthebo/r10k
Deploys
Puppet Code
Handles
Is
Git/Svn Fu
Awesome
ons
Puppetfile
Format
Puppetfile
lives in its
own
repository
Inventory of
Modules
and Their
Versions
Puppetfile
lives in its own
Repository
Inventory of
Modules and
Their Versions
own
repository AND r10k
R10K
Deploy
rspec-puppet
syntax check
lint
create/push tag
select module from dropdown list
Puppetfile
Manipulation and
Branch Creation
Tomcat Example
mod 'tomcat',
:git => 'git@github.webapps.rr.com:fylgia/tomcat.git',
:ref => 'RELEASE_1.0.13'
Create the
dev_change_foo branch
in Puppetfile repo
Create Branch
r10k deploy environment
Modify Branch
r10k deploy module
Delete Branch
auto-delete Puppetfile branch
Testing Multiple
Modules in the
Same Environment
mod 'profile',
:git => 'git@github.webapps.rr.com:fylgia/profile.git',
production
dev_change_foo
Truly Dynamic
Environments!
The Post-Receive
Hook
reaktor
Default Setup
GitHub or GitHub Enterprise
Hipchat
Just provide some config!
REAKTOR_PUPPET_MASTERS_FILE
PUPPETFILE_GIT_URL
REAKTOR_HIPCHAT_TOKEN
REAKTOR_HIPCHAT_ROOM
REAKTOR_HIPCHAT_FROM
e
r
C
e
s
a
e
l
e
R
e
t
a
Deploy - Shi
p It!
Create Release
Modulefile
versionfile (hieradata)
RELEASE_1.0.13 -> RELEASE_1.0.14
Deploy
Parameterized Job
environment
version to deploy
Puppetfile Manipulation
(again)
change :ref to selected version
commit/push updated Puppetfile
r10k deploy selected environment
One-Click
Production
Deploy
Workflow Recap:
R10K and Puppetfile
Each Module in Own Repo
Post-Receive Hook Goodness
Production Deployments
Conclusion:
Early Days
R10K Workflow Awesomeness
Demos