{"id":26059664,"url":"https://github.com/orange-cloudfoundry/mdproxy4cs","last_synced_at":"2026-01-05T22:14:52.387Z","repository":{"id":41047240,"uuid":"162494283","full_name":"orange-cloudfoundry/mdproxy4cs","owner":"orange-cloudfoundry","description":"User metadata proxy server for cloudstack","archived":false,"fork":false,"pushed_at":"2025-06-23T22:12:56.000Z","size":6173,"stargazers_count":1,"open_issues_count":2,"forks_count":0,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-06-23T23:25:07.365Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/orange-cloudfoundry.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,"zenodo":null}},"created_at":"2018-12-19T21:47:28.000Z","updated_at":"2025-06-23T22:12:51.000Z","dependencies_parsed_at":"2023-02-02T14:47:13.927Z","dependency_job_id":"25e988eb-a65e-44af-800d-5009f215b63c","html_url":"https://github.com/orange-cloudfoundry/mdproxy4cs","commit_stats":null,"previous_names":[],"tags_count":64,"template":false,"template_full_name":null,"purl":"pkg:github/orange-cloudfoundry/mdproxy4cs","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/orange-cloudfoundry%2Fmdproxy4cs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/orange-cloudfoundry%2Fmdproxy4cs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/orange-cloudfoundry%2Fmdproxy4cs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/orange-cloudfoundry%2Fmdproxy4cs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/orange-cloudfoundry","download_url":"https://codeload.github.com/orange-cloudfoundry/mdproxy4cs/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/orange-cloudfoundry%2Fmdproxy4cs/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":268363045,"owners_count":24238550,"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","status":"online","status_checked_at":"2025-08-02T02:00:12.353Z","response_time":74,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":"2025-03-08T13:27:23.186Z","updated_at":"2026-01-05T22:14:52.331Z","avatar_url":"https://github.com/orange-cloudfoundry.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# MetaData Proxy 4 CloudStack\n\n`mdproxy4cs` is installed in our BOSH stemcell where it is used\nto abstract the complexity to access the IaaS metadata from CloudStack\nneeded by the bosh-agent to finalise the virtual machines' configuration.\n\nWorkflow:\n\n- bosh-agent first boot: set up a static configuration inside the VM\n- `mdproxy4cs` start!\n\n  - set up a predetermined Link-local IP address and listen on the defined port\n    (`MDPROXY4CS_HTTP_LISTEN`)\n  - discover the IaaS IP address serving the metadata\n    (`MDPROXY4CS_INAME`)\n\n- bosh-agent second boot: request the VM metadata to the IaaS\n  through `mdproxy4cs`\n\n## Usage\n\nInstallation example:\n\n```sh\ntempdir=$(mktemp -d)\nrepo=\"orange-cloudfoundry/mdproxy4cs\"\nversion=$(curl -fsL \"https://api.github.com/repos/${repo}/releases/latest\" | sed -n -e 's/.*\"tag_name\":[[:space:]]*\"v\\([^\"]*\\)\".*/\\1/p')\nname=\"mdproxy4cs_${version}_linux_amd64\"\n\ncurl -fsL \"https://github.com/${repo}/releases/download/v${version}/${name}.tar.gz\" |\ntar -xz -C \"$tempdir\"\n\ninstall -m 0755 -D \"${tempdir}/${name}/mdproxy4cs\" /usr/bin/mdproxy4cs\ninstall -m 0644 -D \"${tempdir}/${name}/assets/default\" /etc/default/mdproxy4cs\ninstall -m 0644 -D \"${tempdir}/${name}/assets/mdproxy4cs.service\" /usr/share/mdproxy4cs/mdproxy4cs.service\ninstall -m 0755 -D \"${tempdir}/${name}/assets/pre-start.sh\" /usr/share/mdproxy4cs/pre-start.sh\n\nsystemctl enable /usr/share/mdproxy4cs/mdproxy4cs.service\n\nrm -rf \"${tempdir}\"\n```\n\n## Why?\n\nThe metadata are provided by the CloudStacks virtual routers.\nBefore CloudStack 4.14 (more exactly the patch:\n[#3587](https://github.com/apache/cloudstack/pull/3587)\nvRouter in redundant mode acquire guest IP from first IP of the tier),\nthe IP addresses of the vRouters was not set.\nThey could be found through DHCP requests,\nbut changed over time\n(when a vRouter was recreated and the bosh-agent restarted for one case,\nor the connectivity to the BOSH director is temporarily lost).\n\nThis made the process of acquiring the metadata complex and unreliable;\nthus this middleware was made.\n\nAs of today, we are investigating to replace this component by a more\nversatile and widely adopted one,\nsuch as [cloud-init](https://github.com/canonical/cloud-init/).\n\nStay tuned for more.\n\n## Related resources\n\n- \u003chttps://www.cloudfoundry.org/\u003e,\n  \u003chttps://github.com/cloudfoundry/bosh-linux-stemcell-builder\u003e\n- \u003chttps://cloudstack.apache.org/\u003e\n  (\u003chttps://github.com/apache/cloudstack/\u003e)\n\n  - \u003chttp://docs.cloudstack.apache.org/en/4.14.0.0/adminguide/api.html#user-data-and-meta-data\u003e\n  - \u003chttp://docs.cloudstack.apache.org/en/4.14.0.0/adminguide/virtual_machines/user-data.html#user-data-and-meta-data\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Forange-cloudfoundry%2Fmdproxy4cs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Forange-cloudfoundry%2Fmdproxy4cs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Forange-cloudfoundry%2Fmdproxy4cs/lists"}