Skip to content

Commit b646693

Browse files
Update docs: feature Crusoe in cluster placement, rewrite cluster example
- Add Crusoe tab to fleets.md cluster placement backends - Reorder backends.md to group Crusoe with other major cloud providers - Rewrite examples/clusters/crusoe VMs section to use native backend instead of SSH fleets, with tested NCCL config Made-with: Cursor
1 parent 1d36f67 commit b646693

File tree

3 files changed

+229
-246
lines changed

3 files changed

+229
-246
lines changed

docs/docs/concepts/backends.md

Lines changed: 109 additions & 109 deletions
Original file line numberDiff line numberDiff line change
@@ -745,99 +745,33 @@ projects:
745745
Nebius is only supported if `dstack server` is running on Python 3.10 or higher.
746746

747747

748-
### Vultr
748+
### Crusoe Cloud
749749

750-
Log into your [Vultr](https://www.vultr.com/) account, click `Account` in the sidebar, select `API`, find the `Personal Access Token` panel and click the `Enable API` button. In the `Access Control` panel, allow API requests from all addresses or from the subnet where your `dstack` server is deployed.
750+
Log into your [Crusoe Cloud](https://console.crusoecloud.com/) console and create an API key
751+
under your account settings. Note your project ID from the project settings page.
751752

752753
Then, go ahead and configure the backend:
753754

754755
<div editor-title="~/.dstack/server/config.yml">
755756

756757
```yaml
757758
projects:
758-
- name: main
759-
backends:
760-
- type: vultr
761-
creds:
762-
type: api_key
763-
api_key: B57487240a466624b48de22865589
759+
- name: main
760+
backends:
761+
- type: crusoe
762+
project_id: your-project-id
763+
creds:
764+
type: access_key
765+
access_key: your-access-key
766+
secret_key: your-secret-key
767+
regions:
768+
- us-east1-a
769+
- us-southcentral1-a
764770
```
765771

766772
</div>
767773

768-
### OCI
769-
770-
There are two ways to configure OCI: using client credentials or using the default credentials.
771-
772-
=== "Default credentials"
773-
If you have default credentials set up in `~/.oci/config`, configure the backend like this:
774-
775-
<div editor-title="~/.dstack/server/config.yml">
776-
777-
```yaml
778-
projects:
779-
- name: main
780-
backends:
781-
- type: oci
782-
creds:
783-
type: default
784-
```
785-
786-
</div>
787-
788-
=== "Client credentials"
789-
790-
Log into the [OCI Console](https://cloud.oracle.com), go to `My profile`,
791-
select `API keys`, and click `Add API key`.
792-
793-
Once you add a key, you'll see the configuration file. Copy its values to configure the backend as follows:
794-
795-
<div editor-title="~/.dstack/server/config.yml">
796-
797-
```yaml
798-
projects:
799-
- name: main
800-
backends:
801-
- type: oci
802-
creds:
803-
type: client
804-
user: ocid1.user.oc1..g5vlaeqfu47akmaafq665xsgmyaqjktyfxtacfxc4ftjxuca7aohnd2ev66m
805-
tenancy: ocid1.tenancy.oc1..ajqsftvk4qarcfaak3ha4ycdsaahxmaita5frdwg3tqo2bcokpd3n7oizwai
806-
region: eu-frankfurt-1
807-
fingerprint: 77:32:77:00:49:7c:cb:56:84:75:8e:77:96:7d:53:17
808-
key_file: ~/.oci/private_key.pem
809-
```
810-
811-
</div>
812-
813-
Make sure to include either the path to your private key via `key_file` or the contents of the key via `key_content`.
814-
815-
??? info "Required permissions"
816-
817-
This is an example of a restrictive policy for a group of `dstack` users:
818-
819-
```
820-
Allow group <dstack-users> to read compartments in tenancy where target.compartment.name = '<dstack-compartment>'
821-
Allow group <dstack-users> to read marketplace-community-listings in compartment <dstack-compartment>
822-
Allow group <dstack-users> to manage app-catalog-listing in compartment <dstack-compartment>
823-
Allow group <dstack-users> to manage instances in compartment <dstack-compartment>
824-
Allow group <dstack-users> to manage compute-capacity-reports in compartment <dstack-compartment>
825-
Allow group <dstack-users> to manage volumes in compartment <dstack-compartment>
826-
Allow group <dstack-users> to manage volume-attachments in compartment <dstack-compartment>
827-
Allow group <dstack-users> to manage virtual-network-family in compartment <dstack-compartment>
828-
```
829-
830-
To use this policy, create a compartment for `dstack` and specify it in `~/.dstack/server/config.yml`.
831-
832-
```yaml
833-
projects:
834-
- name: main
835-
backends:
836-
- type: oci
837-
creds:
838-
type: default
839-
compartment_id: ocid1.compartment.oc1..aaaaaaaa
840-
```
774+
`regions` is optional. If not specified, all available Crusoe regions are used.
841775

842776
<span id="datacrunch"></span>
843777

@@ -929,34 +863,6 @@ projects:
929863
* `sizes` - read
930864
* `ssh_key` - create, read, update,delete
931865

932-
### Crusoe
933-
934-
Log into your [Crusoe](https://console.crusoecloud.com/) console and create an API key
935-
under your account settings. Note your project ID from the project settings page.
936-
937-
Then, go ahead and configure the backend:
938-
939-
<div editor-title="~/.dstack/server/config.yml">
940-
941-
```yaml
942-
projects:
943-
- name: main
944-
backends:
945-
- type: crusoe
946-
project_id: your-project-id
947-
creds:
948-
type: access_key
949-
access_key: your-access-key
950-
secret_key: your-secret-key
951-
regions:
952-
- us-east1-a
953-
- us-southcentral1-a
954-
```
955-
956-
</div>
957-
958-
`regions` is optional. If not specified, all available Crusoe regions are used.
959-
960866
### Hot Aisle
961867

962868
Log in to the SSH TUI as described in the [Hot Aisle Quick Start](https://hotaisle.xyz/quick-start/).
@@ -1207,6 +1113,100 @@ projects:
12071113

12081114
Also, the `vastai` backend supports on-demand instances only. Spot instance support coming soon.
12091115

1116+
### Vultr
1117+
1118+
Log into your [Vultr](https://www.vultr.com/) account, click `Account` in the sidebar, select `API`, find the `Personal Access Token` panel and click the `Enable API` button. In the `Access Control` panel, allow API requests from all addresses or from the subnet where your `dstack` server is deployed.
1119+
1120+
Then, go ahead and configure the backend:
1121+
1122+
<div editor-title="~/.dstack/server/config.yml">
1123+
1124+
```yaml
1125+
projects:
1126+
- name: main
1127+
backends:
1128+
- type: vultr
1129+
creds:
1130+
type: api_key
1131+
api_key: B57487240a466624b48de22865589
1132+
```
1133+
1134+
</div>
1135+
1136+
### OCI
1137+
1138+
There are two ways to configure OCI: using client credentials or using the default credentials.
1139+
1140+
=== "Default credentials"
1141+
If you have default credentials set up in `~/.oci/config`, configure the backend like this:
1142+
1143+
<div editor-title="~/.dstack/server/config.yml">
1144+
1145+
```yaml
1146+
projects:
1147+
- name: main
1148+
backends:
1149+
- type: oci
1150+
creds:
1151+
type: default
1152+
```
1153+
1154+
</div>
1155+
1156+
=== "Client credentials"
1157+
1158+
Log into the [OCI Console](https://cloud.oracle.com), go to `My profile`,
1159+
select `API keys`, and click `Add API key`.
1160+
1161+
Once you add a key, you'll see the configuration file. Copy its values to configure the backend as follows:
1162+
1163+
<div editor-title="~/.dstack/server/config.yml">
1164+
1165+
```yaml
1166+
projects:
1167+
- name: main
1168+
backends:
1169+
- type: oci
1170+
creds:
1171+
type: client
1172+
user: ocid1.user.oc1..g5vlaeqfu47akmaafq665xsgmyaqjktyfxtacfxc4ftjxuca7aohnd2ev66m
1173+
tenancy: ocid1.tenancy.oc1..ajqsftvk4qarcfaak3ha4ycdsaahxmaita5frdwg3tqo2bcokpd3n7oizwai
1174+
region: eu-frankfurt-1
1175+
fingerprint: 77:32:77:00:49:7c:cb:56:84:75:8e:77:96:7d:53:17
1176+
key_file: ~/.oci/private_key.pem
1177+
```
1178+
1179+
</div>
1180+
1181+
Make sure to include either the path to your private key via `key_file` or the contents of the key via `key_content`.
1182+
1183+
??? info "Required permissions"
1184+
1185+
This is an example of a restrictive policy for a group of `dstack` users:
1186+
1187+
```
1188+
Allow group <dstack-users> to read compartments in tenancy where target.compartment.name = '<dstack-compartment>'
1189+
Allow group <dstack-users> to read marketplace-community-listings in compartment <dstack-compartment>
1190+
Allow group <dstack-users> to manage app-catalog-listing in compartment <dstack-compartment>
1191+
Allow group <dstack-users> to manage instances in compartment <dstack-compartment>
1192+
Allow group <dstack-users> to manage compute-capacity-reports in compartment <dstack-compartment>
1193+
Allow group <dstack-users> to manage volumes in compartment <dstack-compartment>
1194+
Allow group <dstack-users> to manage volume-attachments in compartment <dstack-compartment>
1195+
Allow group <dstack-users> to manage virtual-network-family in compartment <dstack-compartment>
1196+
```
1197+
1198+
To use this policy, create a compartment for `dstack` and specify it in `~/.dstack/server/config.yml`.
1199+
1200+
```yaml
1201+
projects:
1202+
- name: main
1203+
backends:
1204+
- type: oci
1205+
creds:
1206+
type: default
1207+
compartment_id: ocid1.compartment.oc1..aaaaaaaa
1208+
```
1209+
12101210
SSH fleets support the same features as [VM-based](#vm-based) backends.
12111211

12121212
!!! info "What's next"

docs/docs/concepts/fleets.md

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ This property ensures that instances are interconnected. This is required for ru
160160

161161
#### Backends
162162

163-
Fast interconnect is supported on the `aws`, `gcp`, `nebius`, `kubernetes`, and `runpod` backends. Some backends may require additional configuration.
163+
Fast interconnect is supported on the `aws`, `gcp`, `nebius`, `crusoe`, and `kubernetes` backends. Some backends may require additional configuration.
164164

165165
=== "AWS"
166166
On AWS, `dstack` requires `public_ips` to be set to `false` in the backend configuration.
@@ -173,15 +173,18 @@ This property ensures that instances are interconnected. This is required for ru
173173
=== "Nebius"
174174
On [Nebius](https://docs.nebius.com/compute/clusters/gpu), `dstack` automatically configures InfiniBand networking if it is supported by the selected instance type.
175175

176+
=== "Crusoe"
177+
On [Crusoe](https://docs.crusoecloud.com/networking/infiniband/managing-infiniband-networks), `dstack` automatically configures InfiniBand networking if it is supported by the selected instance type.
178+
Refer to the [Crusoe](../../examples/clusters/crusoe/index.md#vms) example for more details.
179+
176180
=== "Kubernetes"
177181
If the Kubernetes cluster has interconnect configured, `dstack` can use it without additional setup.
178182
See the [Lambda](../../examples/clusters/lambda/index.md#kubernetes) or [Crusoe](../../examples/clusters/crusoe/index.md#kubernetes) examples.
179183

180-
=== "Runpod"
181-
On [Runpod](https://docs.runpod.io/instant-clusters), `dstack` automatically configures InfiniBand networking if it is supported by the selected instance type.
182-
183184
> See the [Clusters](../../examples.md#clusters) examples.
184185

186+
<!-- TODO: Add Runpod tab to cluster backends once cluster support is fully tested -->
187+
185188
=== "SSH fleets"
186189
If the hosts in the SSH fleet have interconnect configured, you only need to set `placement` to `cluster`.
187190

0 commit comments

Comments
 (0)