用于与托管煎锅交互的包和cli工具。
skilletcli的Python项目详细描述
煎锅
概述
这个实用程序提供了一个命令行界面到帕洛阿尔托“煎锅”, 设计用于导入防火墙或全景图的管理配置模板。
安装
先决条件
要使用skilletcli,必须安装git客户端。
Binaries for windows/OSX can be found here
Linux用户可以使用他们首选的包管理器。
获取代码
windows
Download the latest release from the releases page.
mac
command -v git ;if[[$? !=0]];thenecho"Git not installed.";else curl -L https://github.com/adambaumeister/skilletcli/releases/latest/download/skilletcli -o skilletcli ; chmod +x skilletcli ;fi
Mac用户注意:SkilletCli是在MacOS 10.14上构建的。较新/较旧的版本可能不兼容,在这种情况下,您需要运行 从源头上。
linux
command -v git ;if[[$? !=0]];thenecho"Git not installed.";else curl -L https://github.com/adambaumeister/skilletcli/releases/latest/download/skilletcli -o skilletcli ; chmod +x skilletcli ;fi
准备环境
skilletcli要求在使用之前填充一个变量文件。
此文件用于为具有特定于环境的信息的各种代码段创建模板。 默认情况下,此文件名为config_variables.yaml,并从当前目录(./config_variables.yml)中检索它
click here to see a complete example, populated with default values
如果此文件未指定或丢失/不可用,将使用默认值。
用法
煎锅布局概述
skilletcli返回如下结构:
煎锅收藏/煎锅/片段堆栈/片段
煎锅集合是与类型(如“全景”或“全景”)关联的一组煎锅。 代码段堆栈是具有特定用例的代码段的集合。
默认情况下,skilletcli将使用目标防火墙的设备类型来确定要使用的skillet类型,以及 用于代码段堆栈的“代码段”。
基本用法
列出所有可用的片段、煎锅和煎锅集合
skilletcli
此命令列出所有可用的代码段。
将片段推送到设备
skilletcli address
这将向设备推送一个片段“地址”,提示输入所有登录设置。
push多个片段
skilletcli address tag external_list
与上面一样,只是在一个命令中推送多个代码段。所需的代码段数量 可以这样推。
钥匙存储
可以在本地存储apikey,以避免将环境变量用于命令行标志。
运行任何skcli命令时,都可以通过传递标志enable_keystore来启用密钥库。如果身份验证成功,则生成的api密钥 将存储在$home/.skcli.json中。
在密钥库启用一次之后,不需要在随后的运行中重新指定标志。
# Enable the keystore
skilletcli --enable_keystore <args>
# Clear the keystore
skilletcli --clear_keystore
环境变量
skilletcli允许您使用环境变量,而不是交互式提示。
变量为:
- skcliu用户名
- skcliu密码
- skcliu地址
实验:基于http的skillet检索
煎锅最终将通过一个可公开访问的api集中托管。 如果这样检索煎锅,就不需要git客户机。
目前,此功能仍处于开发阶段,因此请自行承担使用风险。
若要利用此功能,请添加标记--repotype和--repopath,如下所示。
skilletcli --repotype api --repopath https://skillet-deploy.appspot.com
开发煎锅
为SkilletCli做贡献需要在您的机器上安装Python3.6+。
安装后,建议创建一个虚拟环境,使代码独立。
python3 -m venv venv # Windows venv/scripts/activate # *nixsource venv/scripts/activate
克隆代码并安装模块要求。
git clone https://github.com/adambaumeister/skilletcli.git
cd skilletcli
pip install -r requirements.txt
你现在准备好做出改变了!
测试
煎锅的测试分为两个逻辑过程
- 单元测试,或独立功能的测试
- 集成测试,或针对真实panos设备的功能测试
所有测试都是使用pytest初始化的。
pytest
默认情况下,只运行单元测试。要运行集成测试,必须指定标准 要测试的设备的skcli环境变量(地址、用户名、密码) 以及附加的env var:skcliu device_test。 设置环境后,只需像正常一样运行pytest。
每当检测到对master的更改时,pytest将作为ci的一部分使用travisci自动运行。ci只运行单元测试。
测试覆盖率
更新skcli之后,可以重新运行覆盖率测试,并使用下面的命令更新小图标。
coverage run --omit ./venv* -m pytest coverage-badge -o .github/cov.svg
包装
二进制打包使用由travis管理的pyinstaller完成。打包在发布发布时发生 (标记)在主分支上。
pypi发行版也通过travis在每个标记的发行版上处理。
手动PYPI包装:
pip install setuptools wheel pip install twine python setup.py bdist bdist_wheel twine upload --repository-url https://test.pypi.org/legacy/ dist/*