Files
computer-playbook/roles/web-app-bluesky/tasks/03_dns.yml
Kevin Veen-Birkenbach 974a83fe6e web-app-bluesky: enable custom AppView domain and refactor DNS records
- Un-commented `view.bluesky.{{ PRIMARY_DOMAIN }}` in config to allow
  explicit AppView domain definition.
- Reworked `03_dns.yml` to build `cloudflare_records` list programmatically,
  including conditional addition of AppView records only if the domain is
  not `api.bsky.app`.
- Improved AAAA handling with `| default('')` and proper ternary
  expressions for `present/absent`.
- Updated `vars/main.yml` to remove default port fallback for
  `BLUESKY_VIEW_PORT`.

Refs: https://chatgpt.com/share/68cdde1d-1bd4-800f-a4bb-319372752fcd
2025-09-20 00:50:31 +02:00

95 lines
3.0 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
- name: "DNS (Cloudflare) for Bluesky base records"
include_role:
name: sys-dns-cloudflare-records
when: DNS_PROVIDER | lower == 'cloudflare'
vars:
cloudflare_records: >-
{{
[
{
'type': 'A',
'zone': (BLUESKY_API_DOMAIN | to_zone),
'name': BLUESKY_API_DOMAIN,
'content': networks.internet.ip4,
'solo': True,
'proxied': False,
},
{
'type': 'AAAA',
'zone': (BLUESKY_API_DOMAIN | to_zone),
'name': BLUESKY_API_DOMAIN,
'content': (networks.internet.ip6 | default('')),
'proxied': False,
'solo': True,
'state': (
((networks.internet.ip6 is defined) and ((networks.internet.ip6 | string) | length > 0))
| ternary('present','absent')
),
},
{
'type': 'TXT',
'zone': (PRIMARY_DOMAIN | to_zone),
'name': "_atproto.%s" % PRIMARY_DOMAIN,
'value': '"did=did:web:%s"' % BLUESKY_API_DOMAIN,
'solo': True,
},
{
'type': 'A',
'solo': True,
'zone': (BLUESKY_WEB_DOMAIN | to_zone),
'name': BLUESKY_WEB_DOMAIN,
'content': networks.internet.ip4,
'proxied': True,
'state': ((BLUESKY_WEB_ENABLED | bool) | ternary('present','absent')),
},
{
'type': 'AAAA',
'solo': True,
'zone': (BLUESKY_WEB_DOMAIN | to_zone),
'name': BLUESKY_WEB_DOMAIN,
'content': (networks.internet.ip6 | default('')),
'proxied': True,
'state': (
((BLUESKY_WEB_ENABLED | bool)
and (networks.internet.ip6 is defined)
and ((networks.internet.ip6 | string) | length > 0))
| ternary('present','absent')
),
},
]
+
(
(BLUESKY_VIEW_DOMAIN != 'api.bsky.app')
| ternary([
{
'type': 'A',
'solo': True,
'zone': (BLUESKY_VIEW_DOMAIN | to_zone),
'name': BLUESKY_VIEW_DOMAIN,
'content': networks.internet.ip4,
'proxied': False,
'state': (
((BLUESKY_VIEW_ENABLED | bool))
| ternary('present','absent')
),
},
{
'type': 'AAAA',
'solo': True,
'zone': (BLUESKY_VIEW_DOMAIN | to_zone),
'name': BLUESKY_VIEW_DOMAIN,
'content': (networks.internet.ip6 | default('')),
'proxied': False,
'state': (
((BLUESKY_VIEW_ENABLED | bool)
and (networks.internet.ip6 is defined)
and ((networks.internet.ip6 | string) | length > 0))
| ternary('present','absent')
),
}
],
[])
)
}}