andrelohmann.nodesource
nodesource
内容
使用此角色在您的 Ubuntu 服务器上从 nodesource 存储库安装 nodejs。
需求
此角色需要 Ubuntu 系统。
角色变量
默认的变量集定义了节点版本,最好在 group_vars/host_vars 中覆盖。
nodesource_nodejs_version: '20'
示例剧本
- hosts: nodesource
roles:
- { role: andrelohmann.nodesource }
角色开发
特殊目的
该存储库支持以下角色开发功能:
- yamllint
- ansible-lint
- molecule 测试
- github 操作
- 自动版本更新
- 更新 ansible-galaxy
- 显示构建状态
- 在 vagrant 中进行测试(用于开发目的)
- 与 molecule 测试(在 vagrant 内部或外部)
- 针对 Docker 容器测试
- 在 vscode 内部进行测试和开发
先决条件
- 安装 Virtualbox + Vagrant(仅在角色需与 vagrant 一起测试时需要)
- Docker Desktop
- Visual Studio Code + 远程扩展包(依赖项在 .vscode/extensions.json 中定义)
开发环境设置
此 ansible 角色使用 molecule 进行测试。开发基于 Visual Studio Code 和相关的开发容器,解决必要工具(ansible、linter、molecule)的所有依赖关系。
该角色将在三个 Ubuntu 容器上测试(bionic、focal、jammy)。
为了从开发容器中启动 molecule 测试容器,需要将 Docker 套接字绑定挂载到开发容器中。
重要文件和文件夹
.devcontainer
- 定义开发容器的 Dockerfile
- 配置开发容器启动(例如,绑定挂载 Docker 套接字)
molecule/default/Dockerfile.js
- 作为 molecule/default/molecule.yml 中所有平台的模板
- 准备支持 systemd 服务的环境(必要的一些 Ansible 角色依赖 systemd)
- 安装运行 Ansible 所需的所有依赖
- 文件的格式与 molecule/default/molecule.yml 中平台的属性对齐
- 欲了解更多信息,请查阅 molecule 文档
使用
Visual Studio Code
- 切换到您角色的根目录并启动 vscode
code .
- 在开发容器中,您可以使用以下运行命令
yamllint .
ansible-lint .
molecule create
molecule test
Vagrant + Virtualbox
- 切换到您角色的根目录
- 切换到 vagrant 文件夹
- 启动并进入 vagrant 机器
vagrant up
vagrant ssh
- 切换到角色文件夹
cd /etc/ansible/roles/ansible-role- [tab]
- 现在您可以运行所有测试
yamllint .
ansible-lint .
molecule create
molecule test
构建和发布流程
该 ansible 角色定义了一系列 GitHub 工作流用于运行 molecule 测试和发布管理。
发布管理需要一些设置。
保护主分支
- 设置 -> 分支 -> 添加分支保护规则
- 分支模式名称 -> main 或 master(取决于您的默认分支)
- 保护匹配的分支 -> 勾选 "合并前需要拉取请求"
- "需要批准" 可以根据需要单独处理
给 GITHUB_TOKEN 赋予读写权限
- 设置 -> 操作 -> 一般 -> 工作流权限 -> 读写权限
提交信息
提交信息应遵循特殊格式,以实现补丁、小版本或大版本的语义版本更新。
补丁
0.0.x
fix(single_word): 描述
小版本
0.x.0
feat(single_word): 描述
大版本
x.0.0
perf(single_word): 描述
BREAKING CHANGE: 描述破坏性更改
非常重要的是,在第二行及之后的行中提及 "BREAKING CHANGE: "。在单行提交信息中将忽略大版本更新。
添加 GALAXY_API_KEY 密钥
- 使用您的 GitHub 账户在 https://galaxy.ansible.com/ 进行身份验证。
- 从首选项 -> API 密钥 中获取 galaxy api 密钥
- 打开您的 GitHub 角色仓库
- 设置 -> 秘密和变量 -> 操作 -> 新仓库密钥
- 使用 "GALAXY_API_KEY" 作为密钥,复制的 galaxy API 密钥作为值
许可证
MIT
作者信息
© Andre Lohmann(及其他人)2023
https://github.com/andrelohmann
维护者联系方式
- Andre Lohmann <lohmann.andre (at) gmail (dot) com>