© 2015 IBM Corporation
DevOps Tools and
WebSphere Application
Server
Jeremy Hughes
DevOps Architect
WebSphere Application Server Development
© 2014 IBM Corporation
Please Note
IBM’s statements regarding its plans, directions, and intent are subject to change or
withdrawal without notice at IBM’s sole discretion. Information regarding potential future
products is intended to outline our general product direction and it should not be relied on
in making a purchasing decision.
The information mentioned regarding potential future products is not a commitment,
promise, or legal obligation to deliver any material, code or functionality. Information
about potential future products may not be incorporated into any contract. The
development, release, and timing of any future features or functionality described for our
products remains at our sole discretion
Performance is based on measurements and projections using standard IBM
benchmarks in a controlled environment. The actual throughput or performance that any
user will experience will vary depending upon many factors, including considerations
such as the amount of multiprogramming in the user’s job stream, the I/O configuration,
the storage configuration, and the workload processed. Therefore, no assurance can be
given that an individual user will achieve results similar to those stated here.
1
• What IS DevOps
• Chef | Puppet | IBM UrbanCode Deploy
• Directed vs convergent
2
• What IS DevOps
• Chef | Puppet | IBM UrbanCode Deploy
• Directed vs convergent
• What IS IBM WebSphere Liberty Profile?
2
• What IS DevOps
• Chef | Puppet | IBM UrbanCode Deploy
• Directed vs convergent
• What IS IBM WebSphere Liberty Profile?
• Why they’re good together?
2
Silos in the business
5
Lack of feedback
between customers and
the business leading to
unclear requirements
CHALLENGES
Upgrade risk due to
managing multiple
application configurations
and versions across servers
Slow deployment
to test environments
leave teams waiting and
unproductive
CHALLENGES
Operations/
Production
Development/
Test
Customers
Business
Owners
Lack of visibility
and governance,
difficult to understand
impact of a change
Deliver better products, faster, and at lower cost
Capability for continuous software delivery that enables clients to seize market
opportunities and reduce time to customer feedback
66
Continuous Innovation, Feedback and Improvements
DevOps Lifecycle
Operations/
Production
Development/
TestCustomers
Business
Owners
Accelerate Software Delivery by enabling collaboration
Balance speed, cost, quality and risk by automating & eliminating waste
Speed up the customer feedback loop by delivering small changes, rapidly
What is DevOps?
7
Optimizing the software delivery pipeline
• Reduce time to market
• Improve quality
• Decrease costs
7
DevOps as the Optimization of the Software Delivery Pipeline
68
Just one example …
Git
JenkinsWDT Liberty Profile
Chef itself …
… with thanks to Chef
v2.0.0
Overview of Chef
10
http://www.flickr.com/photos/michaelheiss/30901029
07/
Complexity
11
Items of Manipulation (Resources)
• Networking
• Files
• Directories
• Symlinks
• Mounts
• Registry Keys
• Powershell
Scripts
• Users
• Groups
• Packages
• Services
• Filesystems
12
Application
A tale of growth...
13
Application
Database
Add a database
14
Application
Application
App
Databases
Make database redundant
15
App
Servers
App
Databases
Application server redundancy
16
App
LB
App
Servers
App
Databases
Add a load balancer
17
App
LBs
App
Servers
App
Databases
Webscale!
18
App LBs
App Servers
App DB Cache
App DBs
Now we need a caching layer
19
App LBs
App Servers
App DB Cache
App DBs
Infrastructure has a Topology
20
Round Robin DNS
App Servers
App DB Cache
App DBs
Floating IP?
Your Infrastructure is a Snowflake
21
App LBs
App Servers
< Shiny!
DB slaves
Cache
DB Cache
DBs
Complexity Increases Quickly
22
App LBs
App Servers
DB slaves
Cache
DB Cache
DBs
...and change happens!
23
App LBs
App Servers
DB slaves
Cache
DB Cache
DBs
...and change happens!
Central Log Host
24
App LBs
App Servers
DB slaves
Cache
DB Cache
DBs
...and change happens!
Central Log Host
25
Chef Solves This Problem
• But you already
guessed that, didn’t
you?
26
Chef is Infrastructure as Code
• Programmatically
provision and configure
components
• Treat like any other code
base
• Reconstruct business
from code repository,
data backup, and
compute resources
http://www.flickr.com/photos/louisb/455529518
7/
27
Configuration Code
• Chef ensures each Node complies with the policy
• Policy is determined by the configurations in each
Node’s run list
• Reduce management complexity through abstraction
• Store the configuration of your infrastructure in
version control
28
Declarative Interface to Resources
• You define the policy in your Chef configuration
• Your policy states what state each resource should
be in, but not how to get there
• Chef-client will pull the policy from the Chef Server
and enforce the policy on the Node
29
Managing Complexity
• Organizations
• Environments
• Roles
• Nodes
• Recipes
• Cookbooks
• Search
30
Environments Define Policy
• Environments may include data attributes necessary
for configuring your infrastructure, e.g.
• The URL of your payment service’s API
• The location of your package repository
• The version of the Chef configuration files that
should be used
31
Roles
Load Balancers
Application Servers
DB Cache
Database
32
Nodes
33
Nodes
• Nodes represent the servers in your infrastructure
• Could be physical servers or virtual servers
• May represent hardware that you own or compute
instances in a public or private cloud
• Could also be network hardware - switches, routers,
etc
34
Node
• Each Node will
• Belong to one Organization
• Belong to one Environment
• Have zero or more Roles
35
Nodes Adhere to Policy
• The chef-client application runs on each node, which
• Gathers the current system configuration of the
node
• Downloads the desired system configuration
policies from the Chef server for that node
• Configures the node such that it adheres to those
policies
36
Resources
• A Resource represents a piece of the system and its
desired state
• A package that should be installed
• A service that should be running
• A file that should be generated
• A cron job that should be configured
• A user that should be managed
• and more
37
Resources in Recipes
• Resources are the fundamental building blocks of
Chef configuration
• Resources are gathered into Recipes
• Recipes ensure the system is in the desired state
38
Recipes
• Configuration files that describe resources and their
desired state
• Recipes can:
• Install and configure software components
• Manage files
• Deploy applications
• Execute other recipes
• and more
39
Example Recipe
package "apache2"
template "/etc/apache2/apache2.conf" do
source "apache2.conf.erb"
owner "root"
group "root"
mode "0644"
variables(:allow_override => "All")
notifies :reload, "service[apache2]"
end
service "apache2" do
action [:enable,:start]
supports :reload => true
end
40
Cookbooks
• Recipes are stored in
Cookbooks
• Cookbooks contain recipes,
templates, files, custom
resources, etc
• Code re-use and modularity
http://www.flickr.com/photos/shutterhacks/4474421855/
41
Run List
Node
Enterprise
Chef
42
Run List
Node
Enterprise
Chef
"recipe[ntp::client]"
"recipe[users]"
"role[webserver]"
43
Run List
Enterprise
Chef
"recipe[ntp::client]"
"recipe[users]"
"role[webserver]"
44
Search
• Search for nodes with Roles
• Find Topology Data
• IP addresses
• Hostnames
• FQDNs
http://www.flickr.com/photos/kathycsus/26867726
2545
Search for Nodes
pool_members = search("node","role:webserver")
template "/etc/haproxy/haproxy.cfg" do
source "haproxy-app_lb.cfg.erb"
owner "root"
group "root"
mode 0644
variables :pool_members => pool_members.uniq
notifies :restart, "service[haproxy]"
end
46
Search for Nodes
pool_members = search("node","role:webserver")
template "/etc/haproxy/haproxy.cfg" do
source "haproxy-app_lb.cfg.erb"
owner "root"
group "root"
mode 0644
variables :pool_members => pool_members.uniq
notifies :restart, "service[haproxy]"
end
47
Pass results into Templates
# Set up application listeners here.
listen application 0.0.0.0:80
balance roundrobin
<% @pool_members.each do |member| -%>
server <%= member[:hostname] %> <%= member[:ipaddress] %>:>
weight 1 maxconn 1 check
<% end -%>
<% if node["haproxy"]["enable_admin"] -%>
listen admin 0.0.0.0:22002
mode http
stats uri /
<% end -%>
48
Pass results into Templates
# Set up application listeners here.
listen application 0.0.0.0:80
balance roundrobin
<% @pool_members.each do |member| -%>
server <%= member[:hostname] %> <%= member[:ipaddress] %>:>
weight 1 maxconn 1 check
<% end -%>
<% if node["haproxy"]["enable_admin"] -%>
listen admin 0.0.0.0:22002
mode http
stats uri /
<% end -%>
49
# Set up application listeners here.
listen application 0.0.0.0:80
balance roundrobin
<% @pool_members.each do |member| -%>
server <%= member[:hostname] %> <%= member[:ipaddress] %>:>
weight 1 maxconn 1 check
<% end -%>
<% if node["haproxy"]["enable_admin"] -%>
listen admin 0.0.0.0:22002
mode http
stats uri /
<% end -%>
Pass results into Templates
50
Liberty App
Memcache
Postgres Slaves
Postgres Master
NagiosGraphite
So when this...
51
Liberty App
Memcache
Postgres Slaves
Postgres Master
NagiosGraphite
...becomes this
52
Memcache
Postgres Slaves
Postgres Master
NagiosGraphite
Liberty App
Memcache
Postgres Slaves
Postgres Master
NagiosGraphite
...this can happen automatically
53
NagiosGraphite NagiosGraphite
Memcache
Postgres Slaves
• Load balancer config
• Nagios host ping
• Nagios host ssh
• Nagios host HTTP
• Nagios host app
health
• Graphite CPU
• Graphite Memory
• Graphite Disk
• Graphite SNMP
• Memcache firewall
• Postgres firewall
• Postgres authZ config
• 12+ resource changes for 1 node
addition
Count the Resources
Liberty App
54
WAS is the JavaTM Foundation for IBM Software
Over 400 IBM offerings embed
or build upon WAS
Reasons to love WebSphere Application Server……
66
Secure
Well-tooled
Robust
Scalable
Very
Fast!
Java EE
Compliant IBM Support and
Training
… but you asked us for something more…..
• Ops use WAS for stability, scalability, performance …

67
… but you asked us for something more…..
• Ops use WAS for stability, scalability, performance …
• Dev less so. They have other requirements

67
… but you asked us for something more…..
• Ops use WAS for stability, scalability, performance …
• Dev less so. They have other requirements
• Simple to configure

67
… but you asked us for something more…..
• Ops use WAS for stability, scalability, performance …
• Dev less so. They have other requirements
• Simple to configure
• Small and fast

67
… but you asked us for something more…..
• Ops use WAS for stability, scalability, performance …
• Dev less so. They have other requirements
• Simple to configure
• Small and fast
• Quick to cycle through code, compile, test, debug in an IDE

67
… but you asked us for something more…..
• Ops use WAS for stability, scalability, performance …
• Dev less so. They have other requirements
• Simple to configure
• Small and fast
• Quick to cycle through code, compile, test, debug in an IDE
• Mac

67
… but you asked us for something more…..
• Ops use WAS for stability, scalability, performance …
• Dev less so. They have other requirements
• Simple to configure
• Small and fast
• Quick to cycle through code, compile, test, debug in an IDE
• Mac
 Variety of appservers used in Dev
67
… but you asked us for something more…..
• Lightweight
• Composable
• Simple
• Flexible
• Dynamic
• Open & Extensible
• Cloud-ready
…. but as production-ready as the original…..
…. with even higher management scale!
68
WebSphere Application Server
Liberty Profile
WAS 8.5, June 2012
69
Initial install features – archive or IM
webProfile-6.0
zosSecurity-1.0 zosTransaction-1.0 zosWlm-1.0
zos
collectiveController-1.0 clusterMember-1.0
ndbase
wab-1.0
concurrent-1.0
collectiveMember-1.0
restConnector-1.0
sessionDatabase-1.0
ldapRegistry-3.0
webCache-1.0
jaxrs-1.1
distributedMap-1.0
osgiConsole-1.0
json-1.0
timedOperations-1.0monitor-1.0
oauth-2.0
blueprint-1.0
servlet-3.0
jsp-2.2
jsf-2.0
ejbLite-3.1 jdbc-4.0
jndi-1.0
appSecurity-2.0
managedBeans-1.0
core
ssl-1.0
beanValidation-1.0
cdi-1.0
jpa-2.0
serverStatus-1.0
Initial install content varies
by edition
• Base adds entitlement
to features not included
in initial install
• ND adds clustering
• z/OS adds z/OS
platform integration
70
Extended programming model features
webProfile-6.0
zosSecurity-1.0 zosTransaction-1.0 zosWlm-1.0
zos
collectiveController-1.0 clusterMember-1.0
nd
mongodb-2.0wsSecurity-1.1
wmqJmsClient-1.1
wasJmsServer-1.0
jmsMdb-3.1
wasJmsClient-1.1jaxws-2.2
jaxb-2.2
wasJmsSecurity-1.0
base
wab-1.0
concurrent-1.0
collectiveMember-1.0
restConnector-1.0
sessionDatabase-1.0
ldapRegistry-3.0
webCache-1.0
jaxrs-1.1
distributedMap-1.0
osgiConsole-1.0
json-1.0
timedOperations-1.0monitor-1.0
oauth-2.0
blueprint-1.0
servlet-3.0
jsp-2.2
jsf-2.0
ejbLite-3.1 jdbc-4.0
jndi-1.0
appSecurity-2.0
managedBeans-1.0
core
ssl-1.0
beanValidation-1.0
cdi-1.0
jpa-2.0
serverStatus-1.0
Extended programming
models optionally
installable on all editions
except Liberty Core
extended programming models
71
Currently available features
webProfile-6.0
zosSecurity-1.0 zosTransaction-1.0 zosWlm-1.0
zosnd
mongodb-2.0wsSecurity-1.1
wmqJmsClient-1.1
wasJmsServer-1.0
jmsMdb-3.1
wasJmsClient-1.1jaxws-2.2
jaxb-2.2
wasJmsSecurity-1.0
base
wab-1.0
concurrent-1.0
collectiveMember-1.0
restConnector-1.0
sessionDatabase-1.0
ldapRegistry-3.0
webCache-1.0
jaxrs-1.1
distributedMap-1.0
osgiConsole-1.0
json-1.0
timedOperations-1.0monitor-1.0
oauth-2.0
blueprint-1.0
servlet-3.0
jsp-2.2
jsf-2.0
ejbLite-3.1 jdbc-4.0
jndi-1.0
appSecurity-2.0
managedBeans-1.0
core
ssl-1.0
beanValidation-1.0
cdi-1.0
jpa-2.0
zosConnect-1.0
zosLocalAdapters-1.0
adminCenter-1.0
jca-1.6
servlet-3.1
scalingController-1.0
scalingMember-1.0
dynamicRouting-1.0
openid-2.0
openidConnectServer-1.0
websocket-1.0
openidConnectClient-1.0
couchdb-1.0
serverStatus-1.0
repository-only
jcaInboundSecurity-1.6mdb-3.1
jms-1.1
jsonp-1.0
collectiveController-1.0 clusterMember-1.0
8.5.5.5 announced
jsp-2.3
el-3.0
spnego-1.0
websocket-1.1
jdbc-4.1
osgiAppIntegration-1.0
http://wasdev.net/repo
extended programming models
Simple to configure
72
• ONE required configuration file
• ${wlp.install.dir}/usr/servers/server_name/server.xml
• User configuration for kernel and features
Simple to configure
72
• ONE required configuration file
• ${wlp.install.dir}/usr/servers/server_name/server.xml
• User configuration for kernel and features
• Optional files in same server directory
• jvm.options
– provided to JVM at startup
• bootstrap.properties
– used by runtime during startup
• server.env
– read by server script
– useful to override locations using env vars
Simple to configure
74
• server create command generates simple working server.xml
 Runs servlets and
JSPs
 Default endpoint
shown to make port
overrides easy
Chef node setup
80
Chef ServerChef workstation
node_1 node_2 node_3
Chef Supermarket
Chef node setup
80
Chef ServerChef workstation
node_1 node_2 node_3
Chef Supermarket
knife cookbook download x
Chef node setup
80
Chef ServerChef workstation
node_1
chef-client
node_2 node_3
Chef Supermarket
knife cookbook download x
Chef node setup
80
Chef ServerChef workstation
node_1
chef-client
node_2 node_3
knife cookbook upload
knife node edit|from file
Chef Supermarket
knife cookbook download x
Chef node setup
80
Chef ServerChef workstation
node_1
chef-client
node_2 node_3
knife cookbook upload
poll
knife node edit|from file
Chef Supermarket
knife cookbook download x
chef-client chef-client
wlp cookbook
supermarket.chef.io/cookbooks/wlp
Install & Create … cookbook “wlp”
81
Chef ServerChef workstation
node_1 node_2 node_3
chef-client chef-client chef-client
wlp cookbook
supermarket.chef.io/cookbooks/wlp
Install Liberty: archive|zip
•Note: IBM Licensing
Install & Create … cookbook “wlp”
81
Chef ServerChef workstation
node_1 node_2 node_3
chef-client chef-client chef-client
wlp cookbook
supermarket.chef.io/cookbooks/wlp
Install Liberty: archive|zip
•Note: IBM Licensing
Create server/s
•Separate wlp/usr dir
Install & Create … cookbook “wlp”
81
Chef ServerChef workstation
node_1 node_2 node_3
chef-client chef-client chef-client
wlp cookbook
supermarket.chef.io/cookbooks/wlp
Install Liberty: archive|zip
•Note: IBM Licensing
Create server/s
•Separate wlp/usr dir
Set JVM options
Install & Create … cookbook “wlp”
81
Chef ServerChef workstation
node_1 node_2 node_3
chef-client chef-client chef-client
wlp cookbook
supermarket.chef.io/cookbooks/wlp
Install Liberty: archive|zip
•Note: IBM Licensing
Create server/s
•Separate wlp/usr dir
Set JVM options
Manipulate server’s live
server.xml as Ruby hash
Install & Create … cookbook “wlp”
81
Chef ServerChef workstation
node_1 node_2 node_3
chef-client chef-client chef-client
wlp cookbook
supermarket.chef.io/cookbooks/wlp
Install Liberty: archive|zip
•Note: IBM Licensing
Create server/s
•Separate wlp/usr dir
Set JVM options
Manipulate server’s live
server.xml as Ruby hash
Create init.d service
wlp-<server_name>
…
Install & Create … cookbook “wlp”
81
Chef ServerChef workstation
node_1 node_2 node_3
chef-client chef-client chef-client
wlp cookbook
supermarket.chef.io/cookbooks/wlp
Install Liberty: archive|zip
•Note: IBM Licensing
Create server/s
•Separate wlp/usr dir
Set JVM options
Manipulate server’s live
server.xml as Ruby hash
Create init.d service
wlp-<server_name>
…
Install & Create … cookbook “wlp”
81
Chef ServerChef workstation
node_1 node_2 node_3
poll
chef-client chef-client chef-client
wlp cookbook
supermarket.chef.io/cookbooks/wlp
Install Liberty: archive|zip
•Note: IBM Licensing
Create server/s
•Separate wlp/usr dir
Set JVM options
Manipulate server’s live
server.xml as Ruby hash
Create init.d service
wlp-<server_name>
…
Install & Create … cookbook “wlp”
81
Chef ServerChef workstation
node_1 node_2 node_3
F
e
a
t
u
r
e
M
a
n
a
g
e
r
H
T
T
P
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
M
a
n
a
g
e
r
s
e
r
v
l
e
t
-
3
.
0
j
s
p
-
2
.
2
a
p
p
s
e
c
u
r
i
t
y
-
1
.
0
r
e
s
t
c
o
n
n
e
c
t
o
r
-
1
.
0
j
p
a
-
2
.
0
Liberty Profile
Server 1
F
e
a
t
u
r
e
M
a
n
a
g
e
r
H
T
T
P
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
M
a
n
a
g
e
r
s
e
r
v
l
e
t
-
3
.
0
j
s
p
-
2
.
2
a
p
p
s
e
c
u
r
i
t
y
-
1
.
0
r
e
s
t
c
o
n
n
e
c
t
o
r
-
1
.
0
j
p
a
-
2
.
0
Liberty Profile
Server 2
F
e
a
t
u
r
e
M
a
n
a
g
e
r
H
T
T
P
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
M
a
n
a
g
e
r
s
e
r
v
l
e
t
-
3
.
0
j
s
p
-
2
.
2
a
p
p
s
e
c
u
r
i
t
y
-
1
.
0
r
e
s
t
c
o
n
n
e
c
t
o
r
-
1
.
0
j
p
a
-
2
.
0
Liberty Profile
Server 3
F
e
a
t
u
r
e
M
a
n
a
g
e
r
H
T
T
P
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
M
a
n
a
g
e
r
s
e
r
v
l
e
t
-
3
.
0
j
s
p
-
2
.
2
a
p
p
s
e
c
u
r
i
t
y
-
1
.
0
r
e
s
t
c
o
n
n
e
c
t
o
r
-
1
.
0
j
p
a
-
2
.
0
Liberty Profile
Server 4
poll poll poll
chef-client chef-client chef-client
wlp cookbook
supermarket.chef.io/cookbooks/wlp
Install Liberty: archive|zip
•Note: IBM Licensing
Create server/s
•Separate wlp/usr dir
Set JVM options
Manipulate server’s live
server.xml as Ruby hash
Create init.d service
wlp-<server_name>
…
Install & Create … cookbook “wlp”
81
Chef ServerChef workstation
node_1 node_2 node_3
F
e
a
t
u
r
e
M
a
n
a
g
e
r
H
T
T
P
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
M
a
n
a
g
e
r
s
e
r
v
l
e
t
-
3
.
0
j
s
p
-
2
.
2
a
p
p
s
e
c
u
r
i
t
y
-
1
.
0
r
e
s
t
c
o
n
n
e
c
t
o
r
-
1
.
0
j
p
a
-
2
.
0
Liberty Profile
Server 1
F
e
a
t
u
r
e
M
a
n
a
g
e
r
H
T
T
P
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
M
a
n
a
g
e
r
s
e
r
v
l
e
t
-
3
.
0
j
s
p
-
2
.
2
a
p
p
s
e
c
u
r
i
t
y
-
1
.
0
r
e
s
t
c
o
n
n
e
c
t
o
r
-
1
.
0
j
p
a
-
2
.
0
Liberty Profile
Server 2
F
e
a
t
u
r
e
M
a
n
a
g
e
r
H
T
T
P
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
M
a
n
a
g
e
r
s
e
r
v
l
e
t
-
3
.
0
j
s
p
-
2
.
2
a
p
p
s
e
c
u
r
i
t
y
-
1
.
0
r
e
s
t
c
o
n
n
e
c
t
o
r
-
1
.
0
j
p
a
-
2
.
0
Liberty Profile
Server 3
F
e
a
t
u
r
e
M
a
n
a
g
e
r
H
T
T
P
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
M
a
n
a
g
e
r
s
e
r
v
l
e
t
-
3
.
0
j
s
p
-
2
.
2
a
p
p
s
e
c
u
r
i
t
y
-
1
.
0
r
e
s
t
c
o
n
n
e
c
t
o
r
-
1
.
0
j
p
a
-
2
.
0
Liberty Profile
Server 4
poll poll poll
chef-client chef-client chef-client
wlp_collective resource
Collective management
80
Chef ServerChef workstation
node_1 node_2 node_3
poll poll poll
chef-client chef-client chef-client
node_4
chef-client
F
e
a
t
u
r
e
M
a
n
a
g
e
r
H
T
T
P
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
M
a
n
a
g
e
r
s
e
r
v
l
e
t
-
3
.
0
j
s
p
-
2
.
2
a
p
p
s
e
c
u
r
i
t
y
-
1
.
0
r
e
s
t
c
o
n
n
e
c
t
o
r
-
1
.
0
j
p
a
-
2
.
0
Liberty Profile
ServerA
F
e
a
t
u
r
e
M
a
n
a
g
e
r
H
T
T
P
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
M
a
n
a
g
e
r
s
e
r
v
l
e
t
-
3
.
0
j
s
p
-
2
.
2
a
p
p
s
e
c
u
r
i
t
y
-
1
.
0
r
e
s
t
c
o
n
n
e
c
t
o
r
-
1
.
0
j
p
a
-
2
.
0
Liberty Profile
ServerB
F
e
a
t
u
r
e
M
a
n
a
g
e
r
H
T
T
P
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
M
a
n
a
g
e
r
s
e
r
v
l
e
t
-
3
.
0
j
s
p
-
2
.
2
a
p
p
s
e
c
u
r
i
t
y
-
1
.
0
r
e
s
t
c
o
n
n
e
c
t
o
r
-
1
.
0
j
p
a
-
2
.
0
Liberty Profile
ServerC
F
e
a
t
u
r
e
M
a
n
a
g
e
r
H
T
T
P
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
M
a
n
a
g
e
r
s
e
r
v
l
e
t
-
3
.
0
j
s
p
-
2
.
2
a
p
p
s
e
c
u
r
i
t
y
-
1
.
0
r
e
s
t
c
o
n
n
e
c
t
o
r
-
1
.
0
j
p
a
-
2
.
0
Liberty Profile
ServerD
F
e
a
t
u
r
e
M
a
n
a
g
e
r
H
T
T
P
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
M
a
n
a
g
e
r
s
e
r
v
l
e
t
-
3
.
0
j
s
p
-
2
.
2
a
p
p
s
e
c
u
r
i
t
y
-
1
.
0
r
e
s
t
c
o
n
n
e
c
t
o
r
-
1
.
0
j
p
a
-
2
.
0
Liberty Profile
ServerE
Liberty
Collective
poll
A B C
D
E
JMX
Client
wlp_collective resource
Collective management
80
Chef ServerChef workstation
node_1 node_2 node_3
poll poll poll
chef-client chef-client chef-client
node_4
chef-client
F
e
a
t
u
r
e
M
a
n
a
g
e
r
H
T
T
P
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
M
a
n
a
g
e
r
s
e
r
v
l
e
t
-
3
.
0
j
s
p
-
2
.
2
a
p
p
s
e
c
u
r
i
t
y
-
1
.
0
r
e
s
t
c
o
n
n
e
c
t
o
r
-
1
.
0
j
p
a
-
2
.
0
Liberty Profile
ServerA
F
e
a
t
u
r
e
M
a
n
a
g
e
r
H
T
T
P
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
M
a
n
a
g
e
r
s
e
r
v
l
e
t
-
3
.
0
j
s
p
-
2
.
2
a
p
p
s
e
c
u
r
i
t
y
-
1
.
0
r
e
s
t
c
o
n
n
e
c
t
o
r
-
1
.
0
j
p
a
-
2
.
0
Liberty Profile
ServerB
F
e
a
t
u
r
e
M
a
n
a
g
e
r
H
T
T
P
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
M
a
n
a
g
e
r
s
e
r
v
l
e
t
-
3
.
0
j
s
p
-
2
.
2
a
p
p
s
e
c
u
r
i
t
y
-
1
.
0
r
e
s
t
c
o
n
n
e
c
t
o
r
-
1
.
0
j
p
a
-
2
.
0
Liberty Profile
ServerC
F
e
a
t
u
r
e
M
a
n
a
g
e
r
H
T
T
P
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
M
a
n
a
g
e
r
s
e
r
v
l
e
t
-
3
.
0
j
s
p
-
2
.
2
a
p
p
s
e
c
u
r
i
t
y
-
1
.
0
r
e
s
t
c
o
n
n
e
c
t
o
r
-
1
.
0
j
p
a
-
2
.
0
Liberty Profile
ServerD
F
e
a
t
u
r
e
M
a
n
a
g
e
r
H
T
T
P
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
M
a
n
a
g
e
r
s
e
r
v
l
e
t
-
3
.
0
j
s
p
-
2
.
2
a
p
p
s
e
c
u
r
i
t
y
-
1
.
0
r
e
s
t
c
o
n
n
e
c
t
o
r
-
1
.
0
j
p
a
-
2
.
0
Liberty Profile
ServerE
Liberty
Collective
poll
A B C
D
E
JMX
Client
wlp_collective resource
Collective management
80
Chef ServerChef workstation
node_1 node_2 node_3
poll poll poll
chef-client chef-client chef-client
node_4
chef-client
F
e
a
t
u
r
e
M
a
n
a
g
e
r
H
T
T
P
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
M
a
n
a
g
e
r
s
e
r
v
l
e
t
-
3
.
0
j
s
p
-
2
.
2
a
p
p
s
e
c
u
r
i
t
y
-
1
.
0
r
e
s
t
c
o
n
n
e
c
t
o
r
-
1
.
0
j
p
a
-
2
.
0
Liberty Profile
ServerA
F
e
a
t
u
r
e
M
a
n
a
g
e
r
H
T
T
P
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
M
a
n
a
g
e
r
s
e
r
v
l
e
t
-
3
.
0
j
s
p
-
2
.
2
a
p
p
s
e
c
u
r
i
t
y
-
1
.
0
r
e
s
t
c
o
n
n
e
c
t
o
r
-
1
.
0
j
p
a
-
2
.
0
Liberty Profile
ServerB
F
e
a
t
u
r
e
M
a
n
a
g
e
r
H
T
T
P
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
M
a
n
a
g
e
r
s
e
r
v
l
e
t
-
3
.
0
j
s
p
-
2
.
2
a
p
p
s
e
c
u
r
i
t
y
-
1
.
0
r
e
s
t
c
o
n
n
e
c
t
o
r
-
1
.
0
j
p
a
-
2
.
0
Liberty Profile
ServerC
F
e
a
t
u
r
e
M
a
n
a
g
e
r
H
T
T
P
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
M
a
n
a
g
e
r
s
e
r
v
l
e
t
-
3
.
0
j
s
p
-
2
.
2
a
p
p
s
e
c
u
r
i
t
y
-
1
.
0
r
e
s
t
c
o
n
n
e
c
t
o
r
-
1
.
0
j
p
a
-
2
.
0
Liberty Profile
ServerD
F
e
a
t
u
r
e
M
a
n
a
g
e
r
H
T
T
P
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
M
a
n
a
g
e
r
s
e
r
v
l
e
t
-
3
.
0
j
s
p
-
2
.
2
a
p
p
s
e
c
u
r
i
t
y
-
1
.
0
r
e
s
t
c
o
n
n
e
c
t
o
r
-
1
.
0
j
p
a
-
2
.
0
Liberty Profile
ServerE
Liberty
Collective
poll
A B C
D
E
JMX
Client
application_wlp cookbook
supermarket.chef.io/cookbooks/application_wlp
Deploy application … cookbook “application_wlp”
85
Chef Server
node_1
chef-client
node_2
chef-client
node_3
chef-client
F
e
a
t
u
r
e
M
a
n
a
g
e
r
H
T
T
P
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
M
a
n
a
g
e
r
s
e
r
v
l
e
t
-
3
.
0
j
s
p
-
2
.
2
a
p
p
s
e
c
u
r
i
t
y
-
1
.
0
r
e
s
t
c
o
n
n
e
c
t
o
r
-
1
.
0
j
p
a
-
2
.
0
Liberty Profile
Server 1
F
e
a
t
u
r
e
M
a
n
a
g
e
r
H
T
T
P
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
M
a
n
a
g
e
r
s
e
r
v
l
e
t
-
3
.
0
j
s
p
-
2
.
2
a
p
p
s
e
c
u
r
i
t
y
-
1
.
0
r
e
s
t
c
o
n
n
e
c
t
o
r
-
1
.
0
j
p
a
-
2
.
0
Liberty Profile
Server 2
F
e
a
t
u
r
e
M
a
n
a
g
e
r
H
T
T
P
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
M
a
n
a
g
e
r
s
e
r
v
l
e
t
-
3
.
0
j
s
p
-
2
.
2
a
p
p
s
e
c
u
r
i
t
y
-
1
.
0
r
e
s
t
c
o
n
n
e
c
t
o
r
-
1
.
0
j
p
a
-
2
.
0
Liberty Profile
Server 3
F
e
a
t
u
r
e
M
a
n
a
g
e
r
H
T
T
P
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
M
a
n
a
g
e
r
s
e
r
v
l
e
t
-
3
.
0
j
s
p
-
2
.
2
a
p
p
s
e
c
u
r
i
t
y
-
1
.
0
r
e
s
t
c
o
n
n
e
c
t
o
r
-
1
.
0
j
p
a
-
2
.
0
Liberty Profile
Server 4
chef-client chef-client chef-client
application_wlp cookbook
supermarket.chef.io/cookbooks/application_wlp
Extends ‘application’
•Template Method pattern
Deploy application … cookbook “application_wlp”
85
Chef Server
node_1
chef-client
node_2
chef-client
node_3
chef-client
F
e
a
t
u
r
e
M
a
n
a
g
e
r
H
T
T
P
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
M
a
n
a
g
e
r
s
e
r
v
l
e
t
-
3
.
0
j
s
p
-
2
.
2
a
p
p
s
e
c
u
r
i
t
y
-
1
.
0
r
e
s
t
c
o
n
n
e
c
t
o
r
-
1
.
0
j
p
a
-
2
.
0
Liberty Profile
Server 1
F
e
a
t
u
r
e
M
a
n
a
g
e
r
H
T
T
P
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
M
a
n
a
g
e
r
s
e
r
v
l
e
t
-
3
.
0
j
s
p
-
2
.
2
a
p
p
s
e
c
u
r
i
t
y
-
1
.
0
r
e
s
t
c
o
n
n
e
c
t
o
r
-
1
.
0
j
p
a
-
2
.
0
Liberty Profile
Server 2
F
e
a
t
u
r
e
M
a
n
a
g
e
r
H
T
T
P
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
M
a
n
a
g
e
r
s
e
r
v
l
e
t
-
3
.
0
j
s
p
-
2
.
2
a
p
p
s
e
c
u
r
i
t
y
-
1
.
0
r
e
s
t
c
o
n
n
e
c
t
o
r
-
1
.
0
j
p
a
-
2
.
0
Liberty Profile
Server 3
F
e
a
t
u
r
e
M
a
n
a
g
e
r
H
T
T
P
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
M
a
n
a
g
e
r
s
e
r
v
l
e
t
-
3
.
0
j
s
p
-
2
.
2
a
p
p
s
e
c
u
r
i
t
y
-
1
.
0
r
e
s
t
c
o
n
n
e
c
t
o
r
-
1
.
0
j
p
a
-
2
.
0
Liberty Profile
Server 4
chef-client chef-client chef-client
application_wlp cookbook
supermarket.chef.io/cookbooks/application_wlp
Extends ‘application’
•Template Method pattern
Deploy application of any type
.ear | .war | .eba
Deploy application … cookbook “application_wlp”
85
Chef Server
node_1
chef-client
node_2
chef-client
node_3
chef-client
F
e
a
t
u
r
e
M
a
n
a
g
e
r
H
T
T
P
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
M
a
n
a
g
e
r
s
e
r
v
l
e
t
-
3
.
0
j
s
p
-
2
.
2
a
p
p
s
e
c
u
r
i
t
y
-
1
.
0
r
e
s
t
c
o
n
n
e
c
t
o
r
-
1
.
0
j
p
a
-
2
.
0
Liberty Profile
Server 1
F
e
a
t
u
r
e
M
a
n
a
g
e
r
H
T
T
P
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
M
a
n
a
g
e
r
s
e
r
v
l
e
t
-
3
.
0
j
s
p
-
2
.
2
a
p
p
s
e
c
u
r
i
t
y
-
1
.
0
r
e
s
t
c
o
n
n
e
c
t
o
r
-
1
.
0
j
p
a
-
2
.
0
Liberty Profile
Server 2
F
e
a
t
u
r
e
M
a
n
a
g
e
r
H
T
T
P
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
M
a
n
a
g
e
r
s
e
r
v
l
e
t
-
3
.
0
j
s
p
-
2
.
2
a
p
p
s
e
c
u
r
i
t
y
-
1
.
0
r
e
s
t
c
o
n
n
e
c
t
o
r
-
1
.
0
j
p
a
-
2
.
0
Liberty Profile
Server 3
F
e
a
t
u
r
e
M
a
n
a
g
e
r
H
T
T
P
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
M
a
n
a
g
e
r
s
e
r
v
l
e
t
-
3
.
0
j
s
p
-
2
.
2
a
p
p
s
e
c
u
r
i
t
y
-
1
.
0
r
e
s
t
c
o
n
n
e
c
t
o
r
-
1
.
0
j
p
a
-
2
.
0
Liberty Profile
Server 4
chef-client chef-client chef-client
application_wlp cookbook
supermarket.chef.io/cookbooks/application_wlp
Extends ‘application’
•Template Method pattern
Deploy application of any type
.ear | .war | .eba
Deploy application … cookbook “application_wlp”
85
Chef ServerChef workstation
node_1
chef-client
node_2
chef-client
node_3
chef-client
F
e
a
t
u
r
e
M
a
n
a
g
e
r
H
T
T
P
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
M
a
n
a
g
e
r
s
e
r
v
l
e
t
-
3
.
0
j
s
p
-
2
.
2
a
p
p
s
e
c
u
r
i
t
y
-
1
.
0
r
e
s
t
c
o
n
n
e
c
t
o
r
-
1
.
0
j
p
a
-
2
.
0
Liberty Profile
Server 1
F
e
a
t
u
r
e
M
a
n
a
g
e
r
H
T
T
P
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
M
a
n
a
g
e
r
s
e
r
v
l
e
t
-
3
.
0
j
s
p
-
2
.
2
a
p
p
s
e
c
u
r
i
t
y
-
1
.
0
r
e
s
t
c
o
n
n
e
c
t
o
r
-
1
.
0
j
p
a
-
2
.
0
Liberty Profile
Server 2
F
e
a
t
u
r
e
M
a
n
a
g
e
r
H
T
T
P
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
M
a
n
a
g
e
r
s
e
r
v
l
e
t
-
3
.
0
j
s
p
-
2
.
2
a
p
p
s
e
c
u
r
i
t
y
-
1
.
0
r
e
s
t
c
o
n
n
e
c
t
o
r
-
1
.
0
j
p
a
-
2
.
0
Liberty Profile
Server 3
F
e
a
t
u
r
e
M
a
n
a
g
e
r
H
T
T
P
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
M
a
n
a
g
e
r
s
e
r
v
l
e
t
-
3
.
0
j
s
p
-
2
.
2
a
p
p
s
e
c
u
r
i
t
y
-
1
.
0
r
e
s
t
c
o
n
n
e
c
t
o
r
-
1
.
0
j
p
a
-
2
.
0
Liberty Profile
Server 4
poll poll poll
Apps
Apps
Apps
Apps
Apps
Apps
Apps
Apps
chef-client chef-client chef-client
Templating config files
• Erebus Ruby Gem for sophisticated ‘variable evaluation’
• Embedded Ruby code
86
Templating config files
• Erebus Ruby Gem for sophisticated ‘variable evaluation’
• Embedded Ruby code
• Init.d service …
86
Modelling server.xml … and <include>s
• Simple, minimal, but rich (!!)
• 128 different element types
• How to represent server config in code?
87
1. Manage raw server.xml
•Low level control
•Variables & bootstrap.properties
Modelling server.xml … and <include>s
• Simple, minimal, but rich (!!)
• 128 different element types
• How to represent server config in code?
87
2. server.xml.erb template
• Model the xml as a template into which other
configuration / properties are inserted
• Inserts can be variables or Ruby code
• To generate 0..n XML elements
• Include just the elements you need
Modelling server.xml … and <include>s
• Simple, minimal, but rich (!!)
• 128 different element types
• How to represent server config in code?
88
3. Manipulate using REXML pure Ruby parser
• Ruby hash <-> XML
• XPath to check for presence of required
elements
• Use <include> and variables to simplify
Modelling server.xml … and <include>s
• Simple, minimal, but rich (!!)
• 128 different element types
• How to represent server config in code?
89
Hash to XML
90
Converted by wlp cookbook
node_1
chef-client
node_2
chef-client
node_3
chef-client
F
e
a
t
u
r
e
M
a
n
a
g
e
r
H
T
T
P
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
M
a
n
a
g
e
r
s
e
r
v
l
e
t
-
3
.
0
j
s
p
-
2
.
2
a
p
p
s
e
c
u
r
i
t
y
-
1
.
0
r
e
s
t
c
o
n
n
e
c
t
o
r
-
1
.
0
j
p
a
-
2
.
0
Liberty Profile
Server 1
F
e
a
t
u
r
e
M
a
n
a
g
e
r
H
T
T
P
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
M
a
n
a
g
e
r
s
e
r
v
l
e
t
-
3
.
0
j
s
p
-
2
.
2
a
p
p
s
e
c
u
r
i
t
y
-
1
.
0
r
e
s
t
c
o
n
n
e
c
t
o
r
-
1
.
0
j
p
a
-
2
.
0
Liberty Profile
Server 2
F
e
a
t
u
r
e
M
a
n
a
g
e
r
H
T
T
P
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
M
a
n
a
g
e
r
s
e
r
v
l
e
t
-
3
.
0
j
s
p
-
2
.
2
a
p
p
s
e
c
u
r
i
t
y
-
1
.
0
r
e
s
t
c
o
n
n
e
c
t
o
r
-
1
.
0
j
p
a
-
2
.
0
Liberty Profile
Server 3
Apps
Apps
Apps
Apps
Apps
Apps
Load balancing … add in “apache2” cookbook
91
Chef ServerChef workstation
node_4
chef-client chef-client chef-client chef-clientchef-client
role = clusterA
node_1
chef-client
node_2
chef-client
node_3
chef-client
F
e
a
t
u
r
e
M
a
n
a
g
e
r
H
T
T
P
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
M
a
n
a
g
e
r
s
e
r
v
l
e
t
-
3
.
0
j
s
p
-
2
.
2
a
p
p
s
e
c
u
r
i
t
y
-
1
.
0
r
e
s
t
c
o
n
n
e
c
t
o
r
-
1
.
0
j
p
a
-
2
.
0
Liberty Profile
Server 1
F
e
a
t
u
r
e
M
a
n
a
g
e
r
H
T
T
P
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
M
a
n
a
g
e
r
s
e
r
v
l
e
t
-
3
.
0
j
s
p
-
2
.
2
a
p
p
s
e
c
u
r
i
t
y
-
1
.
0
r
e
s
t
c
o
n
n
e
c
t
o
r
-
1
.
0
j
p
a
-
2
.
0
Liberty Profile
Server 2
F
e
a
t
u
r
e
M
a
n
a
g
e
r
H
T
T
P
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
M
a
n
a
g
e
r
s
e
r
v
l
e
t
-
3
.
0
j
s
p
-
2
.
2
a
p
p
s
e
c
u
r
i
t
y
-
1
.
0
r
e
s
t
c
o
n
n
e
c
t
o
r
-
1
.
0
j
p
a
-
2
.
0
Liberty Profile
Server 3
Apps
Apps
Apps
Apps
Apps
Apps
Load balancing … add in “apache2” cookbook
91
Chef ServerChef workstation
node_4
chef-client chef-client chef-client chef-clientchef-client
poll
role = clusterA
node_1
chef-client
node_2
chef-client
node_3
chef-client
F
e
a
t
u
r
e
M
a
n
a
g
e
r
H
T
T
P
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
M
a
n
a
g
e
r
s
e
r
v
l
e
t
-
3
.
0
j
s
p
-
2
.
2
a
p
p
s
e
c
u
r
i
t
y
-
1
.
0
r
e
s
t
c
o
n
n
e
c
t
o
r
-
1
.
0
j
p
a
-
2
.
0
Liberty Profile
Server 1
F
e
a
t
u
r
e
M
a
n
a
g
e
r
H
T
T
P
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
M
a
n
a
g
e
r
s
e
r
v
l
e
t
-
3
.
0
j
s
p
-
2
.
2
a
p
p
s
e
c
u
r
i
t
y
-
1
.
0
r
e
s
t
c
o
n
n
e
c
t
o
r
-
1
.
0
j
p
a
-
2
.
0
Liberty Profile
Server 2
F
e
a
t
u
r
e
M
a
n
a
g
e
r
H
T
T
P
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
M
a
n
a
g
e
r
s
e
r
v
l
e
t
-
3
.
0
j
s
p
-
2
.
2
a
p
p
s
e
c
u
r
i
t
y
-
1
.
0
r
e
s
t
c
o
n
n
e
c
t
o
r
-
1
.
0
j
p
a
-
2
.
0
Liberty Profile
Server 3
Apps
Apps
Apps
Apps
Apps
Apps
Load balancing … add in “apache2” cookbook
91
Chef ServerChef workstation
node_4
chef-client
HTTP Server
chef-client chef-client chef-clientchef-client
role = clusterA
node_1
chef-client
node_2
chef-client
node_3
chef-client
F
e
a
t
u
r
e
M
a
n
a
g
e
r
H
T
T
P
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
M
a
n
a
g
e
r
s
e
r
v
l
e
t
-
3
.
0
j
s
p
-
2
.
2
a
p
p
s
e
c
u
r
i
t
y
-
1
.
0
r
e
s
t
c
o
n
n
e
c
t
o
r
-
1
.
0
j
p
a
-
2
.
0
Liberty Profile
Server 1
F
e
a
t
u
r
e
M
a
n
a
g
e
r
H
T
T
P
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
M
a
n
a
g
e
r
s
e
r
v
l
e
t
-
3
.
0
j
s
p
-
2
.
2
a
p
p
s
e
c
u
r
i
t
y
-
1
.
0
r
e
s
t
c
o
n
n
e
c
t
o
r
-
1
.
0
j
p
a
-
2
.
0
Liberty Profile
Server 2
F
e
a
t
u
r
e
M
a
n
a
g
e
r
H
T
T
P
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
M
a
n
a
g
e
r
s
e
r
v
l
e
t
-
3
.
0
j
s
p
-
2
.
2
a
p
p
s
e
c
u
r
i
t
y
-
1
.
0
r
e
s
t
c
o
n
n
e
c
t
o
r
-
1
.
0
j
p
a
-
2
.
0
Liberty Profile
Server 3
Apps
Apps
Apps
Apps
Apps
Apps
Load balancing - search for nodes in cluster role
92
Chef ServerChef workstation
node_4
chef-client
HTTP Server
chef-client chef-client chef-clientchef-client
role = clusterA
node_1
chef-client
node_2
chef-client
node_3
chef-client
F
e
a
t
u
r
e
M
a
n
a
g
e
r
H
T
T
P
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
M
a
n
a
g
e
r
s
e
r
v
l
e
t
-
3
.
0
j
s
p
-
2
.
2
a
p
p
s
e
c
u
r
i
t
y
-
1
.
0
r
e
s
t
c
o
n
n
e
c
t
o
r
-
1
.
0
j
p
a
-
2
.
0
Liberty Profile
Server 1
F
e
a
t
u
r
e
M
a
n
a
g
e
r
H
T
T
P
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
M
a
n
a
g
e
r
s
e
r
v
l
e
t
-
3
.
0
j
s
p
-
2
.
2
a
p
p
s
e
c
u
r
i
t
y
-
1
.
0
r
e
s
t
c
o
n
n
e
c
t
o
r
-
1
.
0
j
p
a
-
2
.
0
Liberty Profile
Server 2
F
e
a
t
u
r
e
M
a
n
a
g
e
r
H
T
T
P
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
M
a
n
a
g
e
r
s
e
r
v
l
e
t
-
3
.
0
j
s
p
-
2
.
2
a
p
p
s
e
c
u
r
i
t
y
-
1
.
0
r
e
s
t
c
o
n
n
e
c
t
o
r
-
1
.
0
j
p
a
-
2
.
0
Liberty Profile
Server 3
Apps
Apps
Apps
Apps
Apps
Apps
Load balancing - search for nodes in cluster role
92
Chef ServerChef workstation
node_4
chef-client
HTTP Server
chef-client chef-client chef-clientchef-client
role = clusterA
node_1
chef-client
node_2
chef-client
node_3
chef-client
F
e
a
t
u
r
e
M
a
n
a
g
e
r
H
T
T
P
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
M
a
n
a
g
e
r
s
e
r
v
l
e
t
-
3
.
0
j
s
p
-
2
.
2
a
p
p
s
e
c
u
r
i
t
y
-
1
.
0
r
e
s
t
c
o
n
n
e
c
t
o
r
-
1
.
0
j
p
a
-
2
.
0
Liberty Profile
Server 1
F
e
a
t
u
r
e
M
a
n
a
g
e
r
H
T
T
P
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
M
a
n
a
g
e
r
s
e
r
v
l
e
t
-
3
.
0
j
s
p
-
2
.
2
a
p
p
s
e
c
u
r
i
t
y
-
1
.
0
r
e
s
t
c
o
n
n
e
c
t
o
r
-
1
.
0
j
p
a
-
2
.
0
Liberty Profile
Server 2
F
e
a
t
u
r
e
M
a
n
a
g
e
r
H
T
T
P
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
M
a
n
a
g
e
r
s
e
r
v
l
e
t
-
3
.
0
j
s
p
-
2
.
2
a
p
p
s
e
c
u
r
i
t
y
-
1
.
0
r
e
s
t
c
o
n
n
e
c
t
o
r
-
1
.
0
j
p
a
-
2
.
0
Liberty Profile
Server 3
Apps
Apps
Apps
Apps
Apps
Apps
Load balancing - search for nodes in cluster role
92
Chef ServerChef workstation
node_4
chef-client
HTTP Server
chef-client chef-client chef-clientchef-client
role = clusterA
node_1
chef-client
node_2
chef-client
node_3
chef-client
F
e
a
t
u
r
e
M
a
n
a
g
e
r
H
T
T
P
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
M
a
n
a
g
e
r
s
e
r
v
l
e
t
-
3
.
0
j
s
p
-
2
.
2
a
p
p
s
e
c
u
r
i
t
y
-
1
.
0
r
e
s
t
c
o
n
n
e
c
t
o
r
-
1
.
0
j
p
a
-
2
.
0
Liberty Profile
Server 1
F
e
a
t
u
r
e
M
a
n
a
g
e
r
H
T
T
P
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
M
a
n
a
g
e
r
s
e
r
v
l
e
t
-
3
.
0
j
s
p
-
2
.
2
a
p
p
s
e
c
u
r
i
t
y
-
1
.
0
r
e
s
t
c
o
n
n
e
c
t
o
r
-
1
.
0
j
p
a
-
2
.
0
Liberty Profile
Server 2
F
e
a
t
u
r
e
M
a
n
a
g
e
r
H
T
T
P
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
M
a
n
a
g
e
r
s
e
r
v
l
e
t
-
3
.
0
j
s
p
-
2
.
2
a
p
p
s
e
c
u
r
i
t
y
-
1
.
0
r
e
s
t
c
o
n
n
e
c
t
o
r
-
1
.
0
j
p
a
-
2
.
0
Liberty Profile
Server 3
Apps
Apps
Apps
Apps
Apps
Apps
Load balancing - search for nodes in cluster role
92
Chef ServerChef workstation
node_4
chef-client
HTTP Server
chef-client chef-client chef-clientchef-client
role = clusterA
node_1
chef-client
node_2
chef-client
node_3
chef-client
F
e
a
t
u
r
e
M
a
n
a
g
e
r
H
T
T
P
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
M
a
n
a
g
e
r
s
e
r
v
l
e
t
-
3
.
0
j
s
p
-
2
.
2
a
p
p
s
e
c
u
r
i
t
y
-
1
.
0
r
e
s
t
c
o
n
n
e
c
t
o
r
-
1
.
0
j
p
a
-
2
.
0
Liberty Profile
Server 1
F
e
a
t
u
r
e
M
a
n
a
g
e
r
H
T
T
P
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
M
a
n
a
g
e
r
s
e
r
v
l
e
t
-
3
.
0
j
s
p
-
2
.
2
a
p
p
s
e
c
u
r
i
t
y
-
1
.
0
r
e
s
t
c
o
n
n
e
c
t
o
r
-
1
.
0
j
p
a
-
2
.
0
Liberty Profile
Server 2
F
e
a
t
u
r
e
M
a
n
a
g
e
r
H
T
T
P
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
M
a
n
a
g
e
r
s
e
r
v
l
e
t
-
3
.
0
j
s
p
-
2
.
2
a
p
p
s
e
c
u
r
i
t
y
-
1
.
0
r
e
s
t
c
o
n
n
e
c
t
o
r
-
1
.
0
j
p
a
-
2
.
0
Liberty Profile
Server 3
Apps
Apps
Apps
Apps
Apps
Apps
Load balancing - search for nodes in cluster role
92
Chef ServerChef workstation
node_4
chef-client
HTTP Server
chef-client chef-client chef-clientchef-client
role = clusterA
chef-client chef-client
node_1
chef-client
node_2 node_3
F
e
a
t
u
r
e
M
a
n
a
g
e
r
H
T
T
P
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
M
a
n
a
g
e
r
s
e
r
v
l
e
t
-
3
.
0
j
s
p
-
2
.
2
a
p
p
s
e
c
u
r
i
t
y
-
1
.
0
r
e
s
t
c
o
n
n
e
c
t
o
r
-
1
.
0
j
p
a
-
2
.
0
Liberty Profile
Server 1
F
e
a
t
u
r
e
M
a
n
a
g
e
r
H
T
T
P
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
M
a
n
a
g
e
r
s
e
r
v
l
e
t
-
3
.
0
j
s
p
-
2
.
2
a
p
p
s
e
c
u
r
i
t
y
-
1
.
0
r
e
s
t
c
o
n
n
e
c
t
o
r
-
1
.
0
j
p
a
-
2
.
0
Liberty Profile
Server 2
F
e
a
t
u
r
e
M
a
n
a
g
e
r
H
T
T
P
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
M
a
n
a
g
e
r
s
e
r
v
l
e
t
-
3
.
0
j
s
p
-
2
.
2
a
p
p
s
e
c
u
r
i
t
y
-
1
.
0
r
e
s
t
c
o
n
n
e
c
t
o
r
-
1
.
0
j
p
a
-
2
.
0
Liberty Profile
Server 3
Apps
Apps
Apps
Apps
Apps
Apps
Load balancing … Apache
93
Chef ServerChef workstation
node_4
chef-client
HTTP Server
chef-client chef-client chef-clientchef-client
role = clusterA
chef-client chef-client
node_1
chef-client
node_2 node_3
F
e
a
t
u
r
e
M
a
n
a
g
e
r
H
T
T
P
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
M
a
n
a
g
e
r
s
e
r
v
l
e
t
-
3
.
0
j
s
p
-
2
.
2
a
p
p
s
e
c
u
r
i
t
y
-
1
.
0
r
e
s
t
c
o
n
n
e
c
t
o
r
-
1
.
0
j
p
a
-
2
.
0
Liberty Profile
Server 1
F
e
a
t
u
r
e
M
a
n
a
g
e
r
H
T
T
P
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
M
a
n
a
g
e
r
s
e
r
v
l
e
t
-
3
.
0
j
s
p
-
2
.
2
a
p
p
s
e
c
u
r
i
t
y
-
1
.
0
r
e
s
t
c
o
n
n
e
c
t
o
r
-
1
.
0
j
p
a
-
2
.
0
Liberty Profile
Server 2
F
e
a
t
u
r
e
M
a
n
a
g
e
r
H
T
T
P
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
M
a
n
a
g
e
r
s
e
r
v
l
e
t
-
3
.
0
j
s
p
-
2
.
2
a
p
p
s
e
c
u
r
i
t
y
-
1
.
0
r
e
s
t
c
o
n
n
e
c
t
o
r
-
1
.
0
j
p
a
-
2
.
0
Liberty Profile
Server 3
Apps
Apps
Apps
Apps
Apps
Apps
Load balancing … Apache
93
Chef ServerChef workstation
node_4
chef-client
HTTP Server
chef-client chef-client chef-client
httpd.conf.erb
chef-client
role = clusterA
chef-client chef-client
node_1
chef-client
node_2 node_3
F
e
a
t
u
r
e
M
a
n
a
g
e
r
H
T
T
P
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
M
a
n
a
g
e
r
s
e
r
v
l
e
t
-
3
.
0
j
s
p
-
2
.
2
a
p
p
s
e
c
u
r
i
t
y
-
1
.
0
r
e
s
t
c
o
n
n
e
c
t
o
r
-
1
.
0
j
p
a
-
2
.
0
Liberty Profile
Server 1
F
e
a
t
u
r
e
M
a
n
a
g
e
r
H
T
T
P
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
M
a
n
a
g
e
r
s
e
r
v
l
e
t
-
3
.
0
j
s
p
-
2
.
2
a
p
p
s
e
c
u
r
i
t
y
-
1
.
0
r
e
s
t
c
o
n
n
e
c
t
o
r
-
1
.
0
j
p
a
-
2
.
0
Liberty Profile
Server 2
F
e
a
t
u
r
e
M
a
n
a
g
e
r
H
T
T
P
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
M
a
n
a
g
e
r
s
e
r
v
l
e
t
-
3
.
0
j
s
p
-
2
.
2
a
p
p
s
e
c
u
r
i
t
y
-
1
.
0
r
e
s
t
c
o
n
n
e
c
t
o
r
-
1
.
0
j
p
a
-
2
.
0
Liberty Profile
Server 3
Apps
Apps
Apps
Apps
Apps
Apps
Load balancing … Apache
93
Chef ServerChef workstation
node_4
chef-client
HTTP Server
chef-client chef-client chef-client
httpd.conf
chef-client
role = clusterA
chef-client chef-client
node_1
chef-client
node_2 node_3
F
e
a
t
u
r
e
M
a
n
a
g
e
r
H
T
T
P
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
M
a
n
a
g
e
r
s
e
r
v
l
e
t
-
3
.
0
j
s
p
-
2
.
2
a
p
p
s
e
c
u
r
i
t
y
-
1
.
0
r
e
s
t
c
o
n
n
e
c
t
o
r
-
1
.
0
j
p
a
-
2
.
0
Liberty Profile
Server 1
F
e
a
t
u
r
e
M
a
n
a
g
e
r
H
T
T
P
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
M
a
n
a
g
e
r
s
e
r
v
l
e
t
-
3
.
0
j
s
p
-
2
.
2
a
p
p
s
e
c
u
r
i
t
y
-
1
.
0
r
e
s
t
c
o
n
n
e
c
t
o
r
-
1
.
0
j
p
a
-
2
.
0
Liberty Profile
Server 2
F
e
a
t
u
r
e
M
a
n
a
g
e
r
H
T
T
P
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
M
a
n
a
g
e
r
s
e
r
v
l
e
t
-
3
.
0
j
s
p
-
2
.
2
a
p
p
s
e
c
u
r
i
t
y
-
1
.
0
r
e
s
t
c
o
n
n
e
c
t
o
r
-
1
.
0
j
p
a
-
2
.
0
Liberty Profile
Server 3
Apps
Apps
Apps
Apps
Apps
Apps
Load balancing … Apache
93
Chef ServerChef workstation
node_4
chef-client
HTTP Server
chef-client chef-client chef-client
httpd.conf
chef-client
Chef recipe sample:
https://github.com/WASdev/ci.chef.wlp.samples/blob/master/recipes/proxy.rb
role = clusterA
node_1
chef-client
node_2
chef-client
node_3
chef-client
F
e
a
t
u
r
e
M
a
n
a
g
e
r
H
T
T
P
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
M
a
n
a
g
e
r
s
e
r
v
l
e
t
-
3
.
0
j
s
p
-
2
.
2
a
p
p
s
e
c
u
r
i
t
y
-
1
.
0
r
e
s
t
c
o
n
n
e
c
t
o
r
-
1
.
0
j
p
a
-
2
.
0
Liberty Profile
Server 1
F
e
a
t
u
r
e
M
a
n
a
g
e
r
H
T
T
P
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
M
a
n
a
g
e
r
s
e
r
v
l
e
t
-
3
.
0
j
s
p
-
2
.
2
a
p
p
s
e
c
u
r
i
t
y
-
1
.
0
r
e
s
t
c
o
n
n
e
c
t
o
r
-
1
.
0
j
p
a
-
2
.
0
Liberty Profile
Server 2
F
e
a
t
u
r
e
M
a
n
a
g
e
r
H
T
T
P
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
M
a
n
a
g
e
r
s
e
r
v
l
e
t
-
3
.
0
j
s
p
-
2
.
2
a
p
p
s
e
c
u
r
i
t
y
-
1
.
0
r
e
s
t
c
o
n
n
e
c
t
o
r
-
1
.
0
j
p
a
-
2
.
0
Liberty Profile
Server 3
Apps
Apps
Apps
Apps
Apps
Apps
Load balancing … IBM HTTP Server
94
Chef ServerChef workstation
node_4
chef-client
F
e
a
t
u
r
e
M
a
n
a
g
e
r
H
T
T
P
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
M
a
n
a
g
e
r
s
e
r
v
l
e
t
-
3
.
0
j
s
p
-
2
.
2
a
p
p
s
e
c
u
r
i
t
y
-
1
.
0
r
e
s
t
c
o
n
n
e
c
t
o
r
-
1
.
0
j
p
a
-
2
.
0
Liberty Profile
Server 4
Apps
Apps
chef-client chef-client chef-clientchef-client
role = clusterA
node_1
chef-client
node_2
chef-client
node_3
chef-client
F
e
a
t
u
r
e
M
a
n
a
g
e
r
H
T
T
P
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
M
a
n
a
g
e
r
s
e
r
v
l
e
t
-
3
.
0
j
s
p
-
2
.
2
a
p
p
s
e
c
u
r
i
t
y
-
1
.
0
r
e
s
t
c
o
n
n
e
c
t
o
r
-
1
.
0
j
p
a
-
2
.
0
Liberty Profile
Server 1
F
e
a
t
u
r
e
M
a
n
a
g
e
r
H
T
T
P
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
M
a
n
a
g
e
r
s
e
r
v
l
e
t
-
3
.
0
j
s
p
-
2
.
2
a
p
p
s
e
c
u
r
i
t
y
-
1
.
0
r
e
s
t
c
o
n
n
e
c
t
o
r
-
1
.
0
j
p
a
-
2
.
0
Liberty Profile
Server 2
F
e
a
t
u
r
e
M
a
n
a
g
e
r
H
T
T
P
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
M
a
n
a
g
e
r
s
e
r
v
l
e
t
-
3
.
0
j
s
p
-
2
.
2
a
p
p
s
e
c
u
r
i
t
y
-
1
.
0
r
e
s
t
c
o
n
n
e
c
t
o
r
-
1
.
0
j
p
a
-
2
.
0
Liberty Profile
Server 3
Apps
Apps
Apps
Apps
Apps
Apps
Load balancing … IBM HTTP Server
94
Chef ServerChef workstation
node_4
chef-client
F
e
a
t
u
r
e
M
a
n
a
g
e
r
H
T
T
P
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
M
a
n
a
g
e
r
s
e
r
v
l
e
t
-
3
.
0
j
s
p
-
2
.
2
a
p
p
s
e
c
u
r
i
t
y
-
1
.
0
r
e
s
t
c
o
n
n
e
c
t
o
r
-
1
.
0
j
p
a
-
2
.
0
Liberty Profile
Server 4
Apps
Apps
chef-client chef-client chef-clientchef-client
poll
role = clusterA
node_1
chef-client
node_2
chef-client
node_3
chef-client
F
e
a
t
u
r
e
M
a
n
a
g
e
r
H
T
T
P
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
M
a
n
a
g
e
r
s
e
r
v
l
e
t
-
3
.
0
j
s
p
-
2
.
2
a
p
p
s
e
c
u
r
i
t
y
-
1
.
0
r
e
s
t
c
o
n
n
e
c
t
o
r
-
1
.
0
j
p
a
-
2
.
0
Liberty Profile
Server 1
F
e
a
t
u
r
e
M
a
n
a
g
e
r
H
T
T
P
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
M
a
n
a
g
e
r
s
e
r
v
l
e
t
-
3
.
0
j
s
p
-
2
.
2
a
p
p
s
e
c
u
r
i
t
y
-
1
.
0
r
e
s
t
c
o
n
n
e
c
t
o
r
-
1
.
0
j
p
a
-
2
.
0
Liberty Profile
Server 2
F
e
a
t
u
r
e
M
a
n
a
g
e
r
H
T
T
P
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
M
a
n
a
g
e
r
s
e
r
v
l
e
t
-
3
.
0
j
s
p
-
2
.
2
a
p
p
s
e
c
u
r
i
t
y
-
1
.
0
r
e
s
t
c
o
n
n
e
c
t
o
r
-
1
.
0
j
p
a
-
2
.
0
Liberty Profile
Server 3
Apps
Apps
Apps
Apps
Apps
Apps
Load balancing … IBM HTTP Server
94
Chef ServerChef workstation
node_4
chef-client
F
e
a
t
u
r
e
M
a
n
a
g
e
r
H
T
T
P
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
M
a
n
a
g
e
r
s
e
r
v
l
e
t
-
3
.
0
j
s
p
-
2
.
2
a
p
p
s
e
c
u
r
i
t
y
-
1
.
0
r
e
s
t
c
o
n
n
e
c
t
o
r
-
1
.
0
j
p
a
-
2
.
0
Liberty Profile
Server 4
Apps
Apps
chef-client chef-client chef-clientchef-client
IIM
role = clusterA
node_1
chef-client
node_2
chef-client
node_3
chef-client
F
e
a
t
u
r
e
M
a
n
a
g
e
r
H
T
T
P
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
M
a
n
a
g
e
r
s
e
r
v
l
e
t
-
3
.
0
j
s
p
-
2
.
2
a
p
p
s
e
c
u
r
i
t
y
-
1
.
0
r
e
s
t
c
o
n
n
e
c
t
o
r
-
1
.
0
j
p
a
-
2
.
0
Liberty Profile
Server 1
F
e
a
t
u
r
e
M
a
n
a
g
e
r
H
T
T
P
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
M
a
n
a
g
e
r
s
e
r
v
l
e
t
-
3
.
0
j
s
p
-
2
.
2
a
p
p
s
e
c
u
r
i
t
y
-
1
.
0
r
e
s
t
c
o
n
n
e
c
t
o
r
-
1
.
0
j
p
a
-
2
.
0
Liberty Profile
Server 2
F
e
a
t
u
r
e
M
a
n
a
g
e
r
H
T
T
P
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
M
a
n
a
g
e
r
s
e
r
v
l
e
t
-
3
.
0
j
s
p
-
2
.
2
a
p
p
s
e
c
u
r
i
t
y
-
1
.
0
r
e
s
t
c
o
n
n
e
c
t
o
r
-
1
.
0
j
p
a
-
2
.
0
Liberty Profile
Server 3
Apps
Apps
Apps
Apps
Apps
Apps
Load balancing … IBM HTTP Server
94
Chef ServerChef workstation
node_4
chef-client
IHS
WebSphere
plugin
F
e
a
t
u
r
e
M
a
n
a
g
e
r
H
T
T
P
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
M
a
n
a
g
e
r
s
e
r
v
l
e
t
-
3
.
0
j
s
p
-
2
.
2
a
p
p
s
e
c
u
r
i
t
y
-
1
.
0
r
e
s
t
c
o
n
n
e
c
t
o
r
-
1
.
0
j
p
a
-
2
.
0
Liberty Profile
Server 4
Apps
Apps
chef-client chef-client chef-clientchef-client
IIM
role = clusterA
node_1
chef-client
node_2
chef-client
node_3
chef-client
F
e
a
t
u
r
e
M
a
n
a
g
e
r
H
T
T
P
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
M
a
n
a
g
e
r
s
e
r
v
l
e
t
-
3
.
0
j
s
p
-
2
.
2
a
p
p
s
e
c
u
r
i
t
y
-
1
.
0
r
e
s
t
c
o
n
n
e
c
t
o
r
-
1
.
0
j
p
a
-
2
.
0
Liberty Profile
Server 1
F
e
a
t
u
r
e
M
a
n
a
g
e
r
H
T
T
P
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
M
a
n
a
g
e
r
s
e
r
v
l
e
t
-
3
.
0
j
s
p
-
2
.
2
a
p
p
s
e
c
u
r
i
t
y
-
1
.
0
r
e
s
t
c
o
n
n
e
c
t
o
r
-
1
.
0
j
p
a
-
2
.
0
Liberty Profile
Server 2
F
e
a
t
u
r
e
M
a
n
a
g
e
r
H
T
T
P
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
M
a
n
a
g
e
r
s
e
r
v
l
e
t
-
3
.
0
j
s
p
-
2
.
2
a
p
p
s
e
c
u
r
i
t
y
-
1
.
0
r
e
s
t
c
o
n
n
e
c
t
o
r
-
1
.
0
j
p
a
-
2
.
0
Liberty Profile
Server 3
Apps
Apps
Apps
Apps
Apps
Apps
Load balancing … IBM HTTP Server
94
Chef ServerChef workstation
node_4
chef-client
IHS
WebSphere
plugin
F
e
a
t
u
r
e
M
a
n
a
g
e
r
H
T
T
P
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
M
a
n
a
g
e
r
s
e
r
v
l
e
t
-
3
.
0
j
s
p
-
2
.
2
a
p
p
s
e
c
u
r
i
t
y
-
1
.
0
r
e
s
t
c
o
n
n
e
c
t
o
r
-
1
.
0
j
p
a
-
2
.
0
Liberty Profile
Server 4
Apps
Apps
chef-client chef-client chef-clientchef-client
IIM
Get plugin-cfg.xml
& merge
role = clusterA
node_1
chef-client
node_2
chef-client
node_3
chef-client
F
e
a
t
u
r
e
M
a
n
a
g
e
r
H
T
T
P
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
M
a
n
a
g
e
r
s
e
r
v
l
e
t
-
3
.
0
j
s
p
-
2
.
2
a
p
p
s
e
c
u
r
i
t
y
-
1
.
0
r
e
s
t
c
o
n
n
e
c
t
o
r
-
1
.
0
j
p
a
-
2
.
0
Liberty Profile
Server 1
F
e
a
t
u
r
e
M
a
n
a
g
e
r
H
T
T
P
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
M
a
n
a
g
e
r
s
e
r
v
l
e
t
-
3
.
0
j
s
p
-
2
.
2
a
p
p
s
e
c
u
r
i
t
y
-
1
.
0
r
e
s
t
c
o
n
n
e
c
t
o
r
-
1
.
0
j
p
a
-
2
.
0
Liberty Profile
Server 2
F
e
a
t
u
r
e
M
a
n
a
g
e
r
H
T
T
P
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
M
a
n
a
g
e
r
s
e
r
v
l
e
t
-
3
.
0
j
s
p
-
2
.
2
a
p
p
s
e
c
u
r
i
t
y
-
1
.
0
r
e
s
t
c
o
n
n
e
c
t
o
r
-
1
.
0
j
p
a
-
2
.
0
Liberty Profile
Server 3
Apps
Apps
Apps
Apps
Apps
Apps
Load balancing … IBM HTTP Server
94
Chef ServerChef workstation
node_4
chef-client
IHS
WebSphere
plugin
F
e
a
t
u
r
e
M
a
n
a
g
e
r
H
T
T
P
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
M
a
n
a
g
e
r
s
e
r
v
l
e
t
-
3
.
0
j
s
p
-
2
.
2
a
p
p
s
e
c
u
r
i
t
y
-
1
.
0
r
e
s
t
c
o
n
n
e
c
t
o
r
-
1
.
0
j
p
a
-
2
.
0
Liberty Profile
Server 4
Apps
Apps
chef-client chef-client chef-clientchef-client
IIM
role = clusterA
node_1
chef-client
node_2
chef-client
node_3
chef-client
F
e
a
t
u
r
e
M
a
n
a
g
e
r
H
T
T
P
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
M
a
n
a
g
e
r
s
e
r
v
l
e
t
-
3
.
0
j
s
p
-
2
.
2
a
p
p
s
e
c
u
r
i
t
y
-
1
.
0
r
e
s
t
c
o
n
n
e
c
t
o
r
-
1
.
0
j
p
a
-
2
.
0
Liberty Profile
Server 1
F
e
a
t
u
r
e
M
a
n
a
g
e
r
H
T
T
P
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
M
a
n
a
g
e
r
s
e
r
v
l
e
t
-
3
.
0
j
s
p
-
2
.
2
a
p
p
s
e
c
u
r
i
t
y
-
1
.
0
r
e
s
t
c
o
n
n
e
c
t
o
r
-
1
.
0
j
p
a
-
2
.
0
Liberty Profile
Server 2
F
e
a
t
u
r
e
M
a
n
a
g
e
r
H
T
T
P
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
M
a
n
a
g
e
r
s
e
r
v
l
e
t
-
3
.
0
j
s
p
-
2
.
2
a
p
p
s
e
c
u
r
i
t
y
-
1
.
0
r
e
s
t
c
o
n
n
e
c
t
o
r
-
1
.
0
j
p
a
-
2
.
0
Liberty Profile
Server 3
Apps
Apps
Apps
Apps
Apps
Apps
Load balancing … IBM HTTP Server
94
Chef ServerChef workstation
node_4
chef-client
IHS
WebSphere
plugin
F
e
a
t
u
r
e
M
a
n
a
g
e
r
H
T
T
P
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
M
a
n
a
g
e
r
s
e
r
v
l
e
t
-
3
.
0
j
s
p
-
2
.
2
a
p
p
s
e
c
u
r
i
t
y
-
1
.
0
r
e
s
t
c
o
n
n
e
c
t
o
r
-
1
.
0
j
p
a
-
2
.
0
Liberty Profile
Server 4
Apps
Apps
chef-client chef-client chef-clientchef-client
IIM
IBM Installation Manager
https://github.com/WASdev/ci.chef.iim
IBM HTTP Server
https://github.com/WASdev/ci.chef.ihs
role = clusterA
Puppet and WebSphere Liberty Profile
95
Puppet MasterPuppet workstation
node_2 node_3
F
e
a
t
u
r
e
M
a
n
a
g
e
r
H
T
T
P
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
M
a
n
a
g
e
r
s
e
r
v
l
e
t
-
3
.
0
j
s
p
-
2
.
2
a
p
p
s
e
c
u
r
i
t
y
-
1
.
0
r
e
s
t
c
o
n
n
e
c
t
o
r
-
1
.
0
j
p
a
-
2
.
0
Apps
Liberty Profile
Server 2
Apps
F
e
a
t
u
r
e
M
a
n
a
g
e
r
H
T
T
P
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
M
a
n
a
g
e
r
s
e
r
v
l
e
t
-
3
.
0
j
s
p
-
2
.
2
a
p
p
s
e
c
u
r
i
t
y
-
1
.
0
r
e
s
t
c
o
n
n
e
c
t
o
r
-
1
.
0
j
p
a
-
2
.
0
Apps
Liberty Profile
Server 3
Apps
F
e
a
t
u
r
e
M
a
n
a
g
e
r
H
T
T
P
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
M
a
n
a
g
e
r
s
e
r
v
l
e
t
-
3
.
0
j
s
p
-
2
.
2
a
p
p
s
e
c
u
r
i
t
y
-
1
.
0
r
e
s
t
c
o
n
n
e
c
t
o
r
-
1
.
0
j
p
a
-
2
.
0
Liberty Profile
Server 4
Apps
Apps
node_1
F
e
a
t
u
r
e
M
a
n
a
g
e
r
H
T
T
P
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
M
a
n
a
g
e
r
s
e
r
v
l
e
t
-
3
.
0
j
s
p
-
2
.
2
a
p
p
s
e
c
u
r
i
t
y
-
1
.
0
r
e
s
t
c
o
n
n
e
c
t
o
r
-
1
.
0
j
p
a
-
2
.
0
Apps
Liberty Profile
Server 1
Apps
…
Grid
Container
WXS
Caching
Tier
Grid
Container
Grid
Container
Grid
Container
Grid
Container
Grid
Container
Catalog
Server
poll poll poll
upload puppet module
puppet-agent puppet-agent puppet-agent
node_4
HTTP Server
puppet-agent
Puppet and WebSphere Liberty Profile
95
Puppet MasterPuppet workstation
node_2 node_3
F
e
a
t
u
r
e
M
a
n
a
g
e
r
H
T
T
P
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
M
a
n
a
g
e
r
s
e
r
v
l
e
t
-
3
.
0
j
s
p
-
2
.
2
a
p
p
s
e
c
u
r
i
t
y
-
1
.
0
r
e
s
t
c
o
n
n
e
c
t
o
r
-
1
.
0
j
p
a
-
2
.
0
Apps
Liberty Profile
Server 2
Apps
F
e
a
t
u
r
e
M
a
n
a
g
e
r
H
T
T
P
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
M
a
n
a
g
e
r
s
e
r
v
l
e
t
-
3
.
0
j
s
p
-
2
.
2
a
p
p
s
e
c
u
r
i
t
y
-
1
.
0
r
e
s
t
c
o
n
n
e
c
t
o
r
-
1
.
0
j
p
a
-
2
.
0
Apps
Liberty Profile
Server 3
Apps
F
e
a
t
u
r
e
M
a
n
a
g
e
r
H
T
T
P
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
M
a
n
a
g
e
r
s
e
r
v
l
e
t
-
3
.
0
j
s
p
-
2
.
2
a
p
p
s
e
c
u
r
i
t
y
-
1
.
0
r
e
s
t
c
o
n
n
e
c
t
o
r
-
1
.
0
j
p
a
-
2
.
0
Liberty Profile
Server 4
Apps
Apps
node_1
F
e
a
t
u
r
e
M
a
n
a
g
e
r
H
T
T
P
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
M
a
n
a
g
e
r
s
e
r
v
l
e
t
-
3
.
0
j
s
p
-
2
.
2
a
p
p
s
e
c
u
r
i
t
y
-
1
.
0
r
e
s
t
c
o
n
n
e
c
t
o
r
-
1
.
0
j
p
a
-
2
.
0
Apps
Liberty Profile
Server 1
Apps
…
Grid
Container
WXS
Caching
Tier
Grid
Container
Grid
Container
Grid
Container
Grid
Container
Grid
Container
Catalog
Server
poll poll poll
upload puppet module
Puppet: http://github.com/WASdev/ci.puppet.wlp Article: http://ibm.biz/liberty-p
puppet-agent puppet-agent puppet-agent
node_4
HTTP Server
puppet-agent
UrbanCode Deploy: Deployment Automation
96
• Manage application
components and versions
• Manage configurations across
all environments
• Offer secure ‘self-service’ capabilities
• Increase transparency
• Ensure governance and compliancy
Visibility and automated control of your application deployment process
Application model
Reliably capture application content and configuration settings with versioning
and traceability
Process editor
98
Create multiple processes per component
Application environments
99
Define where components are deployed and capture configuration settings per
deployment environment for an application
Version applications with Snapshots
100
Capture tested component versions and configuration settings as a snapshot
that is promoted to other environments for better visibility and control
Reliable Middleware Configuration Management
101
Artifact Library
Application
EAR
WAR
DB
Cluster
template
Exemplar
WAS Cell
Plugin
Import
configuration
WAS Configuration Template Creation
+ Template
Assembled
PROD
QA
Dev
Deploy and promote application and
configuration across environments
How do they fit?
• Convergent
• Chef, Puppet poll for
updated configuration, to
ensure a defined state
E.g. O/S and middleware
patches and configuration
• Directed
• UrbanCode directs & co-
ordinates changes across
machines
E.g. DB schema before
application update before
web server change
103
Networking
Storage
Servers
Virtualization
O/S
Middleware
Mid Config
Data
Applications
Infrastructure
as a Service
UC Deploy
Man/Auto
PureApplication
System
SmartCloud
Orchestrator
SoftLayer
Increasingfrequencyofchange
Try it out …
104
• Continuous development pipeline ‘lab’ on wasdev.net
• http://ibm.biz/liberty-devops
• Getting started with Liberty & Puppet
• http://ibm.biz/liberty-p
• Deploying Liberty with UCD
• http://ibm.biz/liberty-ucd
Chef, Puppet & UrbanCode Deploy
• “Infrastructure as Code” – Chef and Puppet
• Open source (ASLv2 license)
• IBM UrbanCode Deploy
• Free trial
• Find out more at
• www.puppetlabs.com
• www.chef.io
• developer.ibm.com/urbancode
105
Visit the WASdev community
• WebSphere Liberty Profile Developers Edition
• Free to download anonymously
• Can be put into production (max 2Gb heap per organisation)
• WebSphere Application Server Developer Tools
• Downloads, Articles, QA
• Open source projects: samples, libraries, tools, integrations
106wasdev.net
github.com/WASdev
Notices and Disclaimers
Copyright © 2015 by International Business Machines Corporation (IBM). No part of this document may be reproduced or
transmitted in any form without written permission from IBM.
U.S. Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with
IBM.
Information in these presentations (including information relating to products that have not yet been announced by IBM) has been
reviewed for accuracy as of the date of initial publication and could include unintentional technical or typographical errors. IBM
shall have no responsibility to update this information. THIS DOCUMENT IS DISTRIBUTED "AS IS" WITHOUT ANY WARRANTY,
EITHER EXPRESS OR IMPLIED. IN NO EVENT SHALL IBM BE LIABLE FOR ANY DAMAGE ARISING FROM THE USE OF
THIS INFORMATION, INCLUDING BUT NOT LIMITED TO, LOSS OF DATA, BUSINESS INTERRUPTION, LOSS OF PROFIT
OR LOSS OF OPPORTUNITY. IBM products and services are warranted according to the terms and conditions of the
agreements under which they are provided.
Any statements regarding IBM's future direction, intent or product plans are subject to change or withdrawal without
notice.
Performance data contained herein was generally obtained in a controlled, isolated environments. Customer examples are
presented as illustrations of how those customers have used IBM products and the results they may have achieved. Actual
performance, cost, savings or other results in other operating environments may vary.
References in this document to IBM products, programs, or services does not imply that IBM intends to make such products,
programs or services available in all countries in which IBM operates or does business.
Workshops, sessions and associated materials may have been prepared by independent session speakers, and do not
necessarily reflect the views of IBM. All materials and discussions are provided for informational purposes only, and are neither
intended to, nor shall constitute legal or other guidance or advice to any individual participant or their specific situation.
It is the customer’s responsibility to insure its own compliance with legal requirements and to obtain advice of competent legal
counsel as to the identification and interpretation of any relevant laws and regulatory requirements that may affect the customer’s
business and any actions the customer may need to take to comply with such laws. IBM does not provide legal advice or
represent or warrant that its services or products will ensure that the customer is in compliance with any law.
Notices and Disclaimers (con’t)
Information concerning non-IBM products was obtained from the suppliers of those products, their published
announcements or other publicly available sources. IBM has not tested those products in connection with this
publication and cannot confirm the accuracy of performance, compatibility or any other claims related to non-IBM
products. Questions on the capabilities of non-IBM products should be addressed to the suppliers of those products.
IBM does not warrant the quality of any third-party products, or the ability of any such third-party products to
interoperate with IBM’s products. IBM EXPRESSLY DISCLAIMS ALL WARRANTIES, EXPRESSED OR IMPLIED,
INCLUDING BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
PARTICULAR PURPOSE.
The provision of the information contained herein is not intended to, and does not, grant any right or license under any
IBM patents, copyrights, trademarks or other intellectual property right.
• IBM, the IBM logo, ibm.com, Bluemix, Blueworks Live, CICS, Clearcase, DOORS®, Enterprise Document
Management System™, Global Business Services ®, Global Technology Services ®, Information on Demand,
ILOG, Maximo®, MQIntegrator®, MQSeries®, Netcool®, OMEGAMON, OpenPower, PureAnalytics™,
PureApplication®, pureCluster™, PureCoverage®, PureData®, PureExperience®, PureFlex®, pureQuery®,
pureScale®, PureSystems®, QRadar®, Rational®, Rhapsody®, SoDA, SPSS, StoredIQ, Tivoli®, Trusteer®,
urban{code}®, Watson, WebSphere®, Worklight®, X-Force® and System z® Z/OS, are trademarks of
International Business Machines Corporation, registered in many jurisdictions worldwide. Other product and
service names might be trademarks of IBM or other companies. A current list of IBM trademarks is available on
the Web at "Copyright and trademark information" at: www.ibm.com/legal/copytrade.shtml.
Thank You
Your Feedback is
Important!
Access the InterConnect 2015
Conference CONNECT Attendee
Portal to complete your session
surveys from your smartphone,
laptop or conference kiosk.

Aai 3228-dev ops-tools-websphere-sl