{"id":21635,"library":"octodns","title":"OctoDNS","description":"OctoDNS is an infrastructure-as-code tool for managing DNS records across multiple providers. Current version 1.16.0, requires Python >=3.9. Released on a variable cadence, approximately quarterly.","status":"active","version":"1.16.0","language":"python","source_language":"en","source_url":"https://github.com/octodns/octodns","tags":["dns","infrastructure-as-code","dns-management","octodns"],"install":[{"cmd":"pip install octodns","lang":"bash","label":"Core installation"},{"cmd":"pip install octodns[aws,cloudflare,google]","lang":"bash","label":"Install with common providers"}],"dependencies":[],"imports":[{"note":"Wrong path - YAML provider is in octodns.provider.yaml","wrong":"from octodns.yaml import YamlProvider","symbol":"YamlProvider","correct":"from octodns.provider.yaml import YamlProvider"},{"note":"Manager is not exposed at top-level package","wrong":"from octodns import Manager","symbol":"Manager","correct":"from octodns.manager import Manager"}],"quickstart":{"code":"from octodns.manager import Manager\nfrom octodns.provider.yaml import YamlProvider\nfrom octodns.source.yaml import YamlSource\nfrom octodns.zone import Zone\n\n# Minimal configuration\nconfig = {\n    'manager': {\n        'id': 'test',\n        'sources': ['config'],\n        'providers': {'config': {'class': 'octodns.provider.yaml.YamlProvider'}},\n    }\n}\n\nzone = Zone('example.com.', [])","lang":"python","description":"Basic setup for managing a zone with YAML configuration."},"warnings":[{"fix":"Update imports to octodns.manager, octodns.provider.yaml, etc. Refer to migration guide.","message":"The 'manager' and 'source' directory structure changed in v1.0.0. Existing configs that rely on old import paths or YAML format may break.","severity":"breaking","affected_versions":"<1.0.0"},{"fix":"Replace import 'octodns.providers' with 'octodns.provider'.","message":"Provider modules that previously lived in octodns.providers (plural) have been moved to octodns.provider (singular) in v1.0.0.","severity":"breaking","affected_versions":"<1.0.0"},{"fix":"Always include trailing dot on FQDN zone names.","message":"Trailing dot required on zone names (e.g., 'example.com.' not 'example.com'). Missing dot causes validation errors.","severity":"gotcha","affected_versions":"all"},{"fix":"Use paths relative to the config file, or use absolute paths with care.","message":"YAML provider expects file paths relative to the config directory; absolute paths may not work as expected.","severity":"gotcha","affected_versions":"all"}],"env_vars":null,"last_verified":"2026-04-27T00:00:00.000Z","next_check":"2026-07-26T00:00:00.000Z","problems":[{"fix":"Use 'from octodns.provider.yaml import YamlProvider' (singular).","cause":"Import path changed in v1.0.0: 'providers' -> 'provider'.","error":"ModuleNotFoundError: No module named 'octodns.providers'"},{"fix":"Add trailing dot: 'example.com.'","cause":"Zone name string missing trailing dot.","error":"Validation error: Zone name must end with a '.'"},{"fix":"Ensure manager config has a 'sources' list and correct file paths.","cause":"Missing or misconfigured 'sources' key in manager config or YAML file path is wrong.","error":"octodns.manager.Manager: 'config' is not a valid source"}],"ecosystem":"pypi","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}