GoogleCloudPlatform / GoogleCloudPlatform/deploymentmanager-samples
lustre doesn't deploy if existing VPC is specified.
- Dominant language
- Jinja
- Stars
- 951
- Forks
- 700
- PR merge metrics
- No merged PRs in 30d
Description
I don't believe lustre.jinja is configured to deploy lustre into an existing VPC. In my lustre.yaml I have this in my cluster config:
```
### Use these fields to deploy Lustre in an existing VPC, Subnet, and/or Shared VPC
vpc_net : slurm-gcp-v5-net
#vpc_subnet : slurm-gcp-v5-primary-subnet
#shared_vpc_host_proj : < Shared VPC Host Project name >
```
slurm-gcp-v5-net exists and you can see I've commented out the vpc_subnet. The first error returned is "`subnet_split` is undefined". In line 23 of `lustre.jinja`, subnet_split is defined only if lustre is being deployed into a new VPC. I fixed this error by adding this to lustre.jinja:
```
{% if properties['vpc_net'] and not properties['vpc_subnet'] %}
{% set subnet = properties['cidr'].split('/')[0] %}
{% set subnet_split = subnet.split('.') %}
{% endif %}
```
However, now the rest of the code references the wrong VPC. For instance, in lustre.jinja to create new subnets:
```
{% if not properties['vpc_subnet'] %}
# Create a subnet for the new cluster
- name: {{properties["cluster_name"]}}-lustre-subnet
type: compute.v1.subnetwork
properties:
network: $(ref.{{properties["cluster_name"]}}-lustre-network.selfLink)
ipCidrRange: {{ properties["cidr"]}}
region: {{ region_ext }}
privateIpGoogleAccess: TRUE
```
Notice how network: will be properties["cluster_name"]-lustre-network, not["vpc_net"]. I think the script needs to be reworked for passing an existing VPC without specifying a subnet. I'll need to fix this so I can create a PR.
## Update
I got the script working by adding this code before the resources block in lustre.jinja. Change to your project in GCP:
```
{% if properties['vpc_net'] %}
{% set vpc_reference = 'https://www.googleapis.com/compute/v1/projects//global/networks/' ~ properties["vpc_net"] %}
{% endif %}
```
This code in the resources section
```
# create subnet_split if using existing VPC
{% if properties['vpc_net'] and not properties['vpc_subnet'] %}
{% set subnet = properties['cidr'].split('/')[0] %}
{% set subnet_split = subnet.split('.') %}
{% endif %}
```
and by changing network references from `network: $(ref.{{properties["cluster_name"]}}-lustre-network.selfLink)` to `network: {{ vpc_reference }}`
Contributor guide
Assessment
This issue has not been assessed yet.