来源:https://walkoff.readthedocs.io/en/latest/apps.html
WALKOFF应用程序的最小目录结构如下:
一、全面开发说明
如果您想在Walkoff实例中添加VirusTotal应用程序,请遵循大多数步骤末尾的项目符号。
请注意App编辑器的更新,它允许您完全从UI创建新的应用程序。目前,你只能用它修改现有的应用程序。
1. 在独立的脚本中编写Python函数
(1)首先在WALKOFF之外的独立脚本中开发你的应用程序和它的功能——这样你可以在处理WALKOFF之前先了解基本的功能。
(2)注意:所有你希望转换为动作的函数都必须为asyncio编写(即async def function_name())
(3)示例:下面的示例代码可以作为独立脚本与VirusTotal的Api交互
2. 从WALKOFF/apps目录中复制hello_world应用程序文件夹
(1)将复制的包重命名为所需应用程序的名称
(2)注意:包的名称必须在snake_case中,并且应该与您要创建的应用程序的名称相同。
(3)示例:在继续下面的示例之前,确保您已在WALKOFF/apps目录中。
3.将开发的python函数复制到1.0.0/src目录中的app.py文件中
确保您的新函数包含在HelloWorld类声明中。
注意:只有src下的文件才会被复制到应用程序的Docker容器中。
例如:删除def __init__()之后,_name__ == "__main__"之前的所有内容,则将独立脚本粘贴到为代码清除的空白中。在漂亮打印脚本的上面一行,将@staticmethod添加到以def _pretty_print开始的同一列中。这是因为_pretty_print是一个辅助函数,稍后我们不会在api-yaml中定义它。
4. 更改app.py中的HelloWorld类名以匹配新应用程序的类名
确保这个类名与app.py底部的asyncio __main__调用匹配
同样,还要更改app_name值以反映新的应用程序名称
示例:在这一步中,我们将把HelloWorld类的名称更改为VirusTotal,然后将“app_name”值更改为“virus_total”而不是“hello_world”。最后,在文件的末尾将HelloWorld.run()更改为viruord .run()。在所有这些操作结束时,app.py文件应该如下所示:
5. 更改api.yaml元数据文件,以描述您的应用程序及其操作
为了让WALKOFF将一个函数识别为一个动作,它必须在应用程序的api.yaml文件中有一个相应的条目
此文件中的操作名称必须与代码中的函数名称完全匹配。
您必须在这个文件中至少包含名称、app_version和操作。
例子:
6. 更改requirements.txt以匹配您的应用程序需要
这个文件应该包括应用程序包含的任何Python包依赖项
Dockerfile将使用它来pip安装依赖项
例子:
二、更新应用程序
要编辑现有应用程序,请导航到WALKOFF中的应用程序编辑器。使用这个UI,您可以编辑现有的应用程序、添加新文件和构建应用程序图像。
让我们向hello_world应用程序添加一个新动作。
1. 打开src/app.py并从复制现有操作开始
2. 根据需要编辑操作并保存更改
如果需要添加二进制依赖项,请将其添加到Dockerfile中。如果需要导入新的Python模块,请确保将它们添加到requirements.txt中。如果需要读取文件,请确保将它们放在src中,以使它们在应用程序容器中可用。
3.打开api.yaml并通过复制现有的操作开始
4. 根据需要编辑操作并保存更改
任何时候看到模式键时,都可以使用JSON schema指定参数或返回值应该是什么样子。可以在这里找到允许的完整模式。
5. 构建映像并查看构建日志
你可以通过查看裁判日志来查看构建状态:docker service logs -f walkoff_core_umpire
输出将是这样的:
6. 在工作流编辑器中尝试您的新操作。
三、命名和字符串要求:
(1)App名称必须是snake_case(蛇形命名法),并且在以下所有位置匹配:
1、应用程序目录
2、在app.py 中app_name
3、在api.yaml 中app_name
4、docker- composite .yml中的服务名称
(2)api.yaml中的操作名称必须与app.py中对应的函数名称相匹配
(3)如果脚本的名称不是app.py,那么新名称必须与Dockerfile末尾的命令匹配
四、故障排除
在调试应用程序时,需要查看几个关键位置,导航到设置选项卡中的Portainer,并完成设置过程(如果您还没有完成的话)。这将帮助您完成以下调试步骤:
网友评论