Ошибки при создании простого кластера искр Azure HDInsight с помощью Pulumi - PullRequest
1 голос
/ 23 мая 2019

Я пытаюсь использовать Pulumi Javascript SDK для создания Spark-кластера HDInsight в Azure.Я следовал учебным пособиям, которые предоставляет Pulumi по созданию кластера GCP Kubernetes «hello world», и прошел примеры JavaScript в репозитории Pulumi examples на github, но не смог успешно создать кластер.

Я пыталсяменяя свои операторы export несколько раз, основываясь на примерах в репозитории Pulumi, но я всегда получаю ошибку «необработанное исключение», за которой следует трассировка стека, когда я запускаю pulumi up в корневом каталоге проекта pulumi.До сих пор я пытался использовать следующие операторы экспорта.

    //attempt 1
    export const sparkClusterName = sparkCluster.name

    //attempt 2
    export const sparkClusterOutput = sparkCluster.output

    //attempt 3
    export const sparkEndpoint = sparkCluster.httpsEndpoint

Я использую код Visual Studio в качестве своей IDE. Запуск всего кода на MacBook Pro с Mojave с использованием Pulumi версии 0.17.11 с использованием узла версии 12.1.0, установлены оба инструмента azure cli и pulumi cli.

Моя index.js программа выглядит следующим образом:

"use strict";
const pulumi = require("@pulumi/pulumi");
const azure = require("@pulumi/azure");

// Retrieve an Azure Resource Group
const resourceGroup = pulumi.output(azure.core.getResourceGroup({
    name: "MyResourceGroup",
}));
//Create Spark Cluster
const sparkCluster = new azure.hdinsight.SparkCluster("testSparkCluster", {
    clusterVersion: "3.6",
    componentVersion: {
        spark: "2.3",
    },
    gateway: {
        enable: true,
        password: "laDK#21",
        username: "USERname",
    },
    location: resourceGroup.apply(resourceGroup => resourceGroup.location),
    name: "example-hdisparkcluster",
    resourceGroupName: resourceGroup.apply(resourceGroup => resourceGroup.name),
    roles: {
        headNode: {
            password: "AAAlllddck11122$$3",
            username: "USerNameladkfj",
            vmSize: "Standard_A3",
        },
        workerNode: {
            password: "asdlfaDDF143k#@#",
            targetInstanceCount: 3,
            username: "USernaemls",
            vmSize: "Standard_A3",
        },
        zookeeperNode: {
            password: "ASDKLlkjjj##@@323",
            username: "USERname2323",
        },
    },
    storageAccounts: [{
        isDefault: true,
    }],
    tier: "Standard",
});

// Export the spark cluster
export const sparkClusterName = sparkCluster.name;
//export const sparkName = sparkCluster.output
//export const sparkEndpoint = sparkCluster.httpsEndpoint

Ожидаемый результат должен быть успешным из CLI pulumi, показывающего новый стек и созданный Spark Cluster (и затем возможность просмотракластер на портале Azure).Вместо этого генерируется следующая ошибка и трассировка стека:

Previewing update (dev):

     Type                 Name                         Plan       Info
 +   pulumi:pulumi:Stack  HDInsight_Spark_Cluster-dev  create     1 error

Diagnostics:
  pulumi:pulumi:Stack (HDInsight_Spark_Cluster-dev):
    error: Running program '/Users/workspace/Pulumi Workspace/Pulumi HDInsight Testing' failed with an unhandled exception:
    /Users/workspace/Pulumi Workspace/Pulumi HDInsight Testing/index.js:50
    export const sparkClusterName = sparkCluster.name;
    ^^^^^^

    SyntaxError: Unexpected token export
        at Module._compile (internal/modules/cjs/loader.js:703:23)
        at Object.Module._extensions..js (internal/modules/cjs/loader.js:770:10)
        at Module.load (internal/modules/cjs/loader.js:628:32)
        at Function.Module._load (internal/modules/cjs/loader.js:555:12)
        at Module.require (internal/modules/cjs/loader.js:666:19)
        at require (internal/modules/cjs/helpers.js:16:16)
        at /Users/workspace/Pulumi Workspace/Pulumi HDInsight Testing/node_modules/@pulumi/pulumi/cmd/run/run.js:195:20
        at Stack.<anonymous> (/Users/workspace/Pulumi Workspace/Pulumi HDInsight Testing/node_modules/@pulumi/pulumi/runtime/stack.js:76:27)
        at Generator.next (<anonymous>)
        at fulfilled (/Users/workspace/Pulumi Workspace/Pulumi HDInsight Testing/node_modules/@pulumi/pulumi/runtime/stack.js:17:58)

Я очень новичок в использовании Azure и имею только базовые знания Javascript, так как большая часть моего опыта связана с Java и C / C ++.Моя цель для этой программы - просто помочь мне понять и понять работу с HDInsight с помощью Pulumi.

1 Ответ

1 голос
/ 23 мая 2019

Вы столкнулись с проблемой синтаксиса, потому что экспорт в JavaScript отличается от TypeScript. Ваш скопированный экспорт будет работать в программе TS, но в JS вы должны написать:

exports.sparkClusterName = sparkCluster.name;

Если вы новичок в JavaScript и TypeScript, я предлагаю вам переключиться на TypeScript и использовать редактор, такой как код Visual Studio, для выделения ошибок во время редактирования. В вашем коде все еще есть ряд таких символов: enable вместо enabled, vmSize отсутствует в zookeeperNode, storageAccountKey и storageContainerId отсутствует в storageAccounts.

Кроме того, ваши имена пользователей и пароль нарушают некоторые политики, но вы обнаружите это только при запуске pulumi up, а не во время редактирования.

Вот мой дубль:

const sparkCluster = new azure.hdinsight.SparkCluster("testSparkCluster", {
    clusterVersion: "3.6",
    componentVersion: {
        spark: "2.3",
    },
    gateway: {
        enabled: true,
        password: "@P6g4KMvlhjM",
        username: "username",
    },
    name: "example-hdisparkcluster",
    resourceGroupName: resourceGroup.apply(rg => rg.name),
    roles: {
        headNode: {
            password: "0@Gkv81xt!lR",
            username: "usernamehn",
            vmSize: "Standard_A3",
        },
        workerNode: {
            password: "Wx63!ZMnePHK",
            targetInstanceCount: 3,
            username: "usernamewn",
            vmSize: "Standard_A3",
        },
        zookeeperNode: {
            password: "&43MhoXfZ5ar",
            username: "usernamezn",
            vmSize: "Standard_A3",
        },
    },
    storageAccounts: [{
        isDefault: true,
        storageAccountKey: storageAccount.primaryAccessKey,
        storageContainerId: storageContainer.id,
    }],
    tier: "Standard",
});

ОБНОВЛЕНИЕ: я создал полный рабочий пример .

...