一 背景
Ansible 作为近几年比较流行的自动化运维工具,由于简单、无侵入性,受到许多运维甚至开发同学的喜爱。大多数情况下,运维人员是喜欢直接在终端命令行下编写和执行playbook/role。
但这样会有三个问题:一个是Playbook不好管理,二是任务定义不直观,三是不便于协作。有什么办法可以解决这些问题?下面就一起来看看四个Ansible Web UI,哪个是我们最想要的。
二 简介
Semaphore旨在提供一个简洁而高质量的代码库,并为用户提供一个直观的界面来管理和运行Ansible剧本。Ansible是一种自动化工具,用于对远程计算机进行配置、部署和编排。Semaphore通过提供一个易于使用的界面,简化了Ansible剧本的管理和执行过程。
作为一个开源项目,Semaphore允许用户根据自己的需求进行定制和扩展。您可以根据需要调整和修改代码,以适应特定的环境和工作流程。此外,Semaphore还提供了丰富的文档和社区支持,以帮助用户更好地理解和使用该工具。
三 特性
- 构建、部署和轻松的实现回滚;
- 对playbook进行以项目维度的分组;
- 管理环境、清单列表、仓库、和访问密钥;
- 在浏览器运行palybooks;
- 周期性运行playbooks;
- 任何时间查看playbook详细的日志;
- 将playbook委托给其他用户;
- 获取playbook运行的通知;
四 部署
shell
# docker部署
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum clean all && yum makecache fast
yum -y install docker-ce
systemctl start docker
docker run -p 3000:3000 --name semaphore -e SEMAPHORE_DB_DIALECT=bolt -e SEMAPHORE_ADMIN=admin -e SEMAPHORE_ADMIN_PASSWORD=WWWxxxxxcom -e SEMAPHORE_ADMIN_NAME=Admin -e SEMAPHORE_ADMIN_EMAIL=admin@localhost -d semaphoreui/semaphore:latest
五 使用
5.1 项目
项目是分离管理活动的地方。所有活动都发生在项目的上下文中。项目彼此独立,因此您可以使用它们在单个信号量安装中组织不相关的系统。这对于管理不同的团队、基础设施、环境或应用程序非常有用。
5.2 任务模版
模板定义了如何运行Ansible Playbook。模板允许您指定以下参数:
- Playbook repository
- Playbook filename
- Inventory
- Environment
- Vault password file
- Extra CLI arguments
- and much more
5.3 task
任务是启动一个Ansible剧本的实例。您可以通过单击所需模板的Run/Build/Deploy按钮,从task Template创建任务。
Deploy任务类型允许您指定与任务关联的构建版本。默认情况下,它是最新的构建版本。
当任务正在运行或已完成时,您可以查看任务状态和运行日志。
5.4 密钥存储
Semaphore中的Key Store用于存储访问远程存储库、访问远程主机、sudo凭据和Ansible保险库密码的凭据。 在设置其他资源(如库存、存储库和任务模板)之前配置所有必需的访问键是很有帮助的,这样您以后就不必编辑它们了。
有ssh/用户名密码/PAT模式等。
六 实战
由于semaphoreui需要clone ansible代码,代码存储在github,因此利用香港服务器部署semapphoreui
6.1 存储role 的仓库
6.2 创建
6.2.1 创建环境
环境对应着ansible 中不同的inventory,也就是部署的目标主机,可以对目标主机进行分组。
6.2.2 环境配置
额外的变量
6.2.3 密钥库
密钥库对应拉取git 仓库或登陆目标主机使用的用户名密码验证,抑或是密钥验证
6.2.4 存储库
存储库为存储ansible role的代码仓库地址
6.2.5 任务模版
git仓库:github.com/semaphoreui...
- ping 模版
- build
- deploy
6.3 添加免密钥并执行
在semaphoreui主机上进行登陆,输入yes后保存主机指纹,或者修改ansible 配置文件,添加 host_key_checking = False
总结
利用Semaphoreui可以轻松的实现 ansible gitops中playbook的快速分发部署,可以管理git仓库及目标服务器登陆密钥或密码,可以配置多环境多视图实现自动化管理。