跳转到主要内容

一个简单的配置工具

项目描述

Prvsn
=================

`prvsn`是一个简单的配置工具。

它可以配置Linux和mac,无论是本地还是远程。

[![Build](https://travis-ci.org/acoomans/prvsn.svg?branch=master)](https://travis-ci.org/acoomans/prvsn)
[![Pypi版本](http://img.shields.io/pypi/v/prvsn.svg)](https://pypi.python.org/pypi/prvsn)
[![Pypi许可证](http://img.shields.io/pypi/l/prvsn.svg)](https://pypi.python.org/pypi/prvsn)
![Python 2](http://img.shields.io/badge/python-2-blue.svg)
![Python 3](http://img.shields.io/badge/python-3-blue.svg)

![截图](documentation/screenshot.png)


## 动机

这个工具的动机是为了跟踪配置步骤,并且能够快速且最小化努力地重建一个小型设置(例如,树莓派)。

### 目标

易于快速设置用于黑客攻击的机器

- 容易配置单个机器
- 在Python中工作
- 简单的方式
- 添加文件,可能是模板
- 安装软件包
- 在bash中运行命令
- 即插即用
- Python 2.7 & 3兼容性
- 无外部依赖

### 非目标

大规模配置

- 配置数千或更多机器
- 严格依赖,复杂的依赖图
- 外部食谱和超市/存储支持

如果这些是你的目标,请查看Puppet或Chef或其他。


## 安装

### 安装

从PyPi

pip install prvsn

从GitHub

git clone git@github.com:acoomans/prvsn.git
cd prvsn
python setup.py install

或开发时使用

python setup.py develop


## 使用

### 层次

配置称为`roles`,并组成了一个`runbook`。

文件层次结构如下所示

runbook
|- roles
|- web
|- ...
|- desktop
|- main.py
|- files


- `main.py`是主要的Python入口点
- `files`用于包含您想要使用的任何文件

### 任务

角色的 `main.py` 可以包含一个或多个 `tasks`(也称为 `states`,因为它们主要是描述性的)。

常见的任务选项包括

- `secure`: 控制台和日志中不会显示任何输出。


#### 命令任务

`command(interpreter, cmd)`

`bash(cmd)`

在 bash 中运行一些代码。希望这种情况永远不会发生。

bash('echo "hello"')

bash('''
echo "hello"
ls
ps
''')

`ruby(cmd)`

在 ruby 中运行一些代码。


### 文件扩展名处理任务

`file_handler`(仅限 mac)

将应用程序与文件扩展名关联。

file_handler('.txt', 'com.macromates.TextMate')

可以使用以下命令查找应用程序的标识符

mdls -name kMDItemCFBundleIdentifier -r /Applications/TextMate.app



#### 文件任务

`file(source, file, replacements={})`

`source` 可以是一个 URL 或相对于角色 `files` 目录的文件路径。

file('asound.conf', '/etc/asound.conf')

file(
'http://example.com/asound.conf',
'/etc/asound.conf')
)

可以指定替换规则,因此文件充当模板。

file(
'resolv.conf',
'/etc/resolv.conf',
{
'MYIPADDRESS': '192.168.0.1'
}
)

### 主机名任务

`hostname`

hostname('my_machine')

#### 内核任务

`module(name)`(仅限 linux)

添加和加载一个模块。

module('v4l')

#### 软件包任务

`package`

应自动检测存在的包管理器。
如果有多个管理器存在,可以明确指定使用哪个。

package('vim')

[for package(p) in '''
vim
emacs
'''.split()]

`homebrew_package`(仅限 mac)

`cask_package`(仅限 mac)

`mac_app_store`(仅限 mac)

mac_app_store('937984704')

可以使用以下命令查找应用程序标识符

mas search app_name


`apt_package`

`yum_package`


### 命令行

#### init

为新的运行手册创建层次结构。

prvsn init -b path/to/runbook

#### provision

未指定主机时的默认命令。为 `prvsn` 运行的机器提供。

prvsn provision -b path/to/runbook -r role1,role2

或者,如果从运行手册目录运行

prvsn -r role1,role2

可以使用 `--sudo` 以 root 用户提供。

#### package

使用运行手册和角色创建可执行包。默认包名为 `package.pyz`。

prvsn package -b path/to/runbook -r role1,role2 -o mypackage.pyz

然后可以单独运行该包

python mypackage.pyz

#### remote

指定主机时的默认命令。通过以下方式提供远程主机

1. 创建包
2. 通过 ssh 发送包
3. 通过 ssh 运行包

示例

prvsn remote -b path/to/runbook -r role1,role2 -n myhostname -u myuser

此外,ssh 公钥将安装到远程主机(如果没有密钥,将创建一个)。要禁用此行为,请使用 `--no-copy-keys`。

可以使用 `--sudo` 以 root 用户在远程主机上提供。

项目详情


下载文件

下载适用于您平台的应用程序。如果您不确定选择哪个,请了解有关 安装包 的更多信息。

源分发

prvsn-0.3.tar.gz (14.1 kB 查看哈希值)

上传时间

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面