跳转到主要内容

快速系统配置工具

项目描述

一个类似于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 中的 servicesmountstimers 键。您的计划类应继承自 sysplan.plan.Plan 类,该类基本上。

每个计划类定义了 4 个异步方法,这些方法将被直接调用

  • diff:返回当前和目标配置之间的差异

  • write:写入目标配置

  • activate:启用并启动服务

  • destroy:禁用并删除一切

计划类还可以做的一件事是更改 Plan.factory() 类方法来覆盖从插件配置生成计划的方式。 DockerPlan 插件是一个很好的例子。

项目详情


下载文件

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

源分发

sysplan-0.0.1.dev47.tar.gz (11.8 kB 查看散列)

上传时间

支持者:

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