2016-09-26 5 views
0

необходимо заменить user_data динамическими значениями в группе ресурсов из comma_delimited_list.Как передать значения josn/list шаблону в HEAT user_data

% индекс% не работает.

heat_template_version: 2015-10-15 

test_parameter: 
type: comma_delimited_list 
label: test param list 
description: test descr 
default: 'test_param_1,test_param_2' 
....... 
...... 

type: OS::Heat::ResourceGroup 
properties: 
......... 
......... 
user_data: 
    str_replace: 
     template: | 
     get the local value of the instance : $val 
     params: 
     $val: { get_param: [ test_parameter, %index% ] } 

Как передать значения josn/список в шаблон в HEAT-user_data

ответ

0

К сожалению, AWS-CloudFormation основе еще несколько ограничены тем, что вы можете нормально делать, и тепло конкретного языка (т.е. по-прежнему основывается на aws-cloudformation) связана теми же ограничениями.

Как правило, лучшие решения, которые вы можете иметь, имеют списки выбора в верхней части шаблона и передают некоторые из ваших ресурсов. В следующем примере, один из этих выборов задать для конкретного веб-приложение для установки (с Nginx и Apache), и передать его в качестве переменной в разделе пользователем данных шаблона:

heat_template_version: 2015-04-30 

description: > 
    Hello world HOT template that just defines a single server. 
    Contains just base features to verify base HOT support. 

parameters: 
    key_name: 
    type: string 
    description: Name of an existing key pair to use for the server 
    default: "topcat-01" 
    constraints: 
     - custom_constraint: nova.keypair 
    flavor: 
    type: string 
    description: Flavor for the server to be created 
    default: m1.normal 
    constraints: 
     - custom_constraint: nova.flavor 
    image: 
    type: string 
    description: Image ID or image name to use for the server 
    default: Ubuntu-1404lts-32-Cloud 
    constraints: 
     - custom_constraint: glance.image 
    my_network: 
    type: string 
    description: Neutron Network 
    default: public-internet-access 
    constraints: 
     - custom_constraint: neutron.network 
    application-install: 
    type: string 
    default: apache 
    constraints: 
     - allowed_values: [apache, nginx] 
     description: Value must be one of 'apache', or 'nginx' 

resources: 
    server: 
    type: OS::Nova::Server 
    properties: 
     key_name: { get_param: key_name } 
     image: { get_param: image } 
     flavor: { get_param: flavor } 
     security_groups: 
     - default 
     name: test-single-topcat-instance 
     networks: 
     - network: { get_param: my_network } 
     user_data_format: RAW 
     user_data: 
     str_replace: 
      template: | 
      #!/bin/bash 
      myapp="$selectedapp01" 
      echo "MY APP IS $myapp" 
      PATH=$PATH:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin 
      case $myapp in 
      apache) 
       echo "INSTALLING APACHE" 
       if [ -f /etc/debian_version ] 
       then 
        aptitude -y update 
        aptitude -y install apache2 
       fi 
       if [ -f /etc/redhat-release ] 
       then 
        yum -y install httpd 
        chkconfig httpd on 
        echo "" >> /var/www/html/index.html 
        service httpd start 
       fi 
       ;; 
      nginx) 
       echo "INSTALLING NGINX" 
       if [ -f /etc/debian_version ] 
       then 
        aptitude -y update 
        aptitude -y install nginx-full 
       fi 
       if [ -f /etc/redhat-release ] 
       then 
        yum -y install nginx 
        chkconfig nginx on 
        service nginx start 
       fi 
       ;; 
      esac 
      params: 
      $selectedapp01: {get_param: application-install} 

outputs: 
    server_networks: 
    description: The networks of the deployed server 
    value: { get_attr: [server, networks] } 

из пример выше, параметр «application-install» (который может быть apache или nginx) будет интерпретироваться как «$ selectedapp01» в конце раздела пользовательских данных и как «$ myapp» (myapp = "$ selectedapp01") в начале пользовательских данных.

Это не идеальный вариант, но это нормальный путь. Большинство инструментов развертывания облачности формируют окончательный шаблон из набора «вопросов и ответов», и вы закончили статический (полустатический) шаблон.

Этот пример, который я добавил здесь в качестве примера, попросит вас о многом и установит некоторые значения по умолчанию.

Надеюсь, это поможет.

Смежные вопросы