@activatedio/cdktf-google
Version:
TypeScript library for CDKTF for google
79 lines • 3.31 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.Twingate = void 0;
const constructs_1 = require("constructs");
const google = __importStar(require("@cdktf/provider-google"));
class Twingate extends constructs_1.Construct {
constructor(scope, id, props) {
super(scope, id);
const serviceAccount = new google.serviceAccount.ServiceAccount(this, 'serviceAccount', {
accountId: `twingate-${props.name}`,
displayName: `Twingate ${props.name}`,
});
const subnetwork = new google.dataGoogleComputeSubnetwork.DataGoogleComputeSubnetwork(this, 'subnetwork', {
project: props.networkHostProject,
name: props.subnetwork,
});
for (let i = 0; i < props.instances.length; i++) {
const iProps = props.instances[i];
const script = `#!/bin/bash
set +e
echo "Starting Twingate install"
curl "https://binaries.twingate.com/connector/setup.sh" | TWINGATE_ACCESS_TOKEN="${iProps.accessToken}" TWINGATE_REFRESH_TOKEN="${iProps.refreshToken}" TWINGATE_NETWORK="${props.domain}" bash
echo "Finished Twingate install"
`;
const name = `twingate-${props.name}-${iProps.name}`;
new google.computeInstance.ComputeInstance(this, `instance-${i}`, {
name: name,
machineType: 'e2-small',
zone: iProps.zone,
tags: [`twingate-${props.name}`],
allowStoppingForUpdate: true,
bootDisk: {
initializeParams: {
image: 'ubuntu-2204-jammy-v20231213a',
},
},
networkInterface: [
{
network: subnetwork.network,
subnetwork: subnetwork.selfLink,
},
],
metadata: {
'serial-port-logging-enable': 'TRUE',
},
metadataStartupScript: script,
serviceAccount: {
email: serviceAccount.email,
scopes: ['cloud-platform'],
},
});
}
}
}
exports.Twingate = Twingate;
//# sourceMappingURL=twingate.js.map