{"id":24906204,"url":"https://github.com/neillc/highly-available-haproxy","last_synced_at":"2026-05-04T03:35:16.776Z","repository":{"id":72711454,"uuid":"470085676","full_name":"neillc/highly-available-haproxy","owner":"neillc","description":"HEAT templates and ansible for creating a highly available HA proxy setup","archived":false,"fork":false,"pushed_at":"2022-03-15T09:21:50.000Z","size":25,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"main","last_synced_at":"2026-02-10T18:46:45.742Z","etag":null,"topics":["ansible","haproxy","heat","keepalived"],"latest_commit_sha":null,"homepage":"","language":"Python","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/neillc.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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}},"created_at":"2022-03-15T09:21:30.000Z","updated_at":"2022-03-15T09:23:16.000Z","dependencies_parsed_at":"2023-03-03T00:45:46.558Z","dependency_job_id":null,"html_url":"https://github.com/neillc/highly-available-haproxy","commit_stats":{"total_commits":1,"total_committers":1,"mean_commits":1.0,"dds":0.0,"last_synced_commit":"5c445b045cf4a2e597824e862d071f9af15d1d7a"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/neillc/highly-available-haproxy","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/neillc%2Fhighly-available-haproxy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/neillc%2Fhighly-available-haproxy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/neillc%2Fhighly-available-haproxy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/neillc%2Fhighly-available-haproxy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/neillc","download_url":"https://codeload.github.com/neillc/highly-available-haproxy/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/neillc%2Fhighly-available-haproxy/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32593944,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-03T22:12:39.696Z","status":"online","status_checked_at":"2026-05-04T02:00:06.625Z","response_time":58,"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":["ansible","haproxy","heat","keepalived"],"created_at":"2025-02-02T00:39:08.616Z","updated_at":"2026-05-04T03:35:16.762Z","avatar_url":"https://github.com/neillc.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"HEAT templates and ansible for creating a highly available HA proxy setup. The\nansible is not dependant on OpenStack so you don't have to use HEAT, but it's\nwhat I have chosen for this demo. As long as you have servers that ansible can\nconnect to using ssh the playbook should still work.\n\nThe HowToTest.md document has more details on creating the environment and\ntesting that everything works.\n\nCreate the environment by running the HEAT templates\n```bash\ncd heat\nopenstack stack create -t ha-proxy-env.yaml ha2-proxy --wait -e env.yaml\n```\n\nIf you need to re-create the stack:\n\n```bash\nopenstack stack delete ha2-proxy --wait -v --yes\n```\n\nCreate the ansible inventory by running the build_inventory.py script\n\n```bash\nopenstack server list --format json --long | python build_inventory.py \u003e ansible/inventory\n```\n\nAlso update the group_vars file to reference the new bastion or ssh to internal\nhosts will not work.\n\nThere is a some helper script that might be useful here, see \nbuild_group_vars.py.\n\nRun the ansible playbook (will take a long time because of the dnf updates). \nWait for ssh to be available on the VMs before running the playbook.\n\nThe playbook expects a number of variables to be passed as \"extra variables\".\nThis can be done either by passing each variable on the command line or using a\nfile containing the variables.\n\nThe variables are:\n\nsatellite_host: Hostname or IP address of a satellite host to register the VMs \nto.\n\ndisable_gpg: Disable gpg checks for dnf. Either true or false.\n\nsatellite_org: The organisation name to use when registering to satellite.\n\nsatellite_activation_key:  The activatiojn key\\to use when registering to\nsatellite.\n\nha_backend_test_port: The port number for the second test app (the first app\nassumes port 80, the second one is intended to test using a different port)\n\nvrrp_password: The password for vrrp authentication by keepalived.\n\nThere's env.yaml.sample file in the ansible directory to use as a template.\n\n```bash\ncd ansible\nansible-playbook -i inventory playbook.yaml \\\n  -e \"satellite_host=satellite.example.com\" \\\n  -e 'satellite_org=\"Example Org\"' \\ \n  -v\n```\n\nor\n\n```bash\nansible-playbook -i inventory playbook.yaml -v -e @env.yaml\n```\n\n## Network Diagram\n\n![Network Diagram](HAProxy.png)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fneillc%2Fhighly-available-haproxy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fneillc%2Fhighly-available-haproxy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fneillc%2Fhighly-available-haproxy/lists"}