initial checkin

This commit is contained in:
Derrick Johnson 2014-03-07 18:16:27 -05:00
parent a0caaa6cda
commit 24b57a5784
12 changed files with 274 additions and 0 deletions

View File

@ -0,0 +1,4 @@
# Description
Configures and sets up the MON api. Includes attributes for log backups, ossec file watching and ossec rules.
Also included is an icinga check for the service health check.

2
attributes/backup.rb Normal file
View File

@ -0,0 +1,2 @@
# Logs to backup
node.default[:mon_log_backup][:logs][:som_api] = [ '/var/log/som-api/' ]

2
attributes/default.rb Normal file
View File

@ -0,0 +1,2 @@
node.default[:som_api][:group] = 'som_api'
node.default[:som_api][:owner] = 'som_api'

14
attributes/ufw.rb Normal file
View File

@ -0,0 +1,14 @@
default[:som_api][:firewall][:rules] = [
:https => {
:port => "443",
:protocol => "tcp"
},
:https_8080 => {
:port => "8080",
:protocol => "tcp"
},
:http_8081 => {
:port => "8081",
:protocol => "tcp"
}
]

Binary file not shown.

Binary file not shown.

Binary file not shown.

7
metadata.rb Normal file
View File

@ -0,0 +1,7 @@
name 'mon_api'
maintainer "MON Team"
maintainer_email "hpcs-mon-som@hp.com"
license "All rights reserved"
description "Installs/Configures mon_api"
long_description IO.read(File.join(File.dirname(__FILE__), 'README.md'))
version "0.0.1"

60
recipes/default.rb Normal file
View File

@ -0,0 +1,60 @@
#require 'zlib'
package 'mon-api' do
action :upgrade
end
service 'mon-api' do
action :enable
provider Chef::Provider::Service::Upstart
end
directory "/var/log/mon-api" do
recursive true
owner node[:mon_api][:owner]
group node[:mon_api][:group]
mode 0755
action :create
end
# Create the config file
template '/etc/mon/mon-api-config.yml' do
action :create
owner 'root'
group node[:mon_api][:group]
mode '640'
source "service-config.yml.erb"
variables(
:creds => creds,
:keystore_pass => keystore_pass
)
notifies :restart, "service[som-api]"
end
credentials = data_bag_item(node[:mon_api][:data_bag], 'mon_credentials')
setting = data_bag_item(node[:mon_api][:data_bag], 'mon_api')
cookbook_file "/etc/ssl/hpmiddleware-keystore.jks" do
source creds[:keystore_file]
owner 'root'
group node[:mon_api][:group]
mode '640'
end
cookbook_file "/etc/ssl/hpmiddleware-truststore.jks" do
source "hpmiddleware-truststore.jks"
owner 'root'
group node[:mon_api][:group]
mode '640'
end
# Until dropwizard 0.7.0 there is no support for running on a privileged port as an unprivleged user, I work around this via ufw rules
bash "nat 443 to 8080" do
action :run
code 'echo -e "*nat\n:PREROUTING ACCEPT [0:0]\n-A PREROUTING -p tcp --dport 443 -j REDIRECT --to-port 8080\nCOMMIT" >> /etc/ufw/before.rules'
not_if "grep 'to-port 8080' /etc/ufw/before.rules"
notifies :restart, "service[ufw]"
end

View File

@ -0,0 +1,25 @@
<?xml version="1.0" encoding="UTF-8"?>
<ehcache name="MiddlewareCache">
<defaultCache
maxElementsInMemory="10000"
eternal="false"
timeToIdleSeconds="120"
timeToLiveSeconds="120"
overflowToDisk="true"
diskSpoolBufferSizeMB="30"
maxElementsOnDisk="10000000"
diskPersistent="false"
diskExpiryThreadIntervalSeconds="120"
memoryStoreEvictionPolicy="LRU"/>
<cache name="TokenCache"
maxElementsInMemory="100"
maxElementsOnDisk="0"
eternal="false"
timeToIdleSeconds="120"
timeToLiveSeconds="120"
memoryStoreEvictionPolicy="LFU">
</cache>
</ehcache>

View File

@ -0,0 +1,68 @@
# Whether this server is running on a secure port
accessedViaHttps: false
# Cloud service integration information
cloudServices:
hpcs.compute:
version: 2 #1.1
# API URL format with an optional placeholder for AZ
urlFormat: https://region-b.geo-1.compute.hpcloudsvc.com/v2 # https://region-a.geo-1.compute.hpcloudsvc.com/v1.1
port: 80
hpcs.object-store:
version: 1.0
urlFormat: https://region-a.geo-1.objects.hpcloudsvc.com/v1.0 # https://region-a.geo-1.compute.hpcloudsvc.com/v1
port: 80
# Identity (Control services)
identityService:
url: <%=@creds['identyService']['url']%> #https://region-a.geo-1.identity.hpcloudsvc.com:35357/v2.0/tokens
username: <%=username%>
password: <%=password%>
tenantId: <%=tenantId%>
# Topic for publishing metrics to
metricsTopic: metrics
# Topic for publishing domain events to
eventsTopic: events
kafka:
brokerUris:
- <%=@settings['kafka']['hostname']%>:9092
zookeeperUris:
- <%=@settings['kafka']['hostname']%>:2181
healthCheckTopic: healthcheck
database:
driverClass: com.mysql.jdbc.Driver
url: jdbc:mysql://<%= @creds['mysql']['hostname']%>:3306/<%=@creds['mysql']['schema']%>?connectTimeout=5000&autoReconnect=true
user: <%=@creds['mysql']['username'] %>
password: <%=@creds['mysql']['password'] %>
maxWaitForConnection: 1s
validationQuery: "/* MyService Health Check */ SELECT 1"
minSize: 8
maxSize: 32
checkConnectionWhileIdle: false
jerseyClient:
gzipEnabledForRequests: false
middleware:
enabled: false
serviceIds: 100
endpointIds: 160
serverVIP: <%= @creds['middleware']['vip']%>
serverPort: 9543
connTimeout: 500
connSSLClientAuth: true
keystore: /etc/ssl/hpmiddleware-keystore.jks
keystorePass: changeit
truststore: /etc/ssl/hpmiddleware-truststore.jks
truststorePass: <%= @creds['middleware']['truststore_password'] %>
connPoolMaxActive: 3
connPoolMaxIdle: 3
connPoolEvictPeriod: 600000
connPoolMinIdleTime: 600000
connRetryTimes: 2
connRetryInterval: 50
rolesToMatch: [user, domainuser, domainadmin]

View File

@ -0,0 +1,92 @@
repositoryType: vertica
useMiddleware: true
roles:
users: [som-user,monitoring-user]
delegates: [som-delegate,monitoring-delegate]
http:
port: 8080 #Note that until dropwizard 0.7.0 there is no support for privileged ports
adminPort: 8081
maxThreads: 1024
minThreads: 32
connectorType: nonblocking+ssl
contextParameters:
ServerVIP: <%= @creds[:context_params][:server_vip] %>
ServerPort: 35357
ConnTimeout: 500
ServiceIds: 230,260
Endpoints: 2301,2601,2602
ConnSSLClientAuth: True
Keystore: /etc/ssl/hpmiddleware-keystore.jks
KeystorePass: <%= @creds[:context_params][:keystore_password]%>
Truststore: /etc/ssl/hpmiddleware-truststore.jks
TruststorePass: <%= @creds[:context_params][:truststore_password] %>
ConnPoolMaxActive: 3
ConnPoolMaxIdle: 3
ConnPoolEvictPeriod: 60000
ConnPoolMinIdleTime: 90000
DelayAuthDecision: False
AuthVersion: v3
EHCacheConfig: ehCacheConfig.xml
ssl:
keyStore: /etc/ssl/som-api-keystore.jks
keyStorePassword: <%= @keystore_pass %>
supportedProtocols: ["SSLv2Hello", "SSLv3", "TLSv1", "TLSv1.1", "TLSv1.2"]
requestLog:
console:
enabled: false
file:
enabled: true
currentLogFilename: /var/log/som-api/requests.log
archivedLogFilenamePattern: /var/log/som-api/requests-%d.log.gz
archivedFileCount: 32
database:
driverClass: com.vertica.jdbc.Driver
url: jdbc:vertica://<%= @creds[:db][:host][node[:fqdn]] %>:5433/som
user: <%= @creds[:db][:user] %>
password: "<%= @creds[:db][:password] %>"
properties:
charSet: UTF-8
ssl: true
# The maximum amount of time to wait on an empty pool before throwing an exception
maxWaitForConnection: 1s
# The SQL vertica to run when validating a connection's liveness
validationQuery: "/* MyService Health Check */ SELECT 1"
# The minimum number of connections to keep open
minSize: 8
# The maximum number of connections to keep open
maxSize: 64
# Whether or not idle connections should be validated
checkConnectionWhileIdle: false
# How long a connection must be held before it can be validated
checkConnectionHealthWhenIdleFor: 10s
# The maximum lifetime of an idle connection
closeConnectionIfIdleFor: 1 minute
logging:
# Options: DEBUG, TRACE, WARN, INFO
level: INFO
console:
enabled: false
file:
enabled: true
# Do not write log statements below this threshold to the file
threshold: ALL
# The file to which statements will be logged
currentLogFilename: /var/log/som-api/som-api.log
archivedLogFilenamePattern: /var/log/som-api/som-api%d.log.gz
# The maximum number of log files to archive
archivedFileCount: 10