定制 laijim/playbook 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

laijim/playbook

Composer 安装命令:

composer require laijim/playbook

包简介

README 文档

README

Installation

The recommended approach is to install the project through Composer.

composer require laijim/php-playbook

#Instantiate

//Instantiate
$pb = new \Laijim\Playbook\Playbook(
    new \Laijim\Playbook\Entity\Worker(
        __DIR__ . '/test',
        new \Laijim\Playbook\Entity\LocalHostsFileWriter(),
        new \Laijim\Playbook\Entity\LocalTasksFileWriter(),
        new \Laijim\Playbook\Entity\LocalVariablesFileWriter(),
        new Filesystem()
    )
);

//set host and variables
$pb->setHosts([
    'web' => ['node1', '127.0.0.1'],
    'db' => ['node1', '127.0.0.1'],
])->setVariables([
    'step1' => [
        "var1" => "var1",
        "var2" => "var2"
    ],
    'step2' => [
        "var1" => "var1",
        "var2" => "var2"
    ]
]);

//set tasks
$task1 = new \Laijim\Playbook\Task();
$task1->useHost('web')
    ->useVariables(['step1'])
    ->addTasks([
        ["name" => "debug 1", "debug" => "var=var1"],
        ["name" => "debug 2", "debug" => "var=var2"],
        ["name" => "step 3", "shell" => "echo handlers", "notify" => "step 4"],
    ])->directive('handlers', [
        ["name" => "step 4", "shell" => "echo final"],
    ]);

$task2 = new \Laijim\Playbook\Task();
$task2->useHost('db')
    ->useVariables(['step2'])
    ->addTasks([
        ["name" => "debug 1", "debug" => "var=var1"],
        ["name" => "debug 2", "debug" => "var=var2"],
        ["name" => "step 3", "shell" => "echo handlers", "notify" => "step 4"],
    ])->directive('handlers', [
        ["name" => "step 4", "shell" => "echo final"],
    ]);

//generate playbook files
$pb->register($task1)
->register($task2)
->generate();

It will finally generate this directory structure:

├── hosts
├── playbook.yaml
└── vars
    ├── step1.yaml
    └── step2.yaml

hosts:

[web]
node1
127.0.0.1

[db]
node1
127.0.0.1

playbook.yaml:

        -
        hosts: web
        vars_files:
            - ./vars/step1.yaml
        task:
            -
                name: 'debug 1'
                debug: var=var1
            -
                name: 'debug 2'
                debug: var=var2
            -
                name: 'step 3'
                shell: 'echo handlers'
                notify: 'step 4'
        handlers:
            -
                name: 'step 4'
                shell: 'echo final'
        -
        hosts: db
        vars_files:
            - ./vars/step2.yaml
        task:
            -
                name: 'debug 1'
                debug: var=var1
            -
                name: 'debug 2'
                debug: var=var2
            -
                name: 'step 3'
                shell: 'echo handlers'
                notify: 'step 4'
        handlers:
            -
                name: 'step 4'
                shell: 'echo final'

vars/stepN.yaml:

var1: var1
var2: var2

vars/stepN.yaml:

var1: var1
var2: var2

Let's test it!

ansible-playbook -i hosts playbook.yaml

Operation result


PLAY [all] *****************************************************************************************************************************************

TASK [Gathering Facts] *****************************************************************************************************************************
ok: [127.0.0.1]
ok: [node2]

TASK [debug 1] *************************************************************************************************************************************
ok: [127.0.0.1] => {
    "var1": "var1"
}
ok: [node2] => {
    "var1": "var1"
}

TASK [debug 2] *************************************************************************************************************************************
ok: [127.0.0.1] => {
    "var2": "var2"
}
ok: [node2] => {
    "var2": "var2"
}

TASK [step 3] **************************************************************************************************************************************
changed: [127.0.0.1]
changed: [node2]

RUNNING HANDLER [debug 3] **************************************************************************************************************************
changed: [127.0.0.1]
changed: [node2]

PLAY RECAP *****************************************************************************************************************************************
127.0.0.1                  : ok=5    changed=2    unreachable=0    failed=0
node2                      : ok=5    changed=2    unreachable=0    failed=0

laijim/playbook 适用场景与选型建议

laijim/playbook 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 1 次下载、GitHub Stars 达 0, 最近一次更新时间为 2020 年 03 月 26 日, 在 PHP 生态内属于活跃度较高的组件。

我们在过去多个企业项目中使用过 laijim/playbook 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 laijim/playbook 我们能提供哪些服务?
定制开发 / 二次开发

基于 laijim/playbook 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 1
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 0
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: Unknown
  • 更新时间: 2020-03-26