我正在尝试模板化我的 Apache httpd 配置以部署到不同的环境,并且我想使用 Python 语言 Cheetah 应用程序来执行此操作。但是,我在使用命令行cheetah
程序时遇到了困难,我相信这是我对 Cheetah 的误解以及缺乏文档的结合。
我的目标是拥有一个 httpd.conf 模板文件并从特定于环境的定义文件中替换变量。
httpd.tmpl:
Listen $HTTP_PORT
...
#if $ENABLE_HTTPS == true
<Virtual Host *:$HTTPS_PORT>
...
</VirtualHost>
#end if
生产环境:
HTTP_PORT=34120
HTTPS_PORT=34121
ENABLE_HTTPS=true
填写这个 Cheetah 模板需要什么命令行?我用过:
cheetah f --oext conf --debug httpd
但显然prod.env
不是作为输入文件读取的。#include
在我的模板文件顶部添加一个:
#include "prod.env"
并且没有找到我的名字:
Cheetah.NameMapper.NotFound: cannot find 'APACHE_PORT'
这无论如何都不是理想的情况,因为我希望能够在命令行上为每次调用 cheetah 指定名称/值映射文件。
谢谢!
编辑:我知道我可以编写一个 python 脚本来执行文件读取,然后使用 Cheetah API 替换。但是,我正在寻找一种方法来使用命令行来填充我的模板。
解决了
感谢@pyfunc 提供的文档链接,我现在了解如何完成此操作。主要问题是--env
在 cheetah 命令行上提供,它将当前环境变量传递给 cheetah。但是,必须先导出这些环境变量。