grzegorznowak.nvm_node
Ansible NVM Node
在 Debian 和 Redhat 系统上通过 NVM 安装 Node.js。
安装
您可以选择:
ansible-galaxy install grzegorznowak.nvm_node
- 直接克隆代码库
免责声明
这是一个非常定制的 Node.js 安装,不依赖于 apt/yum 的功能,也没有遵循 推荐的 使用 NVM 的方式(参见 https://github.com/creationix/nvm/issues/1533)。此外,版本控制仅能通过 Ansible 实现。请确保您在此处提供的设置确实是您所需的。我认为这套方案适合 70% 的开发用途和 30% 的生产环境。如果您计划在单台服务器上有许多用户/角色使用它,那就 0% 可用——在这种状态下是无法正常工作的(尽管随着较少的额外调整,未来可能会有效)。
关键在于,它将 NVM 安装到全局路径,并将其符号链接回 /usr/local/bin
以便于访问,同时占用了全局 bashrc,以包含系统中每个用户的 NVM 路径。虽然这只是一个小问题,但打破了 NVM 作为每个用户工具的概念,并且在使用特定的非交互式 shell 时,可能无法完美运行。这可能会影响那些情况下 npm 安装软件包的使用。
__然而__,作为一个极好的工具,NVM 实际上是我们选择的工具,所以这就是我们所需要的,您可能也需要它!
要求
无依赖项,只需注意它会安装 wget
来获取 NVM 安装脚本。
支持的版本
目前支持以下发行版的构建和集成:
Ubuntu: 20.04, 18.04, 16.04, 14.04
Debian: buster, stretch
CentOS: 7
变量
默认值
nvm_install_script_version: "0.33.11" # 使用的 NVM 安装脚本(截至撰写时的最新稳定版本)
nvm_user_name: "root" # 您可以使用其他用户,最终可能实现更符合 NVM 的方法
# 但我没有在测试中涵盖这一点
nvm_dir: "/var/lib/nvm" # 全局(默认)安装。遵循与 nvm_user_name 变量相同的规则
nvm_node_version: "8.11.3" # 通过 NVM 安装的 Node.js 版本
nvm_install_globally: [] # 要全局安装和符号链接的库,详细信息见下文
示例剧本
从 GitHub 克隆的情况下
---
- hosts: all
vars:
nvm_node_version: "4.1.1"
roles:
- role: ansible-nvm-node
从 ansible-galaxy 获取的情况下
---
- hosts: all
vars:
nvm_node_version: "your.node.version"
roles:
- role: grzegorznowak.nvm_node
升级 Node.js
只需将 nvm_node_version
替换为您想要全局使用的版本,然后重新运行剧本。
安装全局包
为确保一致性,强烈建议您也使用此角色安装全局包,在这种情况下,只需编辑 nvm_install_globally
变量,如下所示:
nvm_install_globally: ['gulp']
也可以为全局包指定版本:
nvm_install_globally:
- name: yarn
version: 1.9.4
或混合使用两者:
nvm_install_globally:
- gulp
- lighthouse
- name: yarn
version: 1.9.4
这将安装列出的库,并在特定环境中为其提供全局 $PATH 的符号链接(如 cron)。
测试
要求
您可以使用一个帮助脚本来安装包含所有需要内容的虚拟环境
./bootstrap_test.sh
然后使用 source test_env/bin/activate
激活虚拟环境。
或者也可以完全手动操作,以获得更好的控制。
sudo apt install virtualenv python3-pip
virtualenv test_env --python=python3
source test_env/bin/activate
pip install -r test-requirements.txt
使用 LXC 容器进行测试
molecule test
Molecule 提供的额外功能
您可以执行各种超级便利的操作,比如使用 molecule converge
来随意启动实例,然后使用 molecule destroy
来销毁它们。这里真的是没有限制!
赞助
Kwiziq.com - 人工智能语言教育平台
Spottmedia.com - 技术设计、交付和咨询
作者信息
由 Grzegorz Nowak 带来,满怀爱意。