{"id":40212185,"url":"https://github.com/ssm/ssm-anycast_rip","last_synced_at":"2026-01-19T21:32:09.045Z","repository":{"id":66468105,"uuid":"299016360","full_name":"ssm/ssm-anycast_rip","owner":"ssm","description":"Puppet module for configuring \"bird\" to announce anycast service IP addresses with RIP.  Note: Old module, does not work with bird v1.6 or newer.","archived":false,"fork":false,"pushed_at":"2024-09-16T18:48:50.000Z","size":102,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-09-16T23:45:18.252Z","etag":null,"topics":["anycast","bird","puppet","puppet-module","rip"],"latest_commit_sha":null,"homepage":"","language":"Ruby","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/ssm.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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}},"created_at":"2020-09-27T11:24:06.000Z","updated_at":"2024-09-16T18:48:54.000Z","dependencies_parsed_at":"2023-10-11T07:43:21.395Z","dependency_job_id":"c55719f2-ae00-4f1f-ace1-391bb2b3eade","html_url":"https://github.com/ssm/ssm-anycast_rip","commit_stats":{"total_commits":47,"total_committers":2,"mean_commits":23.5,"dds":0.08510638297872342,"last_synced_commit":"e04bd04f51f60e5b7e287f321d5e4d11217024b8"},"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/ssm/ssm-anycast_rip","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ssm%2Fssm-anycast_rip","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ssm%2Fssm-anycast_rip/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ssm%2Fssm-anycast_rip/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ssm%2Fssm-anycast_rip/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ssm","download_url":"https://codeload.github.com/ssm/ssm-anycast_rip/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ssm%2Fssm-anycast_rip/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28585490,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-19T20:45:59.482Z","status":"ssl_error","status_checked_at":"2026-01-19T20:45:41.500Z","response_time":67,"last_error":"SSL_read: 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":["anycast","bird","puppet","puppet-module","rip"],"created_at":"2026-01-19T21:32:08.307Z","updated_at":"2026-01-19T21:32:09.030Z","avatar_url":"https://github.com/ssm.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"# anycast_rip\n\n## Table of Contents\n\n1. [Description](#description)\n1. [Setup - The basics of getting started with anycast_rip](#setup)\n    * [What anycast_rip affects](#what-anycast_rip-affects)\n    * [Setup requirements](#setup-requirements)\n    * [Beginning with anycast_rip](#beginning-with-anycast_rip)\n1. [Usage - Configuration options and additional functionality](#usage)\n1. [Limitations - OS compatibility, etc.](#limitations)\n1. [Development - Guide for contributing to the module](#development)\n\n## Description\n\nThis module configures bird and bird6 for announcing anycast service\naddresses using the RIP routing protocol.\n\n## Setup\n\n### What anycast_rip affects\n\nThis module configures geographically redundant service IP addresses\nwithin a multi-datacenter network. Clients will be routed to the\nclosest data center announcing the service.\n\nThe software used is `bird`. The configuration will announce IPV6 and\nIPv4 service addresses to be picked up by the closest router, and\ndistributed within the network by another routing protocol (`OSPF` in\nthis document, but other routing protocols will work).\n\nThis is typically combined on each host with `keepalived` using\nservice health checks for only announcing services in working order.\n\nAnd it uses RIP to do it. Deal with it. :-)\n\n### Setup Requirements\n\n* Establish a set of data centers for hosting services, with a routing\n  protocol between data centers. For this example, \"OSPF\", but other\n  routing protocols will also work.\n\n### Beginning with anycast_rip\n\n* Choose network prefixes for anycast service IP addresses.\n* Announce the prefixes locally on all datacenters.\n* Configure routers to allow servers to announce service IP addresses\n  with RIP within these prefixes.\n* Permit the RIP received routes to be announced as OSPF routes.\n* Inspect the OSPF routes to see the CIDR ranges from each site.\n* Include this module, configure network prefixes and interface.\n* When a service is up, see the service IP being present in the RIP\n  table on the host and the OSPF tables on routers from multiple\n  sites. Clients will pick the closest instance.\n\n## Usage\n\nBasic usage of the module: This will install the daemons and\nconfiguration, but will not announce any addresses:\n\n```puppet\ninclude anycast_rip\n```\n\nAdvanced example: Restrict to IPv6 only (IPv4 is obsolete and long\ngone by now, right?), announce to an external network interface, and\nadd network prefixes for filtering service addresses to announce.\n\nAny local IP addresses within this prefix will be announced. Please\nuse a separate network prefix from your interface link-local routes.\n\n```puppet\nclass { 'anycast_rip':\n  instances         =\u003e ['bird6'],\n  network_interface =\u003e 'team0',\n  network_prefixes  =\u003e ['2001:db8::/64'],\n}\n```\n\n## Limitations\n\nThis module only configures RIP version 2, no other routing protocols.  It\nworks with bird version 1.6, but not with bird 2.0 and newer.\n\n## Development\n\nIn the Development section, tell other users the ground rules for contributing\nto your project and how they should submit their work.\n\n## Release Notes/Contributors/Etc. **Optional**\n\nIf you aren't using changelog, put your release notes here (though you should\nconsider using changelog). You can also add any additional sections you feel are\nnecessary or important to include here. Please use the `##` header.\n\n[1]: https://puppet.com/docs/pdk/latest/pdk_generating_modules.html\n[2]: https://puppet.com/docs/puppet/latest/puppet_strings.html\n[3]: https://puppet.com/docs/puppet/latest/puppet_strings_style.html\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fssm%2Fssm-anycast_rip","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fssm%2Fssm-anycast_rip","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fssm%2Fssm-anycast_rip/lists"}