文章目录
awx介绍
什么是AWX?
AWX(Ansible Web eXecutable)是Ansible的一个开源项目,它提供了一个基于Web的用户界面和REST API,用于简化和管理Ansible的自动化任务。AWX使得用户能够通过图形界面方便地操作和控制Ansible的运行,特别适合那些不熟悉命令行操作或者希望集中管理多个Ansible项目的团队和个人。
简而言之,AWX是Ansible Tower的开源版本。Ansible Tower是Red Hat对AWX的商业化产品,AWX作为其开源基础版本,仍然能够提供大部分强大的功能,适合小型团队或开发人员使用。
AWX的核心功能
AWX的核心功能包括:
Web UI(用户界面):
提供一个图形化界面,让用户能够方便地管理、运行、调度和监控Ansible任务。
用户可以创建和管理项目、库存、模板等,支持通过浏览器轻松访问。
REST API:
AWX为开发人员提供了丰富的RESTful API接口,用户可以通过API进行操作、集成和自动化任务,适合与其他工具和系统进行集成。
工作流管理:
支持定义复杂的自动化工作流,可以将多个Ansible Playbook任务串联起来执行,简化复杂任务的自动化。
调度任务:
允许用户设置任务的自动化执行时间表,例如定时运行某些Playbook。
权限控制与多租户支持:
支持基于角色的访问控制(RBAC),用户可以根据权限分配不同的访问级别,保障系统的安全性。
支持多租户功能,使得不同的团队可以共享同一个AWX实例,互不干扰。
集成管理:
AWX支持与其他系统(如源代码管理工具Git、容器平台等)集成,便于管理和协调多种环境下的自动化任务。
实时日志和监控:
在Web UI中,用户可以实时查看Ansible任务的执行日志,帮助快速定位问题。
提供任务的历史记录查询,方便进行后续审计。
AWX与Ansible Tower的区别
AWX和Ansible Tower有很多相似之处,主要的区别在于:
开源与商业化: AWX是完全开源的,而Ansible Tower是Red Hat提供的商业产品,需要付费购买。
功能支持: Ansible Tower提供了一些AWX没有的高级功能,如更复杂的报告、支持企业级认证、服务级别协议(SLA)、更细粒度的监控和支持等。
对于大部分小型团队或开发者来说,AWX已经足够强大,能够满足日常的自动化管理需求。如果需要更高级的企业支持或者更复杂的管理功能,可以考虑使用Ansible Tower。
AWX的优势
开源与免费: AWX是完全免费的开源工具,不需要购买许可证。
强大的功能: 它继承了Ansible强大的自动化功能,集成了Web UI、API和工作流等,适合大多数自动化需求。
灵活的扩展性: 通过API和插件机制,可以轻松与其他工具和系统集成,进行更加复杂的自动化任务。
多用户和多团队支持: AWX提供了基于角色的访问控制(RBAC),支持多租户环境,能够满足企业的需求。
AWX的应用场景
IT运维: AWX能够帮助运维团队自动化日常的服务器配置、应用部署、系统监控等任务。
开发与测试: 开发团队可以通过AWX快速部署开发环境,执行自动化测试,确保软件质量。
多环境管理: AWX适用于多环境的自动化任务管理,可以管理开发、测试、生产等不同环境下的自动化作业。
CI/CD集成: AWX可以作为持续集成和持续部署(CI/CD)流程的一部分,与GitLab、Jenkins等工具配合,简化软件发布过程。
环境
虚拟机
Ip | 主机名 | cpu | 内存 | 硬盘 |
---|---|---|---|---|
192.168.10.11 | master01 | 2cpu双核 | 4G | 100G |
192.168.10.12 | worker01 | 2cpu双核 | 4G | 100G |
192.168.10.13 | worker02 | 2cpu双核 | 4G | 100G |
版本 rocky9.2
已部署k8s-1.28.2
部署过程
一、安装helm
1.安装helm
wget https://get.helm.sh/helm-v3.13.2-linux-amd64.tar.gz
tar xf helm-v3.13.2-linux-amd64.tar.gz
mv linux-amd64/helm /usr/bin/
helm version
2.添加awx仓库
helm repo add awx-operator https://ansible-community.github.io/awx-operator-helm/
二、部署awx
1.部署awx-operator
helm install my-awx-operator awx-operator/awx-operator -n awx --create-namespace
helm list -n awx
查看pod
kubectl get pod -n awx
2.部署awx-demo
vim awx.yaml
apiVersion: awx.ansible.com/v1beta1
kind: AWX
metadata:
name: awx-demo
namespace: awx
spec:
service_type: nodeport
然后apply
kubectl apply -f awx.yaml
kubectl get pod -n awx
八成会pending,describe会发现是因为没有pv,创建一个pv即可(报错信息0/3)
kubectl describe pod -n awx awx-demo-postgres-15-0
vim pv.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: postgres-15-awx-demo-postgres-15-0-pv
labels:
app.kubernetes.io/component: database
app.kubernetes.io/instance: postgres-15-awx-demo
app.kubernetes.io/managed-by: awx-operator
app.kubernetes.io/name: postgres-15
spec:
capacity:
storage: 8Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
volumeMode: Filesystem
hostPath:
path: /var/lib/pgsql/data # 可根据实际存储路径调整
claimRef:
namespace: awx
name: postgres-15-awx-demo-postgres-15-0 # PVC 的名称
然后apply
kubectl apply -f pv.yaml
看pv和pvc状态(都是Bound就对了,如果不是翻到最后看常见故障1)
kubectl get pvc -n awx
kubectl get pv -n awx
然后就会发现还在报错,但报错信息变了
kubectl describe pod -n awx awx-demo-postgres-15-0
我当初就是卡这里了,然后在闲鱼花了49请大佬看了看,发现是权限的问题
看这个pod调度到哪个节点了
kubectl get pod -n awx -o wide
现在pod状态不固定,反正不是running
然后到k8s-worker01上
mkdir -p /var/lib/pgsql/data
chmod 777 -R /var/lib/pgsql/
然后等(要是一直不变翻到最后看常见故障2)
kubectl get pod -n awx
然后看svc
kubectl get svc -n awx
可以看到nodeport模式对外发布的是32499端口
3.浏览器访问
我ip是192.168.10.11 根据自己ip来
http://192.168.10.11:32499/
然后找密码
kubectl get secret -n awx
kubectl -n awx get secret awx-demo-admin-password -o jsonpath="{.data.password}" | base64 --decode ; echo
输出的就是密码
账号是admin
登录即可,根据自己的来
我这里是
gD6Y0fwIQGzs9gypamulaJh86lIG7F0L
然后就进来了
常见故障
1.pv和pvc没自动绑定
如果是pvc一直pending,删除后重新创建
kubectl delete pvc -n awx postgres-15-awx-demo-postgres-15-0
写一个pvc的yaml文件,强制绑定到pv
vim pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: postgres-15-awx-demo-postgres-15-0
namespace: awx
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 8Gi
volumeName: postgres-15-awx-demo-postgres-15-0-pv # 强制指定 PV
然后apply
kubectl apply -f pvc.yaml
应该就好了
2.给了权限后,awx-demo一直不变
删了重新安就行
kubectl delete -f awx.yaml
helm uninstall my-awx-operator -n awx
helm install my-awx-operator awx-operator/awx-operator -n awx --create-namespace
kubectl apply -f awx.yaml
还有别的错误私信我,有空会看
总结
AWX作为Ansible的开源Web界面,提供了强大而易于管理的自动化解决方案。无论是在小型团队还是企业级环境中,AWX都能有效地帮助用户简化Ansible的管理和使用。通过Web UI和REST API,用户能够更加高效地调度任务、管理工作流并监控自动化进程,是一个非常适合DevOps实践的工具。如果你还没有尝试过AWX,不妨开始部署并使用它来提升自动化运维的效率。