蚊章汇 - Clint Savage
type: channel
link: https://linuxcn.bwsl.wang/author/815/
description: Clint Savage
items: LinchPin：一个使用 Ansible 的简化的编配工具

LinchPin：一个使用 Ansible 的简化的编配工具
type: item
date: 2017-12-22T06:46:28+08:00
description: 2016 年末开始的 LinchPin，现在已经拥有一个 Python API 和一个成长中的社区。去年，我的团队公布了 LinchPin，这是一个使用 Ansible 的混合云 编配 orchestration 工具。 配给 provision 云资源从来没有这么容易便捷过。借助 Ansible 强力支持，LinchPin 专注于简化，使云资源让用户可以触手可及。在这篇文章中，我将介绍 LinchPin，并且去看看过去的 10 个月该项目是如何逐渐成熟。（LCTT 译注：关于 orchestration 应该翻译成惯例的“编排”还是“编配”，有个 @wffger 提出的建议 ，欢迎大家参与讨论。）LinchPin 刚出现的时候，使用 ansible-playbook 命令去运行 LinchPin ，虽然可以完成，但是还是很复杂的，LinchPin 现在有一个前端命令行用户界面（CLI），它是用 Click 写的，而且它使 LinchPin 比以前更简化。没有止步于 CLI，LinchPin 现在还有一个 Python API，它可以用于管理资源，比如，Amazon EC2 和 OpenStack 实例、网络、存储、安全组等等。这个 API 文档 可以在你想去尝试 LinchPin 的 Python API 时帮助你。Playbook 是一个库因为 LinchPin 的核心是 Ansible playbook，其角色、模块、过滤器，以及任何被称为 Ansible 模块的东西都被移进 LinchPin 库中，这意味着我们虽然可以直接调用 playbook，但它不是资源管理的首选机制。linchpin 可执行文件事实上已经成为该命令行的前端。深入了解命令行让我们深入了解 linchpin 命令行：$ linchpin Usage: linchpin [OPTIONS] COMMAND [ARGS]... linchpin: hybrid cloud orchestration Options: -c, --config PATH Path to config file -w, --workspace PATH Use the specified workspace if the familiar Jenkins $WORKSPACE environment variable is not set -v, --verbose Enable verbose output --version Prints the version and exits --creds-path PATH Use the specified credentials path if WORKSPACE environment variable is not set -h, --help Show this message and exit. Commands: init Initializes a linchpin project. up Provisions nodes from the given target(s) in... destroy Destroys nodes from the given target(s) in... 你可以立即看到一个简单的描述，以及命令的选项和参数。这个帮助的最下面的三个命令是本文的重点内容。配置文件之前有个名为 linchpin_config.yml 的文件。但现在这个文件没有了，替换它的是一个 ini 形式的配置文件，称为 linchpin.conf。虽然这个文件可以被修改或放到别的地方，它可以放置在配置文件容易找到的库路径中。在多数情况下，linchpin.conf 文件是不需要去修改的。工作空间 工作空间 workspace 是一个定义好的文件系统路径，它是一个逻辑上的资源组。一个工作空间可以认为是一个特定环境、服务组、或其它逻辑组的一个单点。它也可以是一个所有可管理资源的大的存储容器。工作空间可以在命令行上使用 --workspace （-w） 选项去指定，随后是工作空间路径。它也可以使用环境变量指定（比如，bash 中的 $WORKSPACE）。默认工作空间是当前目录。初始化 (linchpin init)运行 linchpin init 将生成一个需要的目录结构，以及一个 PinFile、topology、和 layout 文件的示例：$ export WORKSPACE=/tmp/workspace $ linchpin init PinFile and file structure created at /tmp/workspace $ cd /tmp/workspace/ $ tree . ├── …