Information
Unsupported content This version of the documentation is no longer supported. However, the documentation is available for your convenience. You will not be able to leave comments.

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:

  1. To manually set up the SSL connection by creating a certificate
  2. To update Gems
  3. To update BMC Application Automation utilities

To manually set up the SSL connection by creating a certificate 

Warning

Note

For more information, see Setting up the SSL connection in the Sample Ruby Script for accessing RESTful Web Services topic.

  1. Stop the BMC Release Process Management service.
  2. Go to http://indy.fulgan.com/SSL/ and download the latest available 32- or 64-bit version of the openssl for Windows zip file. 
  3. Unpack the zip file to a directory; for example, c:\openssl.
  4. Open a terminal window and go to the openssl or RPM directory.

    Windows
    > cd c:\openssl
    UNIX
    $ cd <RLM HOME>/releases/<version>/RPM
  5. Query 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:9843
    UNIX
    $ openssl s_client -connect bl-appserver:9843
    Warning

    Note

    SSL information about the application server is displayed, including the self-signed certificate.

  6. Copy the certificate text that is returned, including the text BEGIN CERTIFICATE and END CERTIFICATE.

    Click here to view sample SSL output.

    sslcert.PNG

  7. Create a file called blappserver.cer in the appropriate path and in the file, store the certificate text you copied.
    • Windowsc:\openssl\blappserver.cer
    • UNIX<RLM HOME>/releases/<version>/RPM/blappserver.cer
  8. Convert the blappserver.cer file to a blappserver.pem file.

    Windows
    > openssl x509 -text -in blappserver.cer -out blappserver.pem
    UNIX
    $ openssl x509 -text -in blappserver.cer -out blappserver.pem
  9. Copy or move the blappserver.pem file to the appropriate folder or directory.

    • Windows <RLM Home>\releases\<version>\RPM\lib\script_support\blappserver.pem
    • UNIXlib/script_support/blappserver.pem

For example:

Windows
> copy c:\openssl\blappserver.pem c:Program Files\BMC Software\RLM\releases\4.6.00.01\RPM\lib\script_support\blappserver.pem
UNIX
$ mv blappserver.pem lib/script_support/blappserver.pem

To update Gems

  1. 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'
  2. On the command line, navigate to <RPM HOME>\RPM and run the following executable file:
    • (Windows) > bin/setenv.bat
    • (UNIX) $ . bin/setenv.sh
  3. Install the dependencies specified in your Gem file.

    Windows
    > gem install 'bundler', '1.6.2'
    > bundle install
    UNIX
    $ bundle install

    For both Windows and UNIX platforms, the following message appears and then indicates the installation is successful.

    Installing rest-client 1.7.2
  4. To update HTTPI Gems, replace the following files with the files of the same name in the attached HTTPI_patch.zipfile:

    • <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

  1. Open <RLM HOME>\releases\<version>\RPM\lib\script_support\baa_utilities.rb in a text editor.
  2. 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'
  3. At line 18, provide a valid path to your environment.

    Windows
    CERTIFICATE_PEM = 'C:\ Program Files\BMC Software\RLM\releases\4.6.00\RPM\lib\script_support\blappserver.pem'
    UNIX
    CERTIFICATE_PEM = '/opt/bmc/RLM/releases/4.6.00/RPM/lib/script_support/blappserver.pem'
  4. 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)
  5. 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)   
     end
    To:
    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
     end
  6. Replace 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   
    end
    To:
    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
  7. Start the BMC Release Process Management service.

Related topics

Known and corrected issues

BMC-BladeLogic-Server-Automation-8-1-x

 

 

 

 

 

Tip: For faster searching, add an asterisk to the end of your partial query. Example: cert*

BMC Release Process Management 4.6