{"id":15,"date":"2026-08-29T17:59:37","date_gmt":"2026-08-29T17:59:37","guid":{"rendered":"http:\/\/192.168.15.145\/?p=15"},"modified":"2026-08-29T18:06:46","modified_gmt":"2026-08-29T18:06:46","slug":"what-ive-learned-from-road-trips","status":"publish","type":"post","link":"https:\/\/cloudsolvd.com\/?p=15","title":{"rendered":"Install AWX on Ubuntu 24"},"content":{"rendered":"\n<h1 class=\"wp-block-heading\">AWX is an open-source alternative to Red Hat Tower (Ansible Automation Platform). I\u2019ve used both pretty extensively in the past, and since AWX is essentially free, I\u2019ll be covering that product in the next few blogs.<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">AWX is very useful for automating application creation for load balancers. There are a few components that will be needed to automate app deployment, but this is definitely the first step. I\u2019m going to publish a few blogs about automated app deployments using AWX and Avi.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Table of Contents<a href=\"https:\/\/mattadam.com\/2024\/05\/01\/install-awx-on-ubuntu-24\/#\"><\/a><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/cloudsolvd.com\/2024\/11\/06\/install-awx-on-ubuntu-24\/#Software_Versions_used_in_this_demo\">Software Versions used in this demo<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/cloudsolvd.com\/2024\/11\/06\/install-awx-on-ubuntu-24\/#Deploy_Ubuntu_VM\">Deploy Ubuntu VM<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/cloudsolvd.com\/2024\/11\/06\/install-awx-on-ubuntu-24\/#Install_Ubuntu_from_ISO\">Install Ubuntu from ISO<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/cloudsolvd.com\/2024\/11\/06\/install-awx-on-ubuntu-24\/#Install_AWX_on_Ubuntu_24\">Install AWX on Ubuntu 24<\/a><\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Software Versions used in this demo<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th class=\"has-text-align-left\" data-align=\"left\">Software<\/th><th class=\"has-text-align-left\" data-align=\"left\">Version<\/th><\/tr><\/thead><tbody><tr><td class=\"has-text-align-left\" data-align=\"left\">OS<\/td><td class=\"has-text-align-left\" data-align=\"left\">Ubuntu 24.04 LTS<\/td><\/tr><tr><td class=\"has-text-align-left\" data-align=\"left\">AWX<\/td><td class=\"has-text-align-left\" data-align=\"left\">24.3.1<\/td><\/tr><tr><td class=\"has-text-align-left\" data-align=\"left\">VMware vCenter<\/td><td class=\"has-text-align-left\" data-align=\"left\">8.0.2<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Deploy Ubuntu VM<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">In order to install AWX, we need to deploy a VM. We\u2019ll be using the latest stable release for Ubuntu, which at the time of writing is Ubuntu 24.04. Navigate to ubuntu\u2019s website and download the ISO.<\/p>\n\n\n\n<figure class=\"wp-block-image is-resized\"><img decoding=\"async\" src=\"https:\/\/cloudsolvd.com\/wp-content\/uploads\/2024\/11\/image-1024x195.png\" alt=\"\" class=\"wp-image-156\" style=\"aspect-ratio:5.251282051282051;width:1024px;height:auto\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">In vCenter, navigate to the Content Libraries and create a new content library, if you don\u2019t already have one.<\/p>\n\n\n\n<figure class=\"wp-block-image is-resized\"><img decoding=\"async\" src=\"https:\/\/cloudsolvd.com\/wp-content\/uploads\/2024\/11\/image-1.png\" alt=\"\" class=\"wp-image-157\" style=\"aspect-ratio:6.36734693877551;width:624px;height:auto\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Upload the ubuntu iso file to the content library.<\/p>\n\n\n\n<figure class=\"wp-block-image is-resized\"><img decoding=\"async\" src=\"https:\/\/cloudsolvd.com\/wp-content\/uploads\/2024\/11\/image-2.png\" alt=\"\" class=\"wp-image-158\" style=\"aspect-ratio:1.3611859838274933;width:1010px;height:auto\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">As the ubuntu iso is uploading to the content library, go ahead and deploy a new VM with the above specs.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>CPU: 2<\/li>\n\n\n\n<li>Memory: 4GB<\/li>\n\n\n\n<li>Disk: 20GB (20GB minimum, I would recommend 50GB)<\/li>\n\n\n\n<li>Network Adapter: a routable network, in my case VM Network.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u2013 Disk Size \u2013<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">When the VM is ready come back and select the CD\/DVD drive as the ubuntu iso file. Make sure to check Connect at Power On.<\/p>\n\n\n\n<figure class=\"wp-block-image is-resized\"><img decoding=\"async\" src=\"https:\/\/cloudsolvd.com\/wp-content\/uploads\/2024\/11\/image-3.png\" alt=\"\" class=\"wp-image-159\" style=\"aspect-ratio:7.414634146341464;width:608px;height:auto\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Power on the VM<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Install Ubuntu from ISO<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">After Ubuntu loads, we need to install the OS to the disk.<\/p>\n\n\n\n<figure class=\"wp-block-image is-resized\"><img decoding=\"async\" src=\"https:\/\/cloudsolvd.com\/wp-content\/uploads\/2024\/11\/image-4.png\" alt=\"\" class=\"wp-image-160\" style=\"aspect-ratio:0.76905311778291;width:333px;height:auto\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Click the image of Ubuntu to launce the remote console.<\/p>\n\n\n\n<figure class=\"wp-block-image is-resized\"><img decoding=\"async\" src=\"https:\/\/cloudsolvd.com\/wp-content\/uploads\/2024\/11\/image-5-1024x684.png\" alt=\"\" class=\"wp-image-161\" style=\"aspect-ratio:1.4970760233918128;width:1024px;height:auto\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Navigate through the install steps, I\u2019m not going to cover these since there are 1000s of guides on this topic, and it\u2019s rather straightforward.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Once you\u2019ve installed the OS, use the UI interface to set a static IP address (or just use the dhcp address).<br>Additionally, you will need to run a few commands to update and enable ssh.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td class=\"has-text-align-left\" data-align=\"left\">1 \u2013&nbsp;<code>apt update<\/code><br>2 \u2013&nbsp;<code>apt upgrade<\/code><br>3 \u2013&nbsp;<code>apt-get install open-vm-tools-desktop<\/code><br>4 \u2013&nbsp;<code>apt install git make -y<\/code><br>5 \u2013&nbsp;<code>apt install ssh<\/code><br>6 \u2013&nbsp;<code>sudo su -<\/code><br>7 \u2013&nbsp;<code>systemctl enable ssh<\/code><\/td><td class=\"has-text-align-left\" data-align=\"left\"><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<figure class=\"wp-block-image is-resized\"><img decoding=\"async\" src=\"https:\/\/cloudsolvd.com\/wp-content\/uploads\/2024\/11\/image-6.png\" alt=\"\" class=\"wp-image-162\" style=\"aspect-ratio:6.705263157894737;width:637px;height:auto\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">You should be able to ssh into the ubuntu machine.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Install AWX on Ubuntu 24<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Now that the base Ubuntu OS is ready to go, we can install any required packages and deploy AWX. First we\u2019re going to install docker and prepare the environment to run minikube. Minikube will be used to deploy awx. I\u2019m more or less following this guide here:&nbsp;<a href=\"https:\/\/www.linuxtechi.com\/install-ansible-awx-on-ubuntu\/#google_vignette\" target=\"_blank\" rel=\"noopener\">https:\/\/www.linuxtechi.com\/install-ansible-awx-on-ubuntu\/#google_vignette<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The docker install detailed steps can be found here:&nbsp;<a href=\"https:\/\/docs.docker.com\/engine\/install\/ubuntu\/\" target=\"_blank\" rel=\"noopener\">https:\/\/docs.docker.com\/engine\/install\/ubuntu\/<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>sudo<\/code>&nbsp;<code>apt-get update<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>sudo<\/code>&nbsp;<code>apt-get install<\/code>&nbsp;<code>ca-certificates curl<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>sudo<\/code>&nbsp;<code>install<\/code>&nbsp;<code>-m 0755 -d \/etc\/apt\/keyrings<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>sudo<\/code>&nbsp;<code>curl -fsSL https:\/\/download.docker.com\/linux\/ubuntu\/gpg<\/code>&nbsp;<code>-o \/etc\/apt\/keyrings\/docker.asc<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>sudo<\/code>&nbsp;<code>chmod<\/code>&nbsp;<code>a+r \/etc\/apt\/keyrings\/docker.asc<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"># Add the repository to Apt sources:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>echo<\/code><code>\\<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>&nbsp;&nbsp;<\/code><code>\"deb [arch=$(dpkg --print-architecture) signed-by=<\/code><code>\/etc\/apt\/keyrings\/docker<\/code><code>.asc] https:<\/code><code>\/\/download<\/code><code>.docker.com<\/code><code>\/linux\/ubuntu<\/code><code>\\<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>&nbsp;&nbsp;<\/code><code>$(.&nbsp;<\/code><code>\/etc\/os-release<\/code><code>&amp;&amp;&nbsp;<\/code><code>echo<\/code><code>\"$VERSION_CODENAME\"<\/code><code>) stable\" | \\<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>&nbsp;&nbsp;<\/code><code>sudo&nbsp;<\/code><code>tee&nbsp;<\/code><code>\/etc\/apt\/sources<\/code><code>.list.d<\/code><code>\/docker<\/code><code>.list &gt;&nbsp;<\/code><code>\/dev\/null<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>sudo<\/code>&nbsp;<code>apt-get update<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>sudo<\/code>&nbsp;<code>apt-get install<\/code>&nbsp;<code>docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Next we need to install minikube. Very simple, just a few commands.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>curl -LO https:\/\/storage.googleapis.com\/minikube\/releases\/latest\/minikube-linux-amd64<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>sudo<\/code>&nbsp;<code>install<\/code>&nbsp;<code>minikube-linux-amd64 \/usr\/local\/bin\/minikube<\/code>&nbsp;<code>&amp;&amp; rm<\/code>&nbsp;<code>minikube-linux-amd64<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>sudo<\/code>&nbsp;<code>usermod<\/code>&nbsp;<code>-aG docker $USER &amp;&amp; newgrp docker<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">minikube start \u2013vm-driver=docker \u2013addons=ingress<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Next we need to install kubectl, to interact with the K8s cluster<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>sudo<\/code>&nbsp;<code>su<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>curl -LO \"<a href=\"https:\/\/dl.k8s.io\/release\/\">https:\/\/dl.k8s.io\/release\/<\/a>$(curl -L -s&nbsp;<a href=\"https:\/\/dl.k8s.io\/release\/stable.txt\">https:\/\/dl.k8s.io\/release\/stable.txt<\/a>)\/bin\/linux\/amd64\/kubectl\"<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>install<\/code>&nbsp;<code>-o root -g root -m 0755 kubectl \/usr\/local\/bin\/kubectl<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Finally we can deploy the AWX container via awx-operator. Make sure you exit from su, and back into the ubuntu user.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td class=\"has-text-align-left\" data-align=\"left\">1 \u2013&nbsp;<code>git clone https:\/\/github.com\/ansible\/awx-operator.git<\/code><br>2 \u2013&nbsp;<code>cd awx-operator\/<\/code><br>3 \u2013&nbsp;<code>git checkout 2.16.1 # Or whatever the latest version<\/code><br>4 \u2013&nbsp;<code>export NAMESPACE=ansible-awx<\/code><br>5 \u2013&nbsp;<code>make<\/code>&nbsp;<code>deploy<\/code><br>6 \u2013&nbsp;<code>kubectl create -f awx-demo.yml -n ansible-awx<\/code><\/td><td class=\"has-text-align-left\" data-align=\"left\"><code><\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">You can verify your pods and services as shown below.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">kubectl get pods -n ansible-awx<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">kubectl get svc -n ansible-awx<\/p>\n\n\n\n<figure class=\"wp-block-image is-resized\"><img decoding=\"async\" src=\"https:\/\/cloudsolvd.com\/wp-content\/uploads\/2024\/11\/image-7.png\" alt=\"\" class=\"wp-image-163\" style=\"aspect-ratio:8.844155844155845;width:681px;height:auto\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image is-resized\"><img decoding=\"async\" src=\"https:\/\/cloudsolvd.com\/wp-content\/uploads\/2024\/11\/image-8.png\" alt=\"\" class=\"wp-image-164\" style=\"aspect-ratio:13.382352941176471;width:910px;height:auto\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Lastly we need to open up awx to connections from outside of the ubuntu server.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">minikube service awx-demo-service \u2013url -n ansible-awx<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>kubectl port-forward service\/awx-demo-service<\/code>&nbsp;<code>-n ansible-awx --address 0.0.0.0 10445:80 &amp;<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Navigate to your browser on the IP address and port shown above:&nbsp;<a href=\"http:\/\/192.168.3.23:10445\/#\/login\" target=\"_blank\" rel=\"noopener\">http:\/\/192.168.3.23:10445\/#\/login<\/a><\/p>\n\n\n\n<figure class=\"wp-block-image is-resized\"><img decoding=\"async\" src=\"https:\/\/cloudsolvd.com\/wp-content\/uploads\/2024\/11\/image-9-1024x602.png\" alt=\"\" class=\"wp-image-165\" style=\"aspect-ratio:1.7009966777408638;width:1024px;height:auto\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">You should see the above screen. the username is \u201cadmin\u201d and to get your password, run the command below.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>kubectl get secret awx-demo-admin-password -o jsonpath=\"{.data.password}\"<\/code>&nbsp;<code>-n ansible-awx | base64<\/code>&nbsp;<code>--decode; echo<\/code><\/p>\n\n\n\n<figure class=\"wp-block-image is-resized\"><img decoding=\"async\" src=\"https:\/\/cloudsolvd.com\/wp-content\/uploads\/2024\/11\/image-10.png\" alt=\"\" class=\"wp-image-166\" style=\"aspect-ratio:20.568181818181817;width:905px;height:auto\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">And that\u2019s it.<\/p>\n\n\n\n<figure class=\"wp-block-image is-resized\"><img decoding=\"async\" src=\"https:\/\/cloudsolvd.com\/wp-content\/uploads\/2024\/11\/image-11-1024x479.png\" alt=\"\" class=\"wp-image-167\" style=\"aspect-ratio:2.137787056367432;width:1024px;height:auto\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">AWX is up and running and ready to start automating jobs!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>AWX is an open-source alternative to Red Hat Tower (Ansible Automation Platform). I\u2019ve used both pretty extensively in the past, and since AWX is essentially free, I\u2019ll be covering that product in the next few blogs. AWX is very useful for automating application creation for load balancers. There are a few components that will be&#8230;<\/p>\n","protected":false},"author":1,"featured_media":9,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-15","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/cloudsolvd.com\/index.php?rest_route=\/wp\/v2\/posts\/15","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cloudsolvd.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/cloudsolvd.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/cloudsolvd.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/cloudsolvd.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=15"}],"version-history":[{"count":2,"href":"https:\/\/cloudsolvd.com\/index.php?rest_route=\/wp\/v2\/posts\/15\/revisions"}],"predecessor-version":[{"id":36,"href":"https:\/\/cloudsolvd.com\/index.php?rest_route=\/wp\/v2\/posts\/15\/revisions\/36"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/cloudsolvd.com\/index.php?rest_route=\/wp\/v2\/media\/9"}],"wp:attachment":[{"href":"https:\/\/cloudsolvd.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=15"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cloudsolvd.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=15"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cloudsolvd.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=15"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}