BMC BladeLogic Server Automation integration issues
This topic provides the workaround required when integrating BMC Release Process Management 4.6.00.01 with BMC BladeLogic Server Automation 8.5.01.02 or 8.5.01.03.
To implement the workaround, perform all of the following procedures:
- To manually set up the SSL connection by creating a certificate
- To update Gems
- To update BMC Application Automation utilities
To manually set up the SSL connection by creating a certificate
- Stop the BMC Release Process Management service.
- Go to http://indy.fulgan.com/SSL/ and download the latest available 32- or 64-bit version of the openssl for Windows zip file.
- Unpack the zip file to a directory; for example, c:\openssl.
Open a terminal window and go to the openssl or RPM directory.
Windows> cd c:\opensslUNIX$ cd <RLM HOME>/releases/<version>/RPMQuery the self-signed certificate from the application server using the following command, where bl-appserver is the host name of your BMC BladeLogic Server Automation application server:
Windows> openssl s_client -connect bl-appserver:9843UNIX$ openssl s_client -connect bl-appserver:9843Copy the certificate text that is returned, including the text BEGIN CERTIFICATE and END CERTIFICATE.
- Create a file called blappserver.cer in the appropriate path and in the file, store the certificate text you copied.
- Windows — c:\openssl\blappserver.cer
- UNIX — <RLM HOME>/releases/<version>/RPM/blappserver.cer
Convert the blappserver.cer file to a blappserver.pem file.
Windows> openssl x509 -text -in blappserver.cer -out blappserver.pemUNIX$ openssl x509 -text -in blappserver.cer -out blappserver.pem- Copy or move the blappserver.pem file to the appropriate folder or directory.
- Windows — <RLM Home>\releases\<version>\RPM\lib\script_support\blappserver.pem
- UNIX — lib/script_support/blappserver.pem
For example:
To update Gems
To update the rest-client, open the <RLM HOME>/releases/<version>/RPM/Gemfile and change Line 55:
From:55> gem 'rest-client'To:55> gem 'rest-client', '1.7.2'- On the command line, navigate to <RPM HOME>\RPM and run the following executable file:
- (Windows) > bin/setenv.bat
- (UNIX) $ . bin/setenv.sh
Install the dependencies specified in your Gem file.
Windows> gem install 'bundler', '1.6.2'
> bundle installUNIX$ bundle installFor both Windows and UNIX platforms, the following message appears and then indicates the installation is successful.
Installing rest-client 1.7.2- To update HTTPI Gems, replace the following files with the files of the same name in the attached file:
- <RLM HOME>\lib\jruby\lib\ruby\gems\shared\gems\httpi-1.1.1\lib\httpi\adapter\net_http.rb
- <RLM HOME>\lib\jruby\lib\ruby\gems\shared\gems\httpi-1.1.1\lib\httpi\auth\ssl.rb
To update BMC Application Automation utilities
- Open <RLM HOME>\releases\<version>\RPM\lib\script_support\baa_utilities.rb in a text editor.
At lines 18 and 19, add the following new code:
class << self
CERTIFICATE_PEM = '/opt/bmc/RLM/releases/4.6.00/RPM/lib/script_support/blappserver.pem'
CIPHERS = 'kEDH+AESGCM'
def rest_version '8.2'At line 18, provide a valid path to your environment.
WindowsCERTIFICATE_PEM = 'C:\ Program Files\BMC Software\RLM\releases\4.6.00\RPM\lib\script_support\blappserver.pem'UNIXCERTIFICATE_PEM = '/opt/bmc/RLM/releases/4.6.00/RPM/lib/script_support/blappserver.pem'Replace line 56.
From:def execute_job_internal(baa_base_url, baa_username, baa_password, baa_role, job_url, operation, arguments_hash)
action_sub_url = "#{job_url}/Operations/#{operation}"
url = compose_rest_url(baa_base_url, baa_username, baa_password, baa_role, action_sub_url)
response = RestClient.post URI.escape(url), arguments_hash.to_json, :content_type => :json, :accept => :json
response = parse_rest_response(response, 'posting', url)To:def execute_job_internal(baa_base_url, baa_username, baa_password, baa_role, job_url, operation, arguments_hash)
action_sub_url = "#{job_url}/Operations/#{operation}"
url = compose_rest_url(baa_base_url, baa_username, baa_password, baa_role, action_sub_url)
response = build_rest_resource(url).post(arguments_hash.to_json, content_type: :json, accept: :json)
response = parse_rest_response(response, 'posting', url)Replace lines 818 and 819.
From:def get_rest_response(url)
response = RestClient.get URI.escape(url), :accept => :json
parse_rest_response(response, 'querying', url)
endTo:def get_rest_response(url)
response = build_rest_resource(url).get(accept: :json)
parse_rest_response(response, 'querying', url)
end
def build_rest_resource(url)
puts "URL: #{url}"
puts "VERSION: #{RestClient.version}"
resource = RestClient::Resource.new(
URI.escape(url),
ssl_ciphers: CIPHERS,
ssl_ca_file: CERTIFICATE_PEM,
verify_ssl: OpenSSL::SSL::VERIFY_PEER
)
resource
endReplace line 857.
From:def get_soap_client(baa_base_url, service_name, timeout = nil)
Savon.client("#{baa_base_url}/services/BSA#{service_name}.wsdl") do |_, http|
http.auth.ssl.verify_mode = :none
http.read_timeout = timeout unless timeout.nil?
end # return client
endTo:def get_soap_client(baa_base_url, service_name, timeout = nil)
Savon.client("#{baa_base_url}/services/BSA#{service_name}.wsdl") do |_, http|
http.auth.ssl.verify_mode = :peer
http.auth.ssl.ca_cert_file = CERTIFICATE_PEM
http.auth.ssl.ciphers = CIPHERS
http.read_timeout = timeout unless timeout.nil?
end # return client
end- Start the BMC Release Process Management service.
Related topics
BMC-BladeLogic-Server-Automation-8-1-x