{"id":15056935,"url":"https://github.com/rutu-sh/cloudlab-tools","last_synced_at":"2025-05-16T16:30:49.670Z","repository":{"id":244344657,"uuid":"814745908","full_name":"rutu-sh/cloudlab-tools","owner":"rutu-sh","description":"Tools and setup scripts for easing work on CloudLab","archived":false,"fork":false,"pushed_at":"2024-12-26T16:12:01.000Z","size":168,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-04T04:01:33.410Z","etag":null,"topics":["cloudlab","dpdk","ebpf","nfv","tools"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rutu-sh.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-06-13T16:06:12.000Z","updated_at":"2025-03-22T20:53:14.000Z","dependencies_parsed_at":"2024-11-19T22:52:14.153Z","dependency_job_id":null,"html_url":"https://github.com/rutu-sh/cloudlab-tools","commit_stats":{"total_commits":44,"total_committers":2,"mean_commits":22.0,"dds":"0.045454545454545414","last_synced_commit":"3bde0495ade18e0cee7c7f8b9a1f20d46ab78943"},"previous_names":["rutu-sh/ebpf-cloudlab"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rutu-sh%2Fcloudlab-tools","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rutu-sh%2Fcloudlab-tools/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rutu-sh%2Fcloudlab-tools/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rutu-sh%2Fcloudlab-tools/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rutu-sh","download_url":"https://codeload.github.com/rutu-sh/cloudlab-tools/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254567264,"owners_count":22092740,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cloudlab","dpdk","ebpf","nfv","tools"],"created_at":"2024-09-24T21:58:57.495Z","updated_at":"2025-05-16T16:30:49.374Z","avatar_url":"https://github.com/rutu-sh.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# cloudlab-tools\n\n![](./docs/assets/cloudlab_tools.jpg)\n\nThis repository contains the necessary setup tools for working in CloudLab. The intention is to standardize and speed-up the process of setting up the cloudlab environment for various research projects. Though it is extensively used on cloudlab, it can be used to setup any linux machine. Use it as a standalone setup tool for your experiments or import it as a submodule in your repository.\n\nThis repository contains the setup scripts for the following tools: \n1. [Generic](tools/generic/README.md) - contains generic setup tools like Go, docker, etc. \n2. [eBPF](tools/ebpf/README.md) - contains setup tools for eBPF.\n3. [DPDK](tools/dpdk/README.md) - contains setup tools for DPDK.\n4. [OpenNetVM](tools/onvm/README.md) - contains setup tools for OpenNetVM.\n5. [Kubernetes](tools/kubernetes/README.md) - contains setup tools for Kubernetes. \n\n## Setting up CloudLab \n\n1. Create an account on [CloudLab](https://www.cloudlab.us/).\n2. Create an experiment using a profile of your choice. This repository is tested with Ubuntu 22.04 nodes, so make sure to select the appropriate profile. If you don't know which profile to select use the following: \n    - Profile: [small-lan](https://www.cloudlab.us/p/PortalProfiles/small-lan)\n    - Physical Node Type: c220g2/c220g5 \n    - OS Image: Ubuntu 22.04\n3. Wait for the experiment to be ready. Once the experiment is ready, cloudlab will show the status as \"ready\". \n4. Copy the public IP address of the node (ex: `c220g2-010606.wisc.cloudlab.us`, `c220g2-010608.wisc.cloudlab.us`, etc) and paste it to the `.cloudlab/cloudlab_config.mk` in the format `NODE_NAME=\u003cpublic_ip\u003e`. Example: \n```makefile\n# Node 1\nNODE_0=c220g2-010606.wisc.cloudlab.us\n\n# Node 1\nNODE_1=c220g2-010608.wisc.cloudlab.us\n\n# Node 2\nNODE_2=c220g2-010604.wisc.cloudlab.us\n```\n5. Update the `CLOUDLAB_USERNAME` in the `.cloudlab/cloudlab_config.mk` file with your CloudLab username.\n6. Update the `SSH_KEY_PATH` in the `.cloudlab/cloudlab_config.mk` file with the path to your SSH private key.\n\n\n### Syncing code to the cloudlab node \n\nTo rsync the repository code to the cloudlab node, run the following command: \n\n```bash\nmake cl-sync-code NODE={NODE_ID}\n```\n\nThis will sync the code to the ~/src directory by default. To specify the destination directory, run the following command: \n\n```bash\nmake cl-sync-code NODE={NODE_ID} REMOTE_DIR={DEST_DIR}\n```\n\n### SSH into the cloudlab node\n\nTo ssh into the cloudlab node, run the following command: \n\n```bash\nmake cl-ssh-host NODE={NODE_ID}\n```\n\n### SCP files from the cloudlab node\n\nTo scp files from the cloudlab node, run the following command: \n\n```bash\nmake cl-scp-from-host SCP_SRC=\u003cpath-to-remote-source\u003e SCP_DEST=\u003cpath-to-local-dest\u003e NODE=\u003cnode-id\u003e\n```\n\n### Syncing code from the cloudlab node\n\nTo rsync from the cloudlab node to the local machine, run the following command: \n\n```bash\nmake cl-sync-from-host NODE=NODE_0\n```\nThis copies the code from `~/src/\u003cproject\u003e` to the local machine. To specify the source directory, run the following command: \n\n```bash\nmake cl-sync-from-host NODE=NODE_0 REMOTE_DIR=\u003cremote-dir\u003e REMOTE_SUBDIR=\u003cremote-subdir\u003e\n```\n\n### Running commands on the cloudlab node\n\nTo run a command on the cloudlab node, run the following command: \n\n```bash\nmake cl-run-cmd NODE=\u003cnode-id\u003e COMMAND=\u003ccommand\u003e\n```\n\n## Using this Repository as a Submodule\n\nFor building your own projects with the help of CloudLab, it is recommended to add this repository as a submodule to your project. This will allow you to keep the setup tools in sync with the latest changes. Here are the steps to add this repository as a submodule:\n\n1. Create a directory in your project to store this repository as a submodule. For example, create a directory called `setup` in your project. \n```bash\nmkdir setup\n```\n2. In the directory, add this repository as a submodule. \n```bash\ncd setup\n```\n\n```bash\ngit submodule add https://github.com/rutu-sh/cloudlab-tools.git\n```\n\n3. Initialize the submodule. \n```bash\ngit submodule update --init --recursive\n```\n\n4. In the root Makefile of your project, add the following code to the start of the file. \n```makefile\nCL_DIR=${CURDIR}/.cloudlab\nTOOLS_SRC_DIR=${CURDIR}/setup/cloudlab-tools\n\n\ninclude setup/cloudlab-tools/cloudlab_tools.mk\n```\n5. In the root of your project, run the following command to setup cloudlab configurations. \n```bash\nmake cl-setup\n```\nThis will create a `.cloudlab` directory in the root of your project with a `cloudlab_config.mk` file inside the directory. Add this directory to your `.gitignore` file. \n\nIn the `cloudlab_config.mk` add the values for `SSH_KEY_PATH` and `CLOUDLAB_USERNAME`. Then add node-specific configurations as: \n```makefile\nNODE_NAME=\u003cpublic_ip\u003e\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frutu-sh%2Fcloudlab-tools","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frutu-sh%2Fcloudlab-tools","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frutu-sh%2Fcloudlab-tools/lists"}