Install API Gateway using Command Central CLI & Azure Devops Remote Power Shell Option (on Azure VMs)
Tags: api, azure, devops, tutorial
Published: 2021-10-13 08:32:29

---
title: Install API Gateway using Command Central CLI & Azure Devops Remote Power Shell Option (on Azure VMs)
published: true
date: 2021-02-09 06:43:39 UTC
tags: #api, #azure, #devops, #tutorial
canonical_url: https://tech.forums.softwareag.com/t/install-api-gateway-using-command-central-cli-azure-devops-remote-power-shell-option-on-azure-vms/238728/1
---

 

## Installation Steps

1. Create two virtual machines in Azure – one for build Server and one is your target server where you wish the UM Server to be installed.  
 ![1](https://aws1.discourse-cdn.com/techcommunity/original/2X/b/bfa8eb2b1b8d48b0ba83a42b4cd587336afd36eb.png)  
**Build Server**  
• Install Command Central and Platform Manager installed. Enable the Platform Manager & Command Central Ports in both Windows Firewall and Azure Network Security Group.  
• System Requirements for Command Central can be found in the Installing Software AG Products documentation.  
• Command Central & Platform Manager installer can be downloaded from Empower.  
• It can be installed on the build server using the below command  
`<cceinstaller.exe> –-accept-license -d <installation folder> -c 8190 -C 8191 -s 8192 -S 8193 -p <password>`  
 ![2](https://aws1.discourse-cdn.com/techcommunity/original/2X/8/84ca4a1d5496cbc441cd3532991a9358f4894349.png)  
• Recommendation is to have one build server for Production environment and one for non-production environments.  
**Target Server**  
• Install Platform Manager on the Target Server.  
• Platform Manager can be installed via Command Central (Java8 is prerequisite) or can be directly installed on the VM using the software, which can be downloaded from empower.  
• Enable the Platform Manager & SSH Ports in both Windows Firewall and Azure Network Security Group.  
• Platform Manager installer can be downloaded from Empower.  
• It can be installed on the build server using the below command  
`<cceinstaller.exe> –-accept-license -d <installation folder> -D SPM -s 8192 -S 8193 -p <password>`
2. Login to command central installed in the build server using the below URL  
`https://<ccehostname>:<cceport>/cce/web.`
3. Navigate to Installations and select “+” to add the target node in Command Central.
4. Provide the hostname of the target node and select” Platform Manager is already installed” if SPM is already installed or select “Install Platform Manager remotely” to install SPM.  
 ![image](https://aws1.discourse-cdn.com/techcommunity/original/2X/3/3efef0a804b232750a77244e8b5e8ca7ca3eb348.png) ![3](https://aws1.discourse-cdn.com/techcommunity/original/2X/4/43dd55ba870f9f4c675143aa10779fa3aaf5ad23.png)
5. Provide the Port number, username and password, alias, description and Installation type details.  
 ![image](https://aws1.discourse-cdn.com/techcommunity/original/2X/e/e9ffe6f7787931c86dff56ed2b05f68b19d42881.png) ![4](https://aws1.discourse-cdn.com/techcommunity/original/2X/1/157bc6440fa21a2efe31cedfee885b6fb2ee67f8.png)
6. Once the node is connected in Command Central, upload the desired API Gateway Server YAML template in templates section and also add the API Gateway Server license key under Licensing->Keys tab  
 ![image](https://aws1.discourse-cdn.com/techcommunity/original/2X/c/c00a9457648e2a2b8f26b9d6c42f10026327bb89.png)  
 ![image](https://aws1.discourse-cdn.com/techcommunity/original/2X/1/1e83ab18f56407996bc60b97f69eea481f62995e.png)
7. Upload or download the Product Image repository to Repositories->Products and fixes (if any) to Repositories->Fixes.  
 ![6](https://aws1.discourse-cdn.com/techcommunity/original/2X/a/a0e66e360168496e9d867ed1c499566e20735e45.png)
8. Once all the setup is complete in Command Central, proceed to configuring “Windows Remote Management (WinRm)” on the build server.
9. Navigate to Azure Portal “[portal.azure.com](http://portal.azure.com/)” and make sure the DNS name is set on the build server. If not set the DNS name.
10. Then select PowerShell option in the Azure Portal.
11. Enter the below command in PowerShell to enable Remote Connection to VM.  
`Enable-AzVMPSRemoting -Name ‘<dns name of the vm>' -ResourceGroupName ‘resource group name’ -Protocol https -OsType Windows`  
 ![image](https://aws1.discourse-cdn.com/techcommunity/original/2X/f/f271c1fd8276d17af408e63e406d4e9b57da7936.png)  
Azure PowerShell configures the following  
• Based on the Operating System, it ensures WinRM (Windows) or SSH (Linux) is setup.  
• It ensures Network Security Group rules are in place to allow communication to the target, again based on communications type.  
• For Linux VMs, it installs PowerShell core on the target system.
12. Since the protocol used is HTTPs, certificate can be created using the below command.  
`New-SelfSignedCertificate -DnsName ‘<dns name of the vm>' -CertStoreLocation Cert:\LocalMachine\My`  
 ![image](https://aws1.discourse-cdn.com/techcommunity/original/2X/2/2f5d6552ba0bb2ecbf0344ff57c4f40a9a5f69de.png)
13. Next Register the WinRM listener using the below command.  
`winrm create winrm/config/Listener?Address=*+Transport=HTTPS @{Hostname”<dns name of the vm>”;CertificateThumbprint="<Thumbprint from previous step"}`  
 ![image](https://aws1.discourse-cdn.com/techcommunity/original/2X/2/2b366487d4a2a447855cd9d3248357e70401a166.png)
14. If the create listener step throws error with message, listener already exists, then listener can be deleted with the below command and then execute create step again.  
`winrm delete winrm/config/Listener?Address=*+Transport=HTTPS`
15. Navigate to [dev.azure.com](http://dev.azure.com/) home page and create your project.  
 ![7](https://aws1.discourse-cdn.com/techcommunity/original/2X/3/36abd01b74c43235e6fa64431d163c07ef24e4fe.png)
16. Create a new pipeline, select the desired repository (Azure repo, git, bitbucket, svn etc.) and add an empty/agent job and select “Default” agent pool in the Agent Selection.  
 ![image](https://aws1.discourse-cdn.com/techcommunity/original/2X/d/d9d46d88cb22a8d54a52bdfd29b33f6448694ee1.png)
17. On the Agent job, select add and Add a “Remote Power shell on Target Machines” step. In the Remote Power shell script, select inline and provide the CCE script to install API Gateway. Script can even be saved in the repo and referred in this task.  
 ![image](https://aws1.discourse-cdn.com/techcommunity/original/2X/8/8bf8b6b6f52b59e6245aafd3d0aa6869cb11d0fc.png)  
Script Used here is given below  
`<sagcc.bat absolute path> exec templates composite apply <API Gateway Server YAML Template Alias from CCE> nodes=<node alias> agw.memory.max=<max api gw memory> repo.product=<Product Image alias>`
18. Then execute the pipeline which will schedule the Command Central Job for API Gateway Installation and starts the API Gateway server and Internal Data Store. We can verify the installation in Command Central as shown below.  
 ![image](https://aws1.discourse-cdn.com/techcommunity/original/2X/d/d4a87dfed92b3a07abbb4fca018e361cc2adf0a8.png)  
 ![image](https://aws1.discourse-cdn.com/techcommunity/original/2X/5/52d39aec486400ee1a495449ccc2e35aa6fd3c2f.png)

**Notes:**  
This article provides on basic installation of API Gateway. Additional configuration as needed can be applied in the YAML template.

- Also, additional fixes can be included in the above URL.
- Sync Job can be added while installation to wait for the template execution and validate the installation.
- Similar steps can be followed for other product installations as well. Sample YAML templates for different product installations can be found in the below git project.
<aside data-onebox-src="https://github.com/SoftwareAG/sagdevops-templates">
  <header>
      <img src="https://aws1.discourse-cdn.com/techcommunity/original/2X/b/bad3e5f9ad67c1ddf145107ce7032ac1d7b22563.svg" width="32" height="32">

      <a href="https://github.com/SoftwareAG/sagdevops-templates" target="_blank" rel="noopener">GitHub</a>
  </header>

  <article>
    <div style="--aspect-ratio:690/345;"><img src="https://aws1.discourse-cdn.com/techcommunity/optimized/3X/d/4/d4b5c7e74326dc3d68599488a13dc8ca3e369a62_2_690x345.png" width="690" height="345" srcset="https://aws1.discourse-cdn.com/techcommunity/optimized/3X/d/4/d4b5c7e74326dc3d68599488a13dc8ca3e369a62_2_690x345.png, https://aws1.discourse-cdn.com/techcommunity/optimized/3X/d/4/d4b5c7e74326dc3d68599488a13dc8ca3e369a62_2_1035x517.png 1.5x, https://aws1.discourse-cdn.com/techcommunity/original/3X/d/4/d4b5c7e74326dc3d68599488a13dc8ca3e369a62.png 2x" data-small-upload="https://aws1.discourse-cdn.com/techcommunity/optimized/3X/d/4/d4b5c7e74326dc3d68599488a13dc8ca3e369a62_2_10x10.png"></div>

<h3><a href="https://github.com/SoftwareAG/sagdevops-templates" target="_blank" rel="noopener">GitHub - SoftwareAG/sagdevops-templates: Official library of Command Central...</a></h3>

  <p>Official library of Command Central default templates and Docker support - GitHub - SoftwareAG/sagdevops-templates: Official library of Command Central default templates and Docker support</p>

  </article>

  <div>
    
    
  </div>

  <div style="clear: both"></div>
</aside>

Official library of Command Central default templates and Docker support

Remote Power Shell Script Invocation is one of the approaches for invoking Command central jobs from Azure pipelines. Additionally, the below approaches can be used for Azure pipeline Integration with Command Central.

- Self-hosted azure pipeline agents on target VM - [Install UM using Microsoft Self Hosted Agent](https://tech.forums.softwareag.com/t/install-universal-messaging-server-using-command-central-cli-azure-devops-microsoft-self-hosted-agent-on-azure-vms/238705)
- Command Central REST API Approach - [Install IS using CCE REST API Approach](https://tech.forums.softwareag.com/t/install-integration-server-create-an-instance-using-command-central-rest-apis-azure-devops-on-azure-vms/238358)
- Command Central CLI docker container

[Read full topic](https://tech.forums.softwareag.com/t/install-api-gateway-using-command-central-cli-azure-devops-remote-power-shell-option-on-azure-vms/238728/1)