{"id":6,"date":"2024-08-21T18:14:50","date_gmt":"2024-08-21T18:14:50","guid":{"rendered":"https:\/\/asimali.com\/wp\/?p=6"},"modified":"2025-09-25T16:29:08","modified_gmt":"2025-09-25T16:29:08","slug":"ansible-awx-on-rocky-linux-9","status":"publish","type":"post","link":"https:\/\/asimali.com\/wp\/2024\/08\/21\/ansible-awx-on-rocky-linux-9\/","title":{"rendered":"Ansible AWX on Rocky Linux 9"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">For this article, I install a virtual machine with Rocky Linux 9.4 with hardware of 4CPU, 8GB of RAM and 40GB of hard drive space.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Lets update and install some packages.<\/p>\n\n\n\n<pre class=\"wp-block-code has-base-2-color has-contrast-background-color has-text-color has-background has-link-color wp-elements-fa51034ed21676c1e40aafeb03f81f1a\" style=\"padding-top:var(--wp--preset--spacing--10);padding-bottom:var(--wp--preset--spacing--10)\"><code>dnf -y install git curl make tar wget\n<code>dnf -y update<\/code><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Disable Selinux and firewall. Firewall we can enable later on.<\/p>\n\n\n\n<pre class=\"wp-block-code has-base-2-color has-contrast-background-color has-text-color has-background has-link-color wp-elements-a86993cefd3eecde4b5cf96f17bcf38d\" style=\"padding-top:0;padding-right:0;padding-bottom:0;padding-left:0\"><code>    sudo setenforce 0\n    sudo sed -i 's\/^SELINUX=.*\/SELINUX=permissive\/g' \/etc\/selinux\/config\n    cat \/etc\/selinux\/config | grep SELINUX=\n\n    sudo systemctl disable firewalld --now<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Install Kubernetes by running:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For latest version (Sep 2025): use this:<\/p>\n\n\n\n<pre class=\"wp-block-code has-base-2-color has-contrast-background-color has-text-color has-background has-link-color wp-elements-2086297269bfa21ab428c41b5b812bd0\" style=\"padding-top:0;padding-bottom:0\"><code>curl -sfL https:\/\/get.k3s.io | INSTALL_K3S_VERSION=v1.33.5+k3s1 sh -s - server --write-kubeconfig-mode 666<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">For latest version (as of March 2025): use this:<\/p>\n\n\n\n<pre class=\"wp-block-code has-base-2-color has-contrast-background-color has-text-color has-background has-link-color wp-elements-1bf274db9b744b8c221814e6bffd5849\" style=\"padding-top:0;padding-bottom:0\"><code>curl -sfL https:\/\/get.k3s.io | INSTALL_K3S_VERSION=v1.31.6+k3s1 sh -s - server --write-kubeconfig-mode 666<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">or for previous stable version use:<\/p>\n\n\n\n<pre class=\"wp-block-code has-base-2-color has-contrast-background-color has-text-color has-background has-link-color wp-elements-aee0612c08d48b33252339d0cca0a8d4\" style=\"padding-top:0;padding-bottom:0\"><code>curl -sfL https:\/\/get.k3s.io | INSTALL_K3S_VERSION=v1.29.7+k3s1 sh -s - server --write-kubeconfig-mode 666<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Check to see if the k3s cluster is running:<\/p>\n\n\n\n<pre class=\"wp-block-code has-base-2-color has-contrast-background-color has-text-color has-background has-link-color wp-elements-0180e26d436862d3895d1e920993147c\" style=\"padding-top:0;padding-bottom:0\"><code>kubectl get nodes\n\nNAME   STATUS   ROLES                  AGE     VERSION\nawx    Ready    control-plane,master   2m51s   v1.33.5+k3s1<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Clone awx-operator<\/p>\n\n\n\n<pre class=\"wp-block-code has-base-2-color has-contrast-background-color has-text-color has-background has-link-color wp-elements-c29c72e94ac4dc2f369ce6f4fd1408a6\" style=\"padding-top:0;padding-bottom:0\"><code>  cd \/opt\n  git clone https:\/\/github.com\/ansible\/awx-operator.git\n  cd \/opt\/awx-operator\n  git checkout 2.19.1\n  export NAMESPACE=awx\n  make deploy\n     \nnamespace\/awx created\ncustomresourcedefinition.apiextensions.k8s.io\/awxbackups.awx.ansible.com created\ncustomresourcedefinition.apiextensions.k8s.io\/awxmeshingresses.awx.ansible.com created\ncustomresourcedefinition.apiextensions.k8s.io\/awxrestores.awx.ansible.com created\ncustomresourcedefinition.apiextensions.k8s.io\/awxs.awx.ansible.com created\nserviceaccount\/awx-operator-controller-manager created\nrole.rbac.authorization.k8s.io\/awx-operator-awx-manager-role created\nrole.rbac.authorization.k8s.io\/awx-operator-leader-election-role created\nclusterrole.rbac.authorization.k8s.io\/awx-operator-metrics-reader created\nclusterrole.rbac.authorization.k8s.io\/awx-operator-proxy-role created\nrolebinding.rbac.authorization.k8s.io\/awx-operator-awx-manager-rolebinding created\nrolebinding.rbac.authorization.k8s.io\/awx-operator-leader-election-rolebinding created\nclusterrolebinding.rbac.authorization.k8s.io\/awx-operator-proxy-rolebinding created\nconfigmap\/awx-operator-awx-manager-config created\nservice\/awx-operator-controller-manager-metrics-service created\ndeployment.apps\/awx-operator-controller-manager created\n\n<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code has-base-2-color has-contrast-background-color has-text-color has-background has-link-color wp-elements-340526856a0f2fc05da88c72ed5f1d8d\" style=\"padding-top:0;padding-bottom:0\"><code>\nkubectl get pods -n $NAMESPACE\n                                                READY   STATUS  RESTARTS   AGE\nawx-operator-controller-manager-7875f768df-54kxh   1\/2  Running     0      35s\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Let&#8217;s install AWX<\/p>\n\n\n\n<pre class=\"wp-block-code has-base-2-color has-contrast-background-color has-text-color has-background has-link-color wp-elements-4196acbfb3604d52cf6cae573785e14c\" style=\"padding-top:0;padding-bottom:0\"><code>cp awx-demo.yml awx.yml\nvi awx.yml<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">When you edit awx.yml, just change the -&gt; name: awx<\/p>\n\n\n\n<pre class=\"wp-block-code has-base-2-color has-contrast-background-color has-text-color has-background has-link-color wp-elements-510b44735679a0955e8ebee2211fc1bf\" style=\"padding-top:0;padding-bottom:0\"><code>kubectl config set-context --current --namespace=$NAMESPACE\nkubectl apply -f awx.yml\nkubectl logs -f deployments\/awx-operator-controller-manager -c awx-manager<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">It can take 5min for the above to complete, so please be patient.<\/p>\n\n\n\n<pre class=\"wp-block-code alignwide has-base-2-color has-contrast-background-color has-text-color has-background has-link-color wp-elements-4a5481116c41521255a6380e240a4801\" style=\"padding-top:0;padding-right:var(--wp--preset--spacing--10);padding-bottom:0;padding-left:var(--wp--preset--spacing--10)\"><code>kubectl get pods -l \"app.kubernetes.io\/managed-by=awx-operator\"\n\n\nNAME                         READY   STATUS      RESTARTS   AGE\nawx-migration-24.6.0-8b4qf   0\/1     Completed   0          4m39s\nawx-postgres-15-0            1\/1     Running     0          6m20s\nawx-task-65f6558f5b-4lnjk    4\/4     Running     0          5m40s\nawx-web-5bf564fdff-78zck     3\/3     Running     0          5m41s\n\n&#91;root@awx ~]# kubectl get svc -n awx\n\nNAME                                              TYPE        CLUSTER-IP    EXTERNAL-IP   PORT(S)    AGE\nawx-operator-controller-manager-metrics-service   ClusterIP   10.43.196.241   &lt;none&gt;      8443\/TCP   26m\nawx-postgres-15                                   ClusterIP   None            &lt;none&gt;      5432\/TCP   24m\nawx-service                                       NodePort    10.43.238.44    &lt;none&gt;    80:30414\/TCP 24m<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Use the following command to retrieve the default admin password<\/p>\n\n\n\n<pre class=\"wp-block-code has-base-2-color has-contrast-background-color has-text-color has-background has-link-color wp-elements-9b83cff78aa612a168f93dda335def37\" style=\"padding-top:0;padding-bottom:0\"><code>kubectl -n awx get secret awx-admin-password -o jsonpath=\"{.data.password}\" | base64 --decode; echo\n\n5hurN4J1TJDZMgOEBOazrq4Kn5vmyfG1<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Try to login: <a href=\"http:\/\/192.168.1.3:30414\/#\/login\">http:\/\/hostname:30414\/#\/login<\/a><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"441\" src=\"https:\/\/asimali.com\/wp\/wp-content\/uploads\/2024\/08\/aws-login-page-1024x441.png\" alt=\"\" class=\"wp-image-71\" srcset=\"https:\/\/asimali.com\/wp\/wp-content\/uploads\/2024\/08\/aws-login-page-1024x441.png 1024w, https:\/\/asimali.com\/wp\/wp-content\/uploads\/2024\/08\/aws-login-page-300x129.png 300w, https:\/\/asimali.com\/wp\/wp-content\/uploads\/2024\/08\/aws-login-page-768x330.png 768w, https:\/\/asimali.com\/wp\/wp-content\/uploads\/2024\/08\/aws-login-page-1536x661.png 1536w, https:\/\/asimali.com\/wp\/wp-content\/uploads\/2024\/08\/aws-login-page.png 1590w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Enable Firewall ports:<\/p>\n\n\n\n<pre class=\"wp-block-code has-base-2-color has-contrast-background-color has-text-color has-background has-link-color wp-elements-78384205dd688f6ec50d8fa642cc4ecc\" style=\"padding-top:0;padding-bottom:0\"><code>sudo systemctl enable firewalld --now\nfirewall-cmd --permanent --add-port=6443\/tcp #apiserver\nfirewall-cmd --permanent --zone=trusted --add-source=10.42.0.0\/16 #pods\nfirewall-cmd --permanent --zone=trusted --add-source=10.43.0.0\/16 #services\nfirewall-cmd --zone=public --add-port=30414\/tcp --permanent\nfirewall-cmd --reload<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Useful K3S Commands<\/p>\n\n\n\n<pre class=\"wp-block-code has-base-2-color has-contrast-background-color has-text-color has-background has-link-color wp-elements-eb922ec6284f0e1cca834e6ef6b01394\"><code>\/usr\/local\/bin\/k3s-killall.sh\n\nkubectl get all\n\nawx-manage changepassword admin<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>For this article, I install a virtual machine with Rocky Linux 9.4 with hardware of 4CPU, 8GB of RAM and 40GB of hard drive space. Lets update and install some packages. Disable Selinux and firewall. Firewall we can enable later on. Install Kubernetes by running: For latest version (Sep 2025): use this: For latest version [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4,3],"tags":[6,7],"class_list":["post-6","post","type-post","status-publish","format-standard","hentry","category-ansible","category-awx","tag-ansible","tag-awx"],"_links":{"self":[{"href":"https:\/\/asimali.com\/wp\/wp-json\/wp\/v2\/posts\/6","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/asimali.com\/wp\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/asimali.com\/wp\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/asimali.com\/wp\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/asimali.com\/wp\/wp-json\/wp\/v2\/comments?post=6"}],"version-history":[{"count":35,"href":"https:\/\/asimali.com\/wp\/wp-json\/wp\/v2\/posts\/6\/revisions"}],"predecessor-version":[{"id":232,"href":"https:\/\/asimali.com\/wp\/wp-json\/wp\/v2\/posts\/6\/revisions\/232"}],"wp:attachment":[{"href":"https:\/\/asimali.com\/wp\/wp-json\/wp\/v2\/media?parent=6"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/asimali.com\/wp\/wp-json\/wp\/v2\/categories?post=6"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/asimali.com\/wp\/wp-json\/wp\/v2\/tags?post=6"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}