自动化 ColdFusion 管理员设置的方法
Methods to automate ColdFusion Administrator settings
使用 ColdFusion 服务器时,您可以访问 CFIDE/administrator 来设置配置值,这会更新 cfusion/lib/
xml 文件(例如 neo-runtime.xml
、neo-mail.xml
, 等等)
我想自动执行包括设置这些管理员值的部署过程,这样我就不必登录并为共享设置的每个新框手动设置它们。我不确定最好的方法。
我的一些想法是:
- 用包含我的自定义设置的文件替换完整文件。我已经为本地开发做了这个,但它可能不是一个理想的方法,因为 CF 热修复可能 adding/removing/changing 属性。
- 读取 wddx xml 文件并替换属性值的脚本。我无法找到有关如何执行此方法的信息。
有没有人做过这样的事情?或者有人对如何最好地解决这个问题有任何建议吗?
在一家公司,我们将所有 neo-*.xml
文件检查到源代码管理中,每个环境都有一组,开发人员只能访问开发设置,我们可以部署具有所有正确设置的本地开发环境新员工快速。
but it may not be an ideal method due to CF hot-fixes potentially adding/removing/changing attributes.
您必须跟上这些变化并适当地迁移每个环境。
我在那里的时候,我们从 8 升级到 9,从 9 升级到 11,从 11 升级到 2016。环境必须混合,因为需要时间来验证应用程序是否适用于每个新版本的 CF。每台服务器都为该环境获取了正确的 XML 文件,并且脚本会根据需要复制更新。我们在生产环境中有大约 55 台服务器 运行 每台 8 个实例,因此扩展性很好。
Ortus Solutions 为这种自动化开发了一个非常有用的工具,称为 cfconfig,可以与他们的命令框命令行实用程序一起安装。此工具不仅能够设置管理员的配置:它还能够将 exporting/importing 设置到 json 文件 (cfconfig.json)。这可能是你需要的。
这是他们文档的link
https://cfconfig.ortusbooks.com/introduction/getting-started-guide
CFConfig 完美地满足了我的需求。我将@AndreasRu 的答案标记为已接受,以便向我介绍该工具!我只是为后代添加了一些额外的细节。
- Install CommandBox 作为部署脚本的一部分
- Install CFConfig 作为部署脚本的一部分
- 使用 CFConfig 从将与新部署共享设置的现有框中导出 config.json 文件。将此 json 文件存储在每个 type/env 框的源代码管理中。
- 使用 CFConfig 导入 config.json 作为部署脚本的一部分
下面是 debian 上的一个简单示例
# Installs CommandBox
curl -fsSl https://downloads.ortussolutions.com/debs/gpg | apt-key add -
echo "deb https://downloads.ortussolutions.com/debs/noarch /" | tee -a /etc/apt/sources.list.d/commandbox.list
apt-get update && apt-get install apt-transport-https commandbox
# Installs CFConfig module
box install commandbox-cfconfig
# Import config settings
box cfconfig import from=/<path-to-config>/config.json to=/opt/ColdFusion/cfusion/ toFormat=adobe@11.0.19
使用 ColdFusion 服务器时,您可以访问 CFIDE/administrator 来设置配置值,这会更新 cfusion/lib/
xml 文件(例如 neo-runtime.xml
、neo-mail.xml
, 等等)
我想自动执行包括设置这些管理员值的部署过程,这样我就不必登录并为共享设置的每个新框手动设置它们。我不确定最好的方法。
我的一些想法是:
- 用包含我的自定义设置的文件替换完整文件。我已经为本地开发做了这个,但它可能不是一个理想的方法,因为 CF 热修复可能 adding/removing/changing 属性。
- 读取 wddx xml 文件并替换属性值的脚本。我无法找到有关如何执行此方法的信息。
有没有人做过这样的事情?或者有人对如何最好地解决这个问题有任何建议吗?
在一家公司,我们将所有 neo-*.xml
文件检查到源代码管理中,每个环境都有一组,开发人员只能访问开发设置,我们可以部署具有所有正确设置的本地开发环境新员工快速。
but it may not be an ideal method due to CF hot-fixes potentially adding/removing/changing attributes.
您必须跟上这些变化并适当地迁移每个环境。
我在那里的时候,我们从 8 升级到 9,从 9 升级到 11,从 11 升级到 2016。环境必须混合,因为需要时间来验证应用程序是否适用于每个新版本的 CF。每台服务器都为该环境获取了正确的 XML 文件,并且脚本会根据需要复制更新。我们在生产环境中有大约 55 台服务器 运行 每台 8 个实例,因此扩展性很好。
Ortus Solutions 为这种自动化开发了一个非常有用的工具,称为 cfconfig,可以与他们的命令框命令行实用程序一起安装。此工具不仅能够设置管理员的配置:它还能够将 exporting/importing 设置到 json 文件 (cfconfig.json)。这可能是你需要的。
这是他们文档的link https://cfconfig.ortusbooks.com/introduction/getting-started-guide
CFConfig 完美地满足了我的需求。我将@AndreasRu 的答案标记为已接受,以便向我介绍该工具!我只是为后代添加了一些额外的细节。
- Install CommandBox 作为部署脚本的一部分
- Install CFConfig 作为部署脚本的一部分
- 使用 CFConfig 从将与新部署共享设置的现有框中导出 config.json 文件。将此 json 文件存储在每个 type/env 框的源代码管理中。
- 使用 CFConfig 导入 config.json 作为部署脚本的一部分
下面是 debian 上的一个简单示例
# Installs CommandBox
curl -fsSl https://downloads.ortussolutions.com/debs/gpg | apt-key add -
echo "deb https://downloads.ortussolutions.com/debs/noarch /" | tee -a /etc/apt/sources.list.d/commandbox.list
apt-get update && apt-get install apt-transport-https commandbox
# Installs CFConfig module
box install commandbox-cfconfig
# Import config settings
box cfconfig import from=/<path-to-config>/config.json to=/opt/ColdFusion/cfusion/ toFormat=adobe@11.0.19