The VMware Aria Operations Management Pack Builder is an independent appliance designed for crafting personalized management packs compatible with Aria Operations. This tool offers no-code approach to seamlessly integrate data from external APIs, empowering you to augment VMware and third-party resources by adding new Data, Relationships, and Events effortlessly.
However, there are sometimes data sources that cannot be queried adequately or at all using the Management Pack Builder. This is where the no-code solution reaches its limits. Fortunately, VMware by Broadcom provides the Aria Operations Integration SDK as a low-code solution, enabling the creation of Aria Operations Management Packs for practically all endpoints that offer any API or other means to access their data.
The entire documentation, the SDK, how-tos and code samples can be found here.
In this and upcoming blog posts, I will describe my introduction to the world of Management Packs created using the Aria Operations Integration SDK. In this first part, the focus will be on installing the base system and taking the initial baby steps with the SDK.
Let’s get started!
Base System Configuration
Starting point is: https://vmware.github.io/vmware-aria-operations-integration-sdk/get_started/
I have chosen Ubuntu 22.04.4 Desktop as the base system.
The first requirement is Docker 20.10.0 or later, and these are the steps I followed:
sudo apt install gnome-terminal - just in case it is missing
# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
# Add the repository to Apt sources:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# Test if Docker is working as expected
sudo docker run hello-world
If you would like to get rid of the sudo
command required to run docker
command:
# Following various how-tos sudo usermod -aG docker $USER # Log out and log back in so that your group membership is re-evaluated. # In my case I still got the same error running docker without sudo, # following steps solved the issue for me: # Create the docker group. sudo groupadd docker # Add your user to the docker group. sudo usermod -aG docker ${USER} # You need to log out and log back in so that your # group membership is re-evaluated or type the following command: su -s ${USER} # Verify that you can run docker commands without sudo. docker run hello-world # I also had to change some file permissions sudo chmod 666 /var/run/docker.sock
Docker
Next step is to login to docker registry using docker login and the path to your registry. You need to setup your docker account first, of course.
docker login
# Container registry format
# docker.io/USER_NAME/CONTAINER_REPOSITORY
Python
Check the Python version if you plan to write your Management Pack in Python:
tkopton@ubuntu01:~$ python3 --version
Python 3.10.12
Install pipx
.
sudo apt install pipx
pipx ensurepath
# restart terminal.
# In my case the pipx ensurepath command throws an error.
# pipx: error: unrecognized arguments: --global
# sudo pipx --global ensurepath might fix the problem
(Optional) Java
Initially I had plans to write my Management Packs in Java but relatively quickly gave up on that idea. Java has changed massively since I have learned it so I decided to improve my Python skills instead.
If you would like to give Java a chance, these were my steps to install the required Java environment. I had to install some dependencies to get the actual JDK installed.
Java JDK is located here:
tkopton@ubuntu01:~/Downloads$ sudo dpkg -i zulu21.34.19-ca-jdk21.0.3-linux_amd64.deb
Selecting previously unselected package zulu-21.
(Reading database ... 205217 files and directories currently installed.)
Preparing to unpack zulu21.34.19-ca-jdk21.0.3-linux_amd64.deb ...
Unpacking zulu-21 (21.34+19-1) ...
dpkg: dependency problems prevent configuration of zulu-21:
zulu-21 depends on java-common; however:
Package java-common is not installed.
dpkg: error processing package zulu-21 (--install):
dependency problems - leaving unconfigured
Errors were encountered while processing:
zulu-21
# Install java-common if you get the same error messageand
# re-run the JDK installation:
sudo apt-get install java-common
tkopton@ubuntu01:~/Downloads$ sudo dpkg -i zulu21.34.19-ca-jdk21.0.3-linux_amd64.deb
(Reading database ... 205886 files and directories currently installed.)
Preparing to unpack zulu21.34.19-ca-jdk21.0.3-linux_amd64.deb ...
Unpacking zulu-21 (21.34+19-1) over (21.34+19-1) ...
Setting up zulu-21 (21.34+19-1) ...
update-alternatives: using /usr/lib/jvm/zulu-21-amd64/bin/java to provide /usr/bin/java (java) in auto mode
Clone Integration Git Repo
To easily access samples etc. I have cloned the Integration SDK repo localy.
Make sure you have installed the git
package.
sudo apt install gh
For my Aria Operations Management Pack projects I have created the folder intergration-sdk-projects
in my home path and in the next step I have cloned the Integration SDK into this folder:
tkopton@ubuntu01:~/intergration-sdk-projects$ gh auth login
? What account do you want to log into? GitHub.com
? What is your preferred protocol for Git operations? HTTPS
? Authenticate Git with your GitHub credentials? No
? How would you like to authenticate GitHub CLI? Paste an authentication token
Tip: you can generate a Personal Access Token here https://github.com/settings/tokens
The minimum required scopes are 'repo', 'read:org'.
? Paste your authentication token: ****************************************
- gh config set -h github.com git_protocol https
✓ Configured git protocol
✓ Logged in as tkopton
# Clone the repo:
gh repo clone vmware/vmware-aria-operations-integration-sdk
(Optional) Python and Java IDE
Of course, you can develop more or less comfortable code in VIM, Nano, or VS Code, but I wanted to take this opportunity to look at the current IDEs for Python and Java. For Python, I settled on the Community Edition of PyCharm.
PyCharm community edition: https://www.jetbrains.com/pycharm/download/?section=linux
sudo tar -xzvf pycharm-community-2024.1.tar.gz -C /opt/
tkopton@ubuntu01:/opt/pycharm-community-2024.1/bin$ ./pycharm.sh
For Java, I relied on an old familiar tool, the most likely well-known IDE, Eclipse.
tkopton@ubuntu01:~/Downloads$ sudo tar -xzvf eclipse-inst-jre-linux64.tar.gz -C /opt/tkopton@ubuntu01:/opt/eclipse-installer$ ./eclipse-inst
VMware Aria Operations Integration SDK Installation
Your output will be similar to the following output except for the fact, that for this blog post I had to re-run the installation using --force
option.
tkopton@ubuntu01:~$ pipx install vmware-aria-operations-integration-sdk --force
Installing to existing venv 'vmware-aria-operations-integration-sdk'
installed package vmware-aria-operations-integration-sdk 1.1.0, installed using Python 3.10.12
These apps are now globally available
- mp-build
- mp-init
- mp-test
done! ✨ 🌟 ✨
VMware Aria Operations Integration SDK Test
Following the Get Started documentation and its “Creating a Management Pack” section I started with creating my first “Hello World” Management Pack.
tkopton@ubuntu01:~/intergration-sdk-projects$ mp-init
Enter a directory to create the project in. This is the directory where adapter code, metadata, and
content will reside. If the directory doesn't already exist, it will be created.
Path: hello-world
Management pack display name: Hello World
Management pack adapter key: HelloWorld
Management pack description: This is my first Management Pack created using the Integration SDK.
Management pack vendor: tkopton
Enter a path to a EULA text file, or leave blank for no EULA:
A EULA can be added later by editing the default 'eula.txt' file.
Enter a path to the management pack icon file, or leave blank for no icon:
An icon can be added later by setting the 'pak_icon' key in 'manifest.txt' to the
icon file name and adding the icon file to the root project directory.
Select a language for the adapter: Python
Select a template for your project: Sample Adapter
Creating Project [Finished]
Creating Virtual Environment [Finished]
project generation completed
In my work folder a hello-world folder containing the structure and the actual sample code has been created (next picture shows only two levels of the structure for better visibility).
To use the SDK and test and build our Management pack, you need to navigate to the newly-generated project directory and activate the virtual environment:
tkopton@ubuntu01:~/intergration-sdk-projects$ cd hello-world/
tkopton@ubuntu01:~/intergration-sdk-projects/hello-world$ source venv-Hello\ World/bin/activate
(venv-Hello World) tkopton@ubuntu01:~/intergration-sdk-projects/hello-world$
Now we can test the Management Pack for the first time without any changes to the code. As the guide describes if you run mp-test
from within the project directory it will test exactly this project/management pack, if you run it from outside of a specific project director the toll will ask for the project to test.
There are several options to test the Management Pack, a connection test is what I did first. Please keep in mind that we are testing a sample solution and the goal is to check if the SDK is working as expected.
As last step using the Integration SDK I have tested if building the Management Pack to provide the actual pak
file using mp-build
also works. For the build process we need to provide the path to the registry we have created in the Docker section: docker.io/USER_NAME/CONTAINER_REPOSITORY
. If you are not already logged in to your Docker Registry, you will be prompted for a login.
The ready to install pak file is located in the build directory.
(venv-Hello World) tkopton@ubuntu01:~/intergration-sdk-projects/hello-world$ cd build/
(venv-Hello World) tkopton@ubuntu01:~/intergration-sdk-projects/hello-world/build$ ls -al
total 40
drwxr-xr-x 2 tkopton tkopton 4096 Mai 8 10:47 .
drwxr-xr-x 11 tkopton tkopton 4096 Mai 8 10:44 ..
-rw-rw-r-- 1 tkopton tkopton 31376 Mai 8 10:47 HelloWorld_1.0.0.pak
Management Pack Installation and Start
The installation of the Management Pack into the Integrations Repository in Aria Operations does not differ from any other Management Pack installation.
The creation of an Adapter Instance is very simply as this is a sample Management Pack without any real functionality and configuration options.
NOTE: Integration SDK Management Pack Adapter Instances need to run on a Cloud Proxy!
It basically monitors itself providing very few metrics.
In one of the upcoming blog posts, I will delve deeper into the development of real Management Packs and describe the details more precisely
Stay safe.
Thomas – https://twitter.com/ThomasKopton