Как развернуть шаблон тепла OpenStack, включающий скрипт

Механизм оркестрации для 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, которые запускаются после развертывания - как мы загружаем эти сценарии в OpenStack для включения в стек?

например, вот список каталогов для шаблона сервера Microsoft SQL

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

Клиент Heat будет принимать в качестве аргумента только файл YAML, так что же нам делать со скриптами?

спасибо, Роб.


person Sum1sAdmin    schedule 24.03.2016    source источник


Ответы (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}
person Praveen Yalagandula    schedule 18.04.2016

Иногда нам нужно создать сценарий на основе параметров, предоставленных в шаблоне HEAT, и выполнить его после создания стека.

Для такого рода требований мы можем использовать шаблон, упомянутый ниже. Это создаст, а также выполнит скрипт, как только виртуальная машина будет запущена и находится в фазе инициализации облака.

services-cloud-init:
    type: OS::Heat::CloudConfig
    properties:
        cloud_config:
            timezone: {get_param: time_zone}
            write_files:
              - path: /tmp/change_password.sh
                owner: root:root
                permissions: '0777'
                content: |
                          #!/bin/bash
                          echo -e "pwd\npwd" | passwd cloud-user

              - path: /run/change_timezone.sh
                owner: root:root
                permissions: '0777'
                content: |
                          #!/bin/bash
                          ln -sf /usr/share/zoneinfo/timezone /etc/localtime

            runcmd:
              - echo "Executing change_timezone"
              - /tmp/change_timezone.sh
              - echo "Executing change_password"
              - /tmp/change_password.sh
              - reboot
            bootcmd:
              - echo "Boot Completed"
person sauumum    schedule 23.05.2018