in batch/create/create_nfs_job.js [19:128]
async function main() {
// [START batch_create_nfs_job]
// Imports the Batch library
const batchLib = require('@google-cloud/batch');
const batch = batchLib.protos.google.cloud.batch.v1;
// Instantiates a client
const batchClient = new batchLib.v1.BatchServiceClient();
/**
* TODO(developer): Update these variables before running the sample.
*/
// Project ID or project number of the Google Cloud project you want to use.
const projectId = await batchClient.getProjectId();
// Name of the region you want to use to run the job. Regions that are
// available for Batch are listed on: https://cloud.google.com/batch/docs/get-started#locations
const region = 'europe-central2';
// The name of the job that will be created.
// It needs to be unique for each project and region pair.
const jobName = 'batch-nfs-job';
// The path of the NFS directory that you want this job to access.
const nfsPath = '/your_nfs_path';
// The IP address of the Network File System.
const nfsIpAddress = '0.0.0.0';
// The mount path that the job's tasks use to access the NFS.
const mountPath = '/mnt/disks';
// Define what will be done as part of the job.
const runnable = new batch.Runnable({
script: new batch.Runnable.Script({
commands: [
'-c',
'echo Hello world from task ${BATCH_TASK_INDEX}. >> ' +
'/mnt/share/output_task_${BATCH_TASK_INDEX}.txt',
],
}),
});
// Define a volume that uses NFS.
const volume = new batch.Volume({
nfs: new batch.NFS({
server: nfsIpAddress,
remotePath: nfsPath,
}),
mountPath,
});
// Specify what resources are requested by each task.
const computeResource = new batch.ComputeResource({
// In milliseconds per cpu-second. This means the task requires 50% of a single CPUs.
cpuMilli: 500,
// In MiB.
memoryMib: 16,
});
const task = new batch.TaskSpec({
runnables: [runnable],
volumes: [volume],
computeResource,
maxRetryCount: 2,
maxRunDuration: {seconds: 3600},
});
// Tasks are grouped inside a job using TaskGroups.
const group = new batch.TaskGroup({
taskCount: 3,
taskSpec: task,
});
// Policies are used to define on what kind of virtual machines the tasks will run on.
// In this case, we tell the system to use "e2-standard-4" machine type.
// Read more about machine types here: https://cloud.google.com/compute/docs/machine-types
const instancePolicy = new batch.AllocationPolicy.InstancePolicy({
machineType: 'e2-standard-4',
});
const allocationPolicy = new batch.AllocationPolicy.InstancePolicyOrTemplate({
instances: [{policy: instancePolicy}],
});
const job = new batch.Job({
name: jobName,
taskGroups: [group],
allocationPolicy,
labels: {env: 'testing', type: 'script'},
// We use Cloud Logging as it's an option available out of the box
logsPolicy: new batch.LogsPolicy({
destination: batch.LogsPolicy.Destination.CLOUD_LOGGING,
}),
});
// The job's parent is the project and region in which the job will run
const parent = `projects/${projectId}/locations/${region}`;
async function callCreateBatchNfsJob() {
// Construct request
const request = {
parent,
jobId: jobName,
job,
};
// Run request
const [response] = await batchClient.createJob(request);
console.log(JSON.stringify(response));
}
await callCreateBatchNfsJob();
// [END batch_create_nfs_job]
}