SlideShare ist ein Scribd-Unternehmen logo
1 von 37
Downloaden Sie, um offline zu lesen
The Song of JBoss and ChefThe Song of JBoss and Chef
DevOpsDays Warsaw 2016
Tomasz Torcz
<tomasz.torcz@alior.pl>
Agenda
- who am I?
- what is JBoss? What is Chef?
- why is it complicated?
- pro & cons
Who am I?
Banks. Banks are special
JBoss?
The JBoss Enterprise Application Platform is a
Java EE-based application server runtime
platform used for building, deploying, and hosting
highly-transactional Java applications and services.
Chef
Configuration management tool written in Ruby
and Erlang. It uses a pure-Ruby, domain-specific
language for writing system configuration
"recipes".
The Song ofThe Song of
JBoss and ChefJBoss and Chef
The Song ofThe Song of
JBoss and ChefJBoss and Chef
Why did we care?
- already automated lower levels of stack
Paweł Bartusch @ https://youtu.be/U50w_ZoQygA
- needed for full CI/CD pipeline
Waldemar Piszczewiat @ https://youtu.be/9-X8qytNznA
- crucial to have accounting
git blame
Architecture
Architecture
vroom!
vrooom!
Workflow
- multiple teams, separation of duties
- internal developers
- external vendors
How do you configure JBoss?
1. Web Console
How do you configure JBoss?
1. Web Console
2. Command Line Interface
How do you configure JBoss?
1. Web Console
2. Command Line Interface
3. XML files (domain.xml, host*.xml, etc.)
How do you configure JBoss?
1. Web Console
2. Command Line Interface
3. XML files (domain.xml, host*.xml, etc.)
JBoss CLI
"logging": {
…
"root-logger": {
"handlers": "["File_rotating"]",
"level": "INFO"
~/bin/jboss-cli.sh --controller=10.14.x.y:9999
--connect --commands='/profile=full-
ha/subsystem=logging/root-logger=ROOT:write-
attribute(name=handlers, value=["File_rotating"])'
Reading the JBoss output
{
"outcome" => "failed",
"failure-description" => {"host-failure-
descriptions" => {"vhost02" => "JBAS014749:
Operation handler failed: null"}},
"rolled-back" => true
}
Reading the JBoss output
eval(JBoss’ output) … success!
=> {"outcome"=>"failed",
"failure-description"=>{
"host-failure-descriptions"=>{
"vhost02"=>"JBAS014749: Operation handler
failed: null"
}
},
"rolled-back"=>true}
Reading the JBoss output
"extension" => {
"org.jboss.as.webservices" => undefined, …
NameError: undefined local variable or
method `undefined' for main:Object
Reading the JBoss output
"extension" => {
"org.jboss.as.webservices" => undefined, …
NameError: undefined local variable or
method `undefined' for main:Object
sed 's/undefined/{}/g' … success!
Reading the JBoss output
"content" => [{"hash" => bytes { 0x87, 0x17,
0x0a, 0xd7, 0xff, 0x72 }}]
SyntaxError: (eval):1: syntax error,
unexpected =>, expecting end-of-input
"content" => [{"hash" => bytes { 0x87, 0x...
^
sed 's/{"hash" => bytes {//g' … success!
JBoss output massaging function
c.gsub!('=> undefined', '=> {}')
c.gsub!(/([[:blank:]]*)(-?b[0-9]+)Lb(,?)/,
'123') # 1234L -> "1234"
c.gsub!('expression "', '"expression ')
c.gsub!('{"hash" => bytes {', '') # _ 'hash =>
bytes' to array
c.gsub!(/([ t]+)}}(],?$)/,'12') # /
c.gsub!(/'/, '' + "'") # don't ask :/
c.gsub!(/([[:blank:]]*()(".
+"[[:blank:]]=>[[:blank:]]".+"))(,?)/, '23')
c.gsub!(/(.+[)((.+))(].+)/,'123')
c.gsub!(/"/, ''')
JBoss output massaging function
commit 3b54e51a0fc9149330e32c42fd784ad3b20850ad
Author: Bartosz Trudnowski <bartosz.trudnowski@ge.com>
Date: Tue Feb 23 10:00:58 2016 +0100
- c.gsub!(/([[:blank:]]()(".+"[[:blank:]]=>[[:blank:]]".+"))(,?)/, '23')
+ c.gsub!(/([[:blank:]]*()(".+"[[:blank:]]=>[[:blank:]]".+"))(,?)/, '23')
JBoss output format
Other JBoss annoyances
- config keywords incoherence
- punctuation frenzy
The good and the bad
What lessons did we learn?
PROD cluster
PROD cluster 1 hour later
Handover
bph_jboss_srv bph_jboss_ml bph_jboss_app
Handover – number of commits
bph_jboss_srv bph_jboss_ml bph_jboss_app
80 Tomasz Torcz 254 Tomasz Torcz 50 Tomasz Torcz
9 Waldemar Piszczewiat 67 Bartosz Trudnowski 10 Bartosz Trudnowski
4 Krzysztof Kowalczyk 17 Waldemar Piszczewiat 7 Waldemar Piszczewiat
4 Bartosz Trudnowski 4 Bartosz Dempc 6 Krzysztof Kowalczyk
3 Waldemar Buczak 1 Waldemar Buczak
1 Grzegorz Prusik 1 Grzegorz Krysik
Data bags – number of commits
dev test prod
218 Waldemar Piszczewiat 273 Waldemar Piszczewiat 40 Bartosz Dempc
53 Tomasz Torcz 194 Bartosz Dempc 17 Paweł Rodziewicz
8 Bartosz Trudnowski 107 Grzegorz Prusik 13 Grzegorz Prusik
5 Technical CICD account 49 Rafał Markowski 6 Michał Szor
3 Waldemar Buczak 43 Grzegorz Krysik 6 Waldemar Piszczewiat
2 Bartosz Dempc 24 Grzegorz Słaby 5 Grzegorz Słaby
… …
Reading the Chef output
* execute[Updating SG01 property
spring.profiles.active to
cbpm,sit,mockReport,localStorage] action run
(skipped due to not_if)
Managable config
- many similar, but maybe different clusters?
- json-diff
- testing, moving configuration
- copy&paste
- easy to revert
Diverging templates
cicd-dev-apps/dev/ … /GsbTytan.properties.erb
cicd-uat-apps/dk1/ … /GsbTytan.properties.erb
cicd-uat-apps/dk2/ … /GsbTytan.properties.erb
cicd-uat-apps/tg/ … /GsbTytan.properties.erb
cicd-sit-apps/sit/ … /GsbTytan.properties.erb
cicd-sit-apps/sitstab/ … /GsbTytan.properties.erb
cicd-prod-apps/prod/ … /GsbTytan.properties.erb
- moved to external git repos
The Song of JBoss and ChefThe Song of JBoss and Chef
DevOpsDays Warsaw 2016
Tomasz Torcz
<tomasz.torcz@alior.pl>

Weitere ähnliche Inhalte

Was ist angesagt?

Riki Fridrich - Grunt, Gulp a spol. - Automatizáciou k maximalizácii lenivosti
Riki Fridrich - Grunt, Gulp a spol. - Automatizáciou k maximalizácii lenivostiRiki Fridrich - Grunt, Gulp a spol. - Automatizáciou k maximalizácii lenivosti
Riki Fridrich - Grunt, Gulp a spol. - Automatizáciou k maximalizácii lenivosti
Develcz
 
Gitosis on Mac OS X Server
Gitosis on Mac OS X ServerGitosis on Mac OS X Server
Gitosis on Mac OS X Server
Yasuhiro Asaka
 
Thread介紹
Thread介紹Thread介紹
Thread介紹
Jack Chen
 
Plone Conference 2008 Lightning Talk Static Zope Rpx
Plone Conference 2008 Lightning Talk Static Zope RpxPlone Conference 2008 Lightning Talk Static Zope Rpx
Plone Conference 2008 Lightning Talk Static Zope Rpx
Paris, France
 
Как показать 90 млн картинок и сохранить жизнь диску
Как показать 90 млн картинок и сохранить жизнь дискуКак показать 90 млн картинок и сохранить жизнь диску
Как показать 90 млн картинок и сохранить жизнь диску
CEE-SEC(R)
 
You Don't Need Lodash
You Don't Need Lodash You Don't Need Lodash
You Don't Need Lodash
UpsideTravel
 

Was ist angesagt? (20)

Shell Scripting & Ruby Hacking
Shell Scripting & Ruby HackingShell Scripting & Ruby Hacking
Shell Scripting & Ruby Hacking
 
Shell Scripting-training-course-navi-mumbai-shell-scripting-course-provider-n...
Shell Scripting-training-course-navi-mumbai-shell-scripting-course-provider-n...Shell Scripting-training-course-navi-mumbai-shell-scripting-course-provider-n...
Shell Scripting-training-course-navi-mumbai-shell-scripting-course-provider-n...
 
Riki Fridrich - Grunt, Gulp a spol. - Automatizáciou k maximalizácii lenivosti
Riki Fridrich - Grunt, Gulp a spol. - Automatizáciou k maximalizácii lenivostiRiki Fridrich - Grunt, Gulp a spol. - Automatizáciou k maximalizácii lenivosti
Riki Fridrich - Grunt, Gulp a spol. - Automatizáciou k maximalizácii lenivosti
 
Mac OS X Lion で作る WordPress local 環境
Mac OS X Lion で作る WordPress local 環境Mac OS X Lion で作る WordPress local 環境
Mac OS X Lion で作る WordPress local 環境
 
Gitosis on Mac OS X Server
Gitosis on Mac OS X ServerGitosis on Mac OS X Server
Gitosis on Mac OS X Server
 
(WHAT) To Do or Not To Do: Staying Up To Date with PHP Versions
(WHAT) To Do or Not To Do: Staying Up To Date with PHP Versions(WHAT) To Do or Not To Do: Staying Up To Date with PHP Versions
(WHAT) To Do or Not To Do: Staying Up To Date with PHP Versions
 
Babushka
BabushkaBabushka
Babushka
 
LiveScript &lt;| Rocking your world.js
LiveScript &lt;| Rocking your world.js LiveScript &lt;| Rocking your world.js
LiveScript &lt;| Rocking your world.js
 
mongodb-introduction
mongodb-introductionmongodb-introduction
mongodb-introduction
 
Thread介紹
Thread介紹Thread介紹
Thread介紹
 
Plone Conference 2008 Lightning Talk Static Zope Rpx
Plone Conference 2008 Lightning Talk Static Zope RpxPlone Conference 2008 Lightning Talk Static Zope Rpx
Plone Conference 2008 Lightning Talk Static Zope Rpx
 
FPBrno 2018-05-22: Reason intro
FPBrno 2018-05-22: Reason introFPBrno 2018-05-22: Reason intro
FPBrno 2018-05-22: Reason intro
 
Abusing Erlang compilation pipeline for Fun and Profit
Abusing Erlang compilation pipeline for Fun and ProfitAbusing Erlang compilation pipeline for Fun and Profit
Abusing Erlang compilation pipeline for Fun and Profit
 
JIP Pipeline System Introduction
JIP Pipeline System IntroductionJIP Pipeline System Introduction
JIP Pipeline System Introduction
 
Clojure + MongoDB on Heroku
Clojure + MongoDB on HerokuClojure + MongoDB on Heroku
Clojure + MongoDB on Heroku
 
Как показать 90 млн картинок и сохранить жизнь диску
Как показать 90 млн картинок и сохранить жизнь дискуКак показать 90 млн картинок и сохранить жизнь диску
Как показать 90 млн картинок и сохранить жизнь диску
 
Как показать 90 млн картинок и сохранить жизнь диску
Как показать 90 млн картинок и сохранить жизнь дискуКак показать 90 млн картинок и сохранить жизнь диску
Как показать 90 млн картинок и сохранить жизнь диску
 
You Don't Need Lodash
You Don't Need Lodash You Don't Need Lodash
You Don't Need Lodash
 
Como programar melhor jogando game boy
Como programar melhor jogando game boyComo programar melhor jogando game boy
Como programar melhor jogando game boy
 
serverstats
serverstatsserverstats
serverstats
 

Andere mochten auch

JDD 2016 - Joseph W. Yoder - Deliver Fast "With Confidence"
JDD 2016 - Joseph W. Yoder - Deliver Fast "With Confidence"JDD 2016 - Joseph W. Yoder - Deliver Fast "With Confidence"
JDD 2016 - Joseph W. Yoder - Deliver Fast "With Confidence"
PROIDEA
 

Andere mochten auch (20)

DOD 2016 - Rafał Kuć - Building a Resilient Log Aggregation Pipeline Using El...
DOD 2016 - Rafał Kuć - Building a Resilient Log Aggregation Pipeline Using El...DOD 2016 - Rafał Kuć - Building a Resilient Log Aggregation Pipeline Using El...
DOD 2016 - Rafał Kuć - Building a Resilient Log Aggregation Pipeline Using El...
 
infraxstructure: Rafał Wiosna "Pomarańczowe M jak "Miłość" w regionach czyli...
infraxstructure: Rafał Wiosna  "Pomarańczowe M jak "Miłość" w regionach czyli...infraxstructure: Rafał Wiosna  "Pomarańczowe M jak "Miłość" w regionach czyli...
infraxstructure: Rafał Wiosna "Pomarańczowe M jak "Miłość" w regionach czyli...
 
JDD 2016 - Łukasz Sawicki - WHY? + Impact Mapping
JDD 2016 - Łukasz Sawicki - WHY? + Impact MappingJDD 2016 - Łukasz Sawicki - WHY? + Impact Mapping
JDD 2016 - Łukasz Sawicki - WHY? + Impact Mapping
 
Atmosphere 2016 - Catalin Jora - Microservices continuous delivery with MANT...
Atmosphere 2016 - Catalin Jora -  Microservices continuous delivery with MANT...Atmosphere 2016 - Catalin Jora -  Microservices continuous delivery with MANT...
Atmosphere 2016 - Catalin Jora - Microservices continuous delivery with MANT...
 
PLNOG 17 - Bartosz Musznicki - Mobilne i domowe hotspoty Wi-Fi w INEA
PLNOG 17 - Bartosz Musznicki - Mobilne i domowe hotspoty Wi-Fi w INEAPLNOG 17 - Bartosz Musznicki - Mobilne i domowe hotspoty Wi-Fi w INEA
PLNOG 17 - Bartosz Musznicki - Mobilne i domowe hotspoty Wi-Fi w INEA
 
MCE^3 - Jonathan Flint - What I Cannot Create, I Do Not Understand
MCE^3 - Jonathan Flint - What I Cannot Create, I Do Not UnderstandMCE^3 - Jonathan Flint - What I Cannot Create, I Do Not Understand
MCE^3 - Jonathan Flint - What I Cannot Create, I Do Not Understand
 
MCE^3 - Felix Krause - Continuous Delivery for Mobile Apps Using Fastlane
MCE^3 - Felix Krause - Continuous Delivery for Mobile Apps Using FastlaneMCE^3 - Felix Krause - Continuous Delivery for Mobile Apps Using Fastlane
MCE^3 - Felix Krause - Continuous Delivery for Mobile Apps Using Fastlane
 
[4developers2016] The ultimate mobile DX using JS as a primary language (Fato...
[4developers2016] The ultimate mobile DX using JS as a primary language (Fato...[4developers2016] The ultimate mobile DX using JS as a primary language (Fato...
[4developers2016] The ultimate mobile DX using JS as a primary language (Fato...
 
4Developers: Adam Sznajder Taking advantage of microservice architecture and ...
4Developers: Adam Sznajder Taking advantage of microservice architecture and ...4Developers: Adam Sznajder Taking advantage of microservice architecture and ...
4Developers: Adam Sznajder Taking advantage of microservice architecture and ...
 
MCE^3 - Kyle Fuller - End-to-end Building Web Services in-swift-mce-2016
MCE^3 - Kyle Fuller - End-to-end Building Web Services in-swift-mce-2016MCE^3 - Kyle Fuller - End-to-end Building Web Services in-swift-mce-2016
MCE^3 - Kyle Fuller - End-to-end Building Web Services in-swift-mce-2016
 
DOD 2016 - Diogo Oliveira - The OutSystems R&D Continuous Delivery Journey
DOD 2016 - Diogo Oliveira -  The OutSystems R&D Continuous Delivery JourneyDOD 2016 - Diogo Oliveira -  The OutSystems R&D Continuous Delivery Journey
DOD 2016 - Diogo Oliveira - The OutSystems R&D Continuous Delivery Journey
 
2016 - Daniel Lebrero - REPL driven development
2016 - Daniel Lebrero - REPL driven development2016 - Daniel Lebrero - REPL driven development
2016 - Daniel Lebrero - REPL driven development
 
PLNOG 17 - Piotr Gruszczyński - Mobile Fronthaul - ewolucja (a może i rewoluc...
PLNOG 17 - Piotr Gruszczyński - Mobile Fronthaul - ewolucja (a może i rewoluc...PLNOG 17 - Piotr Gruszczyński - Mobile Fronthaul - ewolucja (a może i rewoluc...
PLNOG 17 - Piotr Gruszczyński - Mobile Fronthaul - ewolucja (a może i rewoluc...
 
PLNOG 17 - Alexis Dacquay - 100 G, Skalowalność i Widoczność
PLNOG 17 - Alexis Dacquay - 100 G, Skalowalność i WidocznośćPLNOG 17 - Alexis Dacquay - 100 G, Skalowalność i Widoczność
PLNOG 17 - Alexis Dacquay - 100 G, Skalowalność i Widoczność
 
DOD 2016 - Ignat Korchagin - Managing Server Secrets at Scale
DOD 2016 - Ignat Korchagin - Managing Server Secrets at ScaleDOD 2016 - Ignat Korchagin - Managing Server Secrets at Scale
DOD 2016 - Ignat Korchagin - Managing Server Secrets at Scale
 
JDD 2016 - Philippe Charrière - Golo, The Tiny Language That Gives Super Powers
JDD 2016 - Philippe Charrière -  Golo, The Tiny Language That Gives Super PowersJDD 2016 - Philippe Charrière -  Golo, The Tiny Language That Gives Super Powers
JDD 2016 - Philippe Charrière - Golo, The Tiny Language That Gives Super Powers
 
JDD 2016 - Grzegorz Piwowarek - Davaslang - Functional Java Done Right
JDD 2016 - Grzegorz Piwowarek - Davaslang - Functional Java Done RightJDD 2016 - Grzegorz Piwowarek - Davaslang - Functional Java Done Right
JDD 2016 - Grzegorz Piwowarek - Davaslang - Functional Java Done Right
 
JDD 2016 - Bartosz Majsak - Meet The Assertable Chaos Monkeys
JDD 2016 - Bartosz Majsak - Meet The Assertable Chaos Monkeys JDD 2016 - Bartosz Majsak - Meet The Assertable Chaos Monkeys
JDD 2016 - Bartosz Majsak - Meet The Assertable Chaos Monkeys
 
JDD 2016 - Wojciech Oczkowski - Testowanie Wydajnosci Za Pomoca Narzedzia JMH
JDD 2016 - Wojciech Oczkowski - Testowanie Wydajnosci Za Pomoca Narzedzia JMHJDD 2016 - Wojciech Oczkowski - Testowanie Wydajnosci Za Pomoca Narzedzia JMH
JDD 2016 - Wojciech Oczkowski - Testowanie Wydajnosci Za Pomoca Narzedzia JMH
 
JDD 2016 - Joseph W. Yoder - Deliver Fast "With Confidence"
JDD 2016 - Joseph W. Yoder - Deliver Fast "With Confidence"JDD 2016 - Joseph W. Yoder - Deliver Fast "With Confidence"
JDD 2016 - Joseph W. Yoder - Deliver Fast "With Confidence"
 

Ähnlich wie DOD 2016 - Tomasz Torcz - The Song of JBoss and Chef

CoffeeScript, An Introduction for Nodejs developers
CoffeeScript, An Introduction for Nodejs developersCoffeeScript, An Introduction for Nodejs developers
CoffeeScript, An Introduction for Nodejs developers
Mehdi Valikhani
 
Rubish- A Quixotic Shell
Rubish- A Quixotic ShellRubish- A Quixotic Shell
Rubish- A Quixotic Shell
guest3464d2
 
Mongo db勉強会20110730
Mongo db勉強会20110730Mongo db勉強会20110730
Mongo db勉強会20110730
Akihiro Okuno
 

Ähnlich wie DOD 2016 - Tomasz Torcz - The Song of JBoss and Chef (20)

Testing stateful, concurrent, and async systems using test.check
Testing stateful, concurrent, and async systems using test.checkTesting stateful, concurrent, and async systems using test.check
Testing stateful, concurrent, and async systems using test.check
 
jq: JSON - Like a Boss
jq: JSON - Like a Bossjq: JSON - Like a Boss
jq: JSON - Like a Boss
 
CoffeeScript, An Introduction for Nodejs developers
CoffeeScript, An Introduction for Nodejs developersCoffeeScript, An Introduction for Nodejs developers
CoffeeScript, An Introduction for Nodejs developers
 
Rubish- A Quixotic Shell
Rubish- A Quixotic ShellRubish- A Quixotic Shell
Rubish- A Quixotic Shell
 
Mongo db勉強会20110730
Mongo db勉強会20110730Mongo db勉強会20110730
Mongo db勉強会20110730
 
Ruby 1.9
Ruby 1.9Ruby 1.9
Ruby 1.9
 
Naughty And Nice Bash Features
Naughty And Nice Bash FeaturesNaughty And Nice Bash Features
Naughty And Nice Bash Features
 
Java 8: the good parts!
Java 8: the good parts!Java 8: the good parts!
Java 8: the good parts!
 
JavaOne 2013: Java 8 - The Good Parts
JavaOne 2013: Java 8 - The Good PartsJavaOne 2013: Java 8 - The Good Parts
JavaOne 2013: Java 8 - The Good Parts
 
An introduction to Ruby
An introduction to RubyAn introduction to Ruby
An introduction to Ruby
 
My First Rails Plugin - Usertext
My First Rails Plugin - UsertextMy First Rails Plugin - Usertext
My First Rails Plugin - Usertext
 
How to Begin Developing Ruby Core
How to Begin Developing Ruby CoreHow to Begin Developing Ruby Core
How to Begin Developing Ruby Core
 
Efficient JavaScript Development
Efficient JavaScript DevelopmentEfficient JavaScript Development
Efficient JavaScript Development
 
Beyond Cookies, Persistent Storage For Web Applications Web Directions North ...
Beyond Cookies, Persistent Storage For Web Applications Web Directions North ...Beyond Cookies, Persistent Storage For Web Applications Web Directions North ...
Beyond Cookies, Persistent Storage For Web Applications Web Directions North ...
 
"今" 使えるJavaScriptのトレンド
"今" 使えるJavaScriptのトレンド"今" 使えるJavaScriptのトレンド
"今" 使えるJavaScriptのトレンド
 
Lettering js
Lettering jsLettering js
Lettering js
 
Handling multibyte CSV files in PHP
Handling multibyte CSV files in PHPHandling multibyte CSV files in PHP
Handling multibyte CSV files in PHP
 
Cより速いRubyプログラム
Cより速いRubyプログラムCより速いRubyプログラム
Cより速いRubyプログラム
 
How to eat Cucmber
How to eat CucmberHow to eat Cucmber
How to eat Cucmber
 
MongoDB: How it Works
MongoDB: How it WorksMongoDB: How it Works
MongoDB: How it Works
 

Kürzlich hochgeladen

Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
vu2urc
 

Kürzlich hochgeladen (20)

🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 

DOD 2016 - Tomasz Torcz - The Song of JBoss and Chef

  • 1. The Song of JBoss and ChefThe Song of JBoss and Chef DevOpsDays Warsaw 2016 Tomasz Torcz <tomasz.torcz@alior.pl>
  • 2. Agenda - who am I? - what is JBoss? What is Chef? - why is it complicated? - pro & cons
  • 5. JBoss? The JBoss Enterprise Application Platform is a Java EE-based application server runtime platform used for building, deploying, and hosting highly-transactional Java applications and services.
  • 6. Chef Configuration management tool written in Ruby and Erlang. It uses a pure-Ruby, domain-specific language for writing system configuration "recipes".
  • 7. The Song ofThe Song of JBoss and ChefJBoss and Chef
  • 8. The Song ofThe Song of JBoss and ChefJBoss and Chef
  • 9. Why did we care? - already automated lower levels of stack Paweł Bartusch @ https://youtu.be/U50w_ZoQygA - needed for full CI/CD pipeline Waldemar Piszczewiat @ https://youtu.be/9-X8qytNznA - crucial to have accounting git blame
  • 12. Workflow - multiple teams, separation of duties - internal developers - external vendors
  • 13. How do you configure JBoss?
  • 15. How do you configure JBoss? 1. Web Console 2. Command Line Interface
  • 16. How do you configure JBoss? 1. Web Console 2. Command Line Interface 3. XML files (domain.xml, host*.xml, etc.)
  • 17. How do you configure JBoss? 1. Web Console 2. Command Line Interface 3. XML files (domain.xml, host*.xml, etc.)
  • 18. JBoss CLI "logging": { … "root-logger": { "handlers": "["File_rotating"]", "level": "INFO" ~/bin/jboss-cli.sh --controller=10.14.x.y:9999 --connect --commands='/profile=full- ha/subsystem=logging/root-logger=ROOT:write- attribute(name=handlers, value=["File_rotating"])'
  • 19. Reading the JBoss output { "outcome" => "failed", "failure-description" => {"host-failure- descriptions" => {"vhost02" => "JBAS014749: Operation handler failed: null"}}, "rolled-back" => true }
  • 20. Reading the JBoss output eval(JBoss’ output) … success! => {"outcome"=>"failed", "failure-description"=>{ "host-failure-descriptions"=>{ "vhost02"=>"JBAS014749: Operation handler failed: null" } }, "rolled-back"=>true}
  • 21. Reading the JBoss output "extension" => { "org.jboss.as.webservices" => undefined, … NameError: undefined local variable or method `undefined' for main:Object
  • 22. Reading the JBoss output "extension" => { "org.jboss.as.webservices" => undefined, … NameError: undefined local variable or method `undefined' for main:Object sed 's/undefined/{}/g' … success!
  • 23. Reading the JBoss output "content" => [{"hash" => bytes { 0x87, 0x17, 0x0a, 0xd7, 0xff, 0x72 }}] SyntaxError: (eval):1: syntax error, unexpected =>, expecting end-of-input "content" => [{"hash" => bytes { 0x87, 0x... ^ sed 's/{"hash" => bytes {//g' … success!
  • 24. JBoss output massaging function c.gsub!('=> undefined', '=> {}') c.gsub!(/([[:blank:]]*)(-?b[0-9]+)Lb(,?)/, '123') # 1234L -> "1234" c.gsub!('expression "', '"expression ') c.gsub!('{"hash" => bytes {', '') # _ 'hash => bytes' to array c.gsub!(/([ t]+)}}(],?$)/,'12') # / c.gsub!(/'/, '' + "'") # don't ask :/ c.gsub!(/([[:blank:]]*()(". +"[[:blank:]]=>[[:blank:]]".+"))(,?)/, '23') c.gsub!(/(.+[)((.+))(].+)/,'123') c.gsub!(/"/, ''')
  • 25. JBoss output massaging function commit 3b54e51a0fc9149330e32c42fd784ad3b20850ad Author: Bartosz Trudnowski <bartosz.trudnowski@ge.com> Date: Tue Feb 23 10:00:58 2016 +0100 - c.gsub!(/([[:blank:]]()(".+"[[:blank:]]=>[[:blank:]]".+"))(,?)/, '23') + c.gsub!(/([[:blank:]]*()(".+"[[:blank:]]=>[[:blank:]]".+"))(,?)/, '23')
  • 27. Other JBoss annoyances - config keywords incoherence - punctuation frenzy
  • 28. The good and the bad What lessons did we learn?
  • 30. PROD cluster 1 hour later
  • 32. Handover – number of commits bph_jboss_srv bph_jboss_ml bph_jboss_app 80 Tomasz Torcz 254 Tomasz Torcz 50 Tomasz Torcz 9 Waldemar Piszczewiat 67 Bartosz Trudnowski 10 Bartosz Trudnowski 4 Krzysztof Kowalczyk 17 Waldemar Piszczewiat 7 Waldemar Piszczewiat 4 Bartosz Trudnowski 4 Bartosz Dempc 6 Krzysztof Kowalczyk 3 Waldemar Buczak 1 Waldemar Buczak 1 Grzegorz Prusik 1 Grzegorz Krysik
  • 33. Data bags – number of commits dev test prod 218 Waldemar Piszczewiat 273 Waldemar Piszczewiat 40 Bartosz Dempc 53 Tomasz Torcz 194 Bartosz Dempc 17 Paweł Rodziewicz 8 Bartosz Trudnowski 107 Grzegorz Prusik 13 Grzegorz Prusik 5 Technical CICD account 49 Rafał Markowski 6 Michał Szor 3 Waldemar Buczak 43 Grzegorz Krysik 6 Waldemar Piszczewiat 2 Bartosz Dempc 24 Grzegorz Słaby 5 Grzegorz Słaby … …
  • 34. Reading the Chef output * execute[Updating SG01 property spring.profiles.active to cbpm,sit,mockReport,localStorage] action run (skipped due to not_if)
  • 35. Managable config - many similar, but maybe different clusters? - json-diff - testing, moving configuration - copy&paste - easy to revert
  • 36. Diverging templates cicd-dev-apps/dev/ … /GsbTytan.properties.erb cicd-uat-apps/dk1/ … /GsbTytan.properties.erb cicd-uat-apps/dk2/ … /GsbTytan.properties.erb cicd-uat-apps/tg/ … /GsbTytan.properties.erb cicd-sit-apps/sit/ … /GsbTytan.properties.erb cicd-sit-apps/sitstab/ … /GsbTytan.properties.erb cicd-prod-apps/prod/ … /GsbTytan.properties.erb - moved to external git repos
  • 37. The Song of JBoss and ChefThe Song of JBoss and Chef DevOpsDays Warsaw 2016 Tomasz Torcz <tomasz.torcz@alior.pl>