{"id":20631218,"url":"https://github.com/solidlabresearch/solidlab-env-setup","last_synced_at":"2026-02-01T22:02:28.012Z","repository":{"id":210061597,"uuid":"725577197","full_name":"SolidLabResearch/solidlab-env-setup","owner":"SolidLabResearch","description":"Ansible scripts to setup solid servers and clients for SolidLab","archived":false,"fork":false,"pushed_at":"2024-12-17T13:51:54.000Z","size":1252,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-09-26T17:47:40.153Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SolidLabResearch.png","metadata":{"files":{"readme":"README-existing.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2023-11-30T12:44:58.000Z","updated_at":"2024-12-17T13:51:58.000Z","dependencies_parsed_at":"2023-12-12T14:28:07.102Z","dependency_job_id":"3b13340f-0f81-4709-8c2b-635d914bae11","html_url":"https://github.com/SolidLabResearch/solidlab-env-setup","commit_stats":null,"previous_names":["solidlabresearch/solidlab-env-setup"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/SolidLabResearch/solidlab-env-setup","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SolidLabResearch%2Fsolidlab-env-setup","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SolidLabResearch%2Fsolidlab-env-setup/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SolidLabResearch%2Fsolidlab-env-setup/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SolidLabResearch%2Fsolidlab-env-setup/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SolidLabResearch","download_url":"https://codeload.github.com/SolidLabResearch/solidlab-env-setup/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SolidLabResearch%2Fsolidlab-env-setup/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28992650,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-01T22:01:47.507Z","status":"ssl_error","status_checked_at":"2026-02-01T21:58:37.335Z","response_time":56,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":[],"created_at":"2024-11-16T14:11:34.351Z","updated_at":"2026-02-01T22:02:27.996Z","avatar_url":"https://github.com/SolidLabResearch.png","language":"Shell","readme":"## Install on existing servers\n\nUpsides:\n- Real bare metal or VMs\n- DNS, so working https\n\nDownsides:\n- Slow\n- Multiple steps\n\nPrerequisites:\n- Install [ansible](https://docs.ansible.com/ansible/latest/installation_guide/index.html)\n\nOptional instructions are included to get the needed bare metal servers using jFed (Using an RSpec instead of an ESpec). This requires extra prerequisites:\n- Install [cookiecutter](https://github.com/cookiecutter/cookiecutter#installation) (`apt install cookiecutter`)\n- Install [jFed GUI/CLI2](https://jfed.ilabt.imec.be/downloads/)   (You need at least **jFed 6.4.7**!)\n\n### Optional Step 0: Get bare metal resources using jFed.\n\nEdit `espec/cookiecutter.json` to customize some parameters. \nThe most obvious one to change is `server_count`, to select the number of servers needed. \n\nThings to edit:\n- `espec_name`: The nickname of the generated espec. This will be used as a dir name, so best use only the chars `A-Za-z0-9_`.\n- `server_count`: How many CSS servers do you want?\n- `client_count`: How many machines do you want as clients? (leave as 0 if all you need are CSS servers)\n- `component_manager_urn`: This selects which testbed is used. Each testbed has a \"component manager URN\" that identifies it.\n- `disk_image_name`: If you change the testbed, you'll need to change the diskimage to an appropriate disk image.\n- `server_hardware_type_name`: If not set to `\"none\"`, this is the name of the \"hardware type\" of the testbed to use for server nodes. \n- `client_hardware_type_name`: If not set to `\"none\"`, this is the name of the \"hardware type\" of the testbed to use for client nodes. \n\nUse cookiecutter to generate an ESpec with the number of nodes you need.\n\nExecute this in the repository root dir:\n\n```shell\ncookiecutter --no-input --verbose --output-dir generated_espec espec\n```\n\nThis will create a dir `generated_espec/\u003cespec_name\u003e/` containing the ESpec. (where `\u003cespec_name\u003e` is the `espec_name` set in step 1 in `espec/cookiecutter.json`)\n\nWe won't use the ESpec, we will only use the RSpec: `generated_espec/\u003cespec_name\u003e/solidlab-env.rspec`\n\nOpen the RSpec in the jFed GUI, and start an experiment. When it's ready, use the button in jFed to store the ansible inventory file.\n\n### Step 1: Get the ansible inventory file\n\nTo let ansible install the machines, you need an ansible inventory file.\n\nIf you used jFed to set up the resources, you can use the button in jFed to store the ansible inventory file.\n\nOtherwise, you'll need to [create the inventory file](https://docs.ansible.com/ansible/latest/inventory_guide/intro_inventory.html). An example:\n```ini\n[nodes]\nss0      ansible_ssh_host=node1.example.com\tansible_ssh_port=22\tansible_ssh_user=solid \nss1      ansible_ssh_host=node2.example.com\tansible_ssh_port=22\tansible_ssh_user=solid \nclient0  ansible_ssh_host=node3.example.com\tansible_ssh_port=22\tansible_ssh_user=solid \n\n[clients]\nclient0  ansible_ssh_host=node3.example.com ansible_ssh_port=22\tansible_ssh_user=solid \n\n[ss_servers]\nss0      ansible_ssh_host=node1.example.com\tansible_ssh_port=22\tansible_ssh_user=solid \nss1      ansible_ssh_host=node2.example.com\tansible_ssh_port=22\tansible_ssh_user=solid \n```\n\n### Step 2: Configure ansible variables\n\nSet the ansible variables in `ansible-variables.yaml`.\n\nYou can mostly leave these as is, but this variable is useful:\n- `ss_use_https`: set to `true` for https (recommended), `false` for http.\n\nRun ansible from this repo's root dir, like this:\n\n```shell\nansible-galaxy install -r ansible-galaxy-requirements.yaml\n\nexport ANSIBLE_SSH_ARGS='-o ForwardAgent=yes -o ControlMaster=auto -o ControlPersist=60s'\nexport ANSIBLE_CONNECTION='ssh'\nansible-playbook --inventory your_ansible_inventory_file playbook.yaml\n```\n\nIf you need to rerun the playbook, you'll only need the last line.\n\n### Step 4 (optional): Extract css root URL list (JSON) \n\nAnsible will write files with server URL info. \nYou can use this to gather all URLs using this command:\n\n```shell\ncat ~/ansible/ss_url_* \u003e all_urls\n```\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsolidlabresearch%2Fsolidlab-env-setup","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsolidlabresearch%2Fsolidlab-env-setup","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsolidlabresearch%2Fsolidlab-env-setup/lists"}