推荐一个神奇的开源工具:Bork

推荐一个神奇的开源工具:Bork

Bork - 跨平台配置管理的瑞士军刀

Bork 是一款基于 Bash 的声明式配置管理DSL,它将“sh”重新融入IT,让人不禁想起经典的《瑞典厨师》(Swedish Chef)形象。虽然该项目不再处于活跃开发状态,但它的精神依然存在于一些热情的分支中。

深入理解Bork

Bork的核心是一个用于系统状态声明的Bash函数——ok。这个函数允许我们以非侵入性的方式描述系统应处的状态,而不是直接编写执行操作的命令。它针对Bash 3.2和诸如sed、awk和grep等常见的Unix工具设计,并能在任何UNIX基础的系统上运行,甚至能感知BSD和GPL版本的工具差异。

知名活性分支:

安装与使用

从源代码安装

  1. 将仓库克隆到 /usr/local/src/bork

    git clone https://github.com/mattly/bork /usr/local/src/bork
    
  2. 创建软链接到你的路径:

    ln -sf /usr/local/src/bork/bin/bork /usr/local/bin/bork
    

使用Homebrew(Mac OS X)

  1. 通过Homebrew安装:
    brew install bork
    

功能一览

Bork 提供了多种操作方式:

  • 检查:针对单个命令进行状态查询。
  • 编译:将配置文件编译为独立脚本输出到STDOUT。
  • 执行:对单个命令进行满足操作。
  • 满足:尽可能使配置文件中的条件得到满足。
  • 状态:检测配置文件条件是否已满足。
  • 类型:列出可用的类型及其使用信息。

让我们更详细地了解这些功能:

声明与配置文件

Bork使用ok函数进行声明,它接受一个类型和一些参数。然后调用该类型的处理函数,根据动作如statusinstallupgrade来测试声明或者更新系统。内置了许多类型,并且扩展自定义类型也很简单。

示例配置:

ok brew                                       # 检查Homebrew是否存在并更新
ok brew git                                   # 检查Homebrew下的git包是否存在并更新
ok directory $HOME/code                       # 确保~/code目录存在
ok github $HOME/code/dotfiles mattly/dotfiles # 确保git仓库在 ~/code/dotfiles 并同步远程
cd $HOME
for file in $HOME/code/dotfiles/configs/.[!.]*
do
  ok symlink "$(basename $file)" $file       # 确保~下有一个点开头的符号链接指向文件
done

运行后,Bork会检查每个ok声明,并根据需要进行安装、升级或者调整配置。

声明类型

要查看所有声明类型和其用法信息,只需运行 bork types

内置类型概览

包括但不限于:

  • 通用声明

    check: 执行给定的命令,返回值为0则认为成功
    
  • 文件系统

    directory: 检查目录是否存在
    file: 验证文件的存在、校验和、所有权和权限
    download: 根据http(s) URL比较文件的存在
    symlink: 检查符号链接的存在和目标
    
  • 源码控制

    git: 检查Git仓库的状态
    github: 专为GitHub的git类型,使用GitHub URL
    
  • 语言包管理器

    gem: 验证Ruby环境下的gem是否存在
    npm: 检查全局Node.js模块
    pip: 检查pip安装的Python包
    pipsi: 验证pipsi或由pipsi安装的包
    apm: 检查Atom包
    go-get: 检查Go包
    
  • Mac OS X特定

    brew: 检查Homebrew软件包
    brew-tap: 检查Homebrew配方库,不验证tap的更新
    cask: 检查Mac OS X上的Caskroom应用
    defaults: 验证OS X的'defaults'设置
    mas: 通过mas工具验证App Store应用
    scutil: 通过scutil验证Mac机器名
    
  • Linux特定

    apt: 检查Debian或Ubuntu的apt软件包
    yum: 检查CentOS或RedHat的yum软件包
    zypper: 检查SUSE的zypper软件包
    
  • 用户管理

    group: 验证Unix组是否存在
    user: 验证系统用户存在
    
  • Unix工具

    iptables: 验证iptables规则
    

运行时操作

主要的操作有:

  • status:报告配置文件中声明的状态。
  • satisfy:检查并尝试满足配置文件中的声明。
  • compile:将配置文件编译成独立脚本。
  • check:仅针对单个声明进行状态检查。
  • do:针对单个声明进行满足操作。

实战体验

  • bork status myconfig.sh:报告每个声明的状态,无需改变系统状态。
  • bork check ok github mattly/dotfiles:仅针对单一声明进行状态检查。
  • bork satisfy myconfig.sh:检查所有声明,不满意的地方尝试进行操作。
  • bork do ok github mattly/dotfiles:对单一声明进行满足操作。
  • bork compile myconfig.sh:输出一个独立的shell脚本,无需依赖Bork运行。

结论

Bork 不再更新,但它留下了一种创新的方法去管理和维护你的系统状态,尤其是在旧版Unix环境中。尽管可能需要寻找其他替代品,但Bork的理念和设计仍然值得借鉴和学习。如果你对Shell编程感兴趣,或是正在寻找一种轻量级的跨平台配置管理工具,那么Bork是一个值得一试的选择。

  • 30
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
大模型安全评估测试题大模型安全评估测试题关键词库生成内容测试题库应拒答测试题库非拒答测试题大模型安全评估测试题大模型安全评估测试题关键词库生成内容测试题库应拒答测试题库非拒答测试题大模型安全评估测试题大模型安全评估测试题关键词库生成内容测试题库应拒答测试题库非拒答测试题大模型安全评估测试题大模型安全评估测试题关键词库生成内容测试题库应拒答测试题库非拒答测试题大模型安全评估测试题大模型安全评估测试题关键词库生成内容测试题库应拒答测试题库非拒答测试题大模型安全评估测试题大模型安全评估测试题关键词库生成内容测试题库应拒答测试题库非拒答测试题大模型安全评估测试题大模型安全评估测试题关键词库生成内容测试题库应拒答测试题库非拒答测试题大模型安全评估测试题大模型安全评估测试题关键词库生成内容测试题库应拒答测试题库非拒答测试题大模型安全评估测试题大模型安全评估测试题关键词库生成内容测试题库应拒答测试题库非拒答测试题大模型安全评估测试题大模型安全评估测试题关键词库生成内容测试题库应拒答测试题库非拒答测试题大模型安全评估测试题大模型安全评估测试题关键词库生成内容测试题库应拒答测试题库非拒答测试题大模型安全
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

劳治亮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值