快速系统配置工具
项目描述
一个类似于netplan的sysplan apply命令。
概述
CLI配置
sysplan 自动化主机配置,需要root权限。如果您使用 pip install --user 安装sysplan,那么您需要运行
可选:安装 pygments 以进行语法高亮。
主机配置
sysplan 将解析 /etc/sysplan.d/*.yaml 以获取配置并执行Python或shell插件。
您可以使用 sysplan conf 来转储配置。
YAML模式
yaml配置的基本结构如下
plugin_name:
your-first-plan-name:
any: config
for:
- your plan
示例
git仓库的 sysplan.d.example 目录包含参考实现,您可以随意复制。
测试
您可以通过导出 SYSPLAN_D 环境变量来使用示例配置进行测试
export SYSPLAN_D=/path/to/git/clone/sysplan.d.example
SYSPLAN_ROOT 环境变量可以确保 sysplan 不会修改您的宿主
export SYSPLAN_ROOT=/tmp/test-sysplan-1
然后,您可以使用示例配置,例如
.. code-block:: shell
sudo -sE sysplan conf sudo -sE sysplan diff sudo -sE sysplan test sudo -sE sysplan apply sudo -sE sysplan testdestroy sudo -sE sysplan destroy
教程
基本和systemd
尝试将以下内容添加到 /etc/sysplan.d/example_systemd.yaml
services:
sysplan-test-service:
TEST_ENV_VAR: 2
Unit:
Description: Example Service
Service:
Type: oneshot
ExecStart: /bin/bash -c 'echo nice!'
WorkingDirectory: /tmp
timers:
sysplan-test-service:
Timer:
OnCalendar: '*-*-* 23:00:00'
mounts:
mnt-backups:
Unit:
Description: Mount NFS Share
Mount:
What: 172.24.0.5:/srv/backups
Where: /mnt/backups
Type: nfs
Options: defaults
TimeoutSec: 10
Install:
WantedBy: multi-user.target
然后,尝试以下命令
sysplan diff
sysplan apply
sysplan destroy
sysplan help
自定义bash模块
将以下内容添加到 /etc/sysplan.d/bash_example.yaml
bash_example.sh:
plan-one:
somevar: date
nested:
- item: /tmp/$plan_name
plan-two:
somevar: uname -a
将以下内容添加到 /etc/sysplan.d/bash_example.sh
write() {
$somevar > /tmp/$plan_name
cat /tmp/$plan_name
}
diff() {
if [ ! -f $nested_0_item ]; then
echo + $nested_0_item TO CREATE
else
$somevar | $(which diff) -u $nested_0_item -
fi
}
activate() {
echo activated >> /tmp/$plan_name
}
destroy() {
rm -rf /tmp/$plan_name
}
然后再次,尝试使用 sysplan 命令。
内置模块
文件
你也可以有类似的文件
files:
/etc/profile.d/pipuser.sh:
mode: '0755'
owner: root
group: root
content: |
export PATH=$HOME/.local/bin:$PATH
Docker
由于Docker提供了丰富的资源,因此它有一个特殊的计划生成方式,例如配置
docker:
networks:
web:
test:
volumes:
test:
这将会在主机上创建网络和卷。
Compose
Docker-compose 可以通过 sysplan 的 compose 模块进行配置,即
compose:
/etc/traefik/docker-compose.yml:
services:
...
应用此配置将会创建一个 /etc/traefik 目录,填写其中的 docker-compose.yml 文件,并启动它。
自定义 Python 模块
自定义 Python 模块在 sysplan 入口点上注册。例如,systemd 计划就是这样在 setup.py 中注册的
entry_points={
'sysplan': [
'services = sysplan.systemd:ServicePlan',
'mounts = sysplan.systemd:MountPlan',
'timers = sysplan.systemd:TimerPlan',
],
},
因此,指向的 Python 计划类将用于 sysplan yaml 中的 services、mounts 和 timers 键。您的计划类应继承自 sysplan.plan.Plan 类,该类基本上。
每个计划类定义了 4 个异步方法,这些方法将被直接调用
diff:返回当前和目标配置之间的差异
write:写入目标配置
activate:启用并启动服务
destroy:禁用并删除一切
计划类还可以做的一件事是更改 Plan.factory() 类方法来覆盖从插件配置生成计划的方式。 DockerPlan 插件是一个很好的例子。
项目详情
sysplan-0.0.1.dev47.tar.gz 的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | 544578c6161b630d3057413318a9504746f572e75b0a71293d315d5d443cc452 |
|
MD5 | bf381d7258f4ba9b16296c9a852355e9 |
|
BLAKE2b-256 | 144b3e8471cdec9d8dcb875f1ef48cf1a4cdaae165c9ea239d41aa9c10781c55 |