如何部署包含脚本

时间:2016-03-24 18:11:50

标签: openstack-heat

OpenStack' Heat'的编排引擎可以部署计算资源和配置软件,称为HOT模板。 github上有很多例子: https://github.com/openstack/heat-templates/tree/master/hot

热模板是用YAML编写的,我们可以用这种语法部署模板

heat stack-create my_first_stack -f heat_1a.yaml

您还可以将模板文件直接上传到OpenStack仪表板。 但是,这是我的问题,许多模板还将包括部署后运行的PowerShell脚本的shell脚本 - 我们如何将这些脚本上传到OpenStack以包含在堆栈中?

例如,这是MicroSoft SQL服务器模板的目录列表

C:\heat-templates\hot\Windows\MSSQLServer>ls
MSSQL.ps1  MSSQL.psm1  MSSQL.yaml  Tests  heat-powershell-utils.psm1

Heat客户端只会将YAML文件作为参数,那么我们如何以及如何处理这些脚本呢?

感谢, 罗布。

2 个答案:

答案 0 :(得分:2)

请参阅heat的模板指南: http://docs.openstack.org/developer/heat/template_guide/software_deployment.html

基本上,yaml模板文件中定义的资源可以使用“get_file”指令,该指令从指定的文件名中读取字符串。因此,当您调用热客户端MSSQL.yaml时,您的热客户端将解析它,并且只要它以文件名作为参数看到“get_file”,它就会从该文件中读取。

使用上述链接中的“get_file”示例:

...
the_server:
  type: OS::Nova::Server
  properties:
    # flavor, image etc
    user_data:
      str_replace:
        template: {get_file: the_server_boot.sh}
        params:
          $FOO: {get_param: foo}

答案 1 :(得分:0)

有时,我们需要根据HEAT模板中提供的参数创建脚本,并在创建Stack后执行它。

对于这种要求,我们可以使用下面提到的模式。一旦VM启动并处于cloud-init阶段,这将创建并执行脚本。

{{1}}