| Server IP : 34.87.99.72 / Your IP : 216.73.217.31 Web Server : Apache/2.4.46 (Unix) OpenSSL/1.1.1n System : Linux zlock-bitnami-lamp-prod-v2-vm 4.19.0-16-cloud-amd64 #1 SMP Debian 4.19.181-1 (2021-03-19) x86_64 User : bitnami ( 1000) PHP Version : 7.4.18 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : OFF Directory : /opt/bitnami/nami/node_modules/provisioner/lib/recipes/ |
Upload File : |
/// <reference path="../../typings-recipe.d.ts" />
/*
* Support for sending signal when ran using CloudFormation templates
*/
"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
recipes.register({
id: "aws-cfn-signal-install",
on: { provisionMachine: { depends: ["system-packages"] } },
conditions: {
cloudTags: { any: ["aws"] },
platformTags: { any: ["linux"] }
},
recipeHandler: function (input) {
return __awaiter(this, void 0, void 0, function* () {
platform.installPackages("python-pip");
yield utils.retry(() => __awaiter(this, void 0, void 0, function* () {
$os.runProgram("pip", [
"install",
"--install-option=--prefix=/usr",
"https://s3.amazonaws.com/cloudformation-examples/aws-cfn-bootstrap-latest.tar.gz"
]);
}), { logger: this.logger, errorMessage: "Unable to install AWS CFN tools" });
});
}
});
recipes.register({
id: "aws-cfn-signal",
on: { afterFirstboot: {}, afterFailedFirstboot: {} },
conditions: {
cloudTags: { any: ["aws"] },
platformTags: { any: ["linux"] },
// don't run if the machine was provisioned externally
shouldInvoke: (input) => !(input.provisioner.provisioned)
},
recipeHandler: function (input) {
return __awaiter(this, void 0, void 0, function* () {
const resource = yield cloud.getUserData("PROVISIONER_CFN_RESOURCE");
const stack = yield cloud.getUserData("PROVISIONER_CFN_STACK");
const region = yield cloud.getUserData("PROVISIONER_CFN_REGION");
const signal = (input.eventName === "afterFirstboot") ? 0 : 1;
if (resource && stack) {
logger.info(`Notifying boot status from ${input.eventName}, code ${signal}`);
try {
$os.runProgram("env", [
"PYTHONPATH=/usr/lib/python2.7/site-packages", "cfn-signal",
"-e", signal, "--stack", stack, "--resource", resource, "--region", region
]);
}
catch (e) {
logger.warn(`Unable to send signal to CloudFormation: ${e.message}; retrying`, e);
try {
$os.runProgram("env", [
"PYTHONPATH=/usr/lib/python2.7/site-packages", "cfn-signal",
"-e", signal, "--stack", stack, "--resource", resource, "--region", region
]);
}
catch (e) {
logger.warn(`Unable to send signal to CloudFormation: ${e.message}; giving up`, e);
}
}
}
});
}
});