Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Create a command to perform DNS records swap so that we don't have to do it manually. #2041

Open
17 tasks
rija opened this issue Sep 25, 2024 · 1 comment
Open
17 tasks

Comments

@rija
Copy link
Contributor

rija commented Sep 25, 2024

User story

As a developer
I want a tool to perform DNS record swap
So that rapidly and safely switch DNS record between Current Production and Hot Stand-by infrastructures

Acceptance criteria

Given Upstream project's staging is available at staging.gigadb.org
and the UpstreamAlt project's staging is available at alt-staging.gigadb.host
When I run the DNS swap tool
Then Upstream project's staging is available at alt-staging.gigadb.host
And UpstreamAlt project's staging is available at staging.gigadb.org

Given Upstream project's staging is available at alt-staging.gigadb.host
and the UpstreamAlt project's staging is available at staging.gigadb.org
When I run the DNS swap tool
Then Upstream project's staging is available at staging.gigadb.org
And UpstreamAlt project 's staging is available at alt-staging.gigadb.host

Given Upstream project 's live is available at gigadb.org
and the UpstreamAlt project's live is available at alt-live.gigadb.host
When I run the DNS swap tool
Then Upstream project's live is available at alt-live.gigadb.host
And UpstreamAlt project's live is available at gigadb.org

Given Upstream project's live is available at alt-live.gigadb.host
and the UpstreamAlt project's live is available at gigadb.org
When I run the DNS swap tool
Then Upstream project's live is available at gigadb.org
And UpstreamAlt project's live is available at alt-live.gigadb.host

Given Upstream project 's live is available at files.gigadb.org
and the UpstreamAlt project's live is available at files.alt-live.gigadb.host
When I run the DNS swap tool
Then Upstream project's live is available at files.alt-live.gigadb.host
And UpstreamAlt project's live is available at files.gigadb.org

Given Upstream project's live is available at files.alt-live.gigadb.host
and the UpstreamAlt project's live is available at files.gigadb.org
When I run the DNS swap tool
Then Upstream project's live is available at files.gigadb.org
And UpstreamAlt project's live is available at files.alt-live.gigadb.host

Additional Info

Cloudflare API docs will be useful:
https://developers.cloudflare.com/dns/manage-dns-records/how-to/create-dns-records/#create-dns-records

A good approach is to use Bind Zone files, and then use Cloudflare import/export API:
https://developers.cloudflare.com/dns/manage-dns-records/how-to/import-and-export/

Tasks:

  • Export DNS records used by Upstream and Upstream alternative as Zone files to be stored in Gitlab variables
  • Write a script that can load zone file into Cloudflare
  • Make the script smart and error-proof so it loads the correct zone based on who is Current Production and who is Hot Stand-by and whether we are making a deployment or a rollback

Product Backlog Item Ready Checklist

  • Business value is clearly articulated
  • Item is understood enough by the IT team so it can make an informed decision as to whether it can complete this item
  • Dependencies are identified and no external dependencies would block this item from being completed
  • At the time of the scheduled sprint, the IT team has the appropriate composition to complete this item
  • This item is estimated and small enough to comfortably be completed in one sprint
  • Acceptance criteria are clear and testable
  • Performance criteria, if any, are defined and testable
  • The Scrum team understands how to demonstrate this item at the sprint review

Product Backlog Item Done Checklist

  • Item(s) in increment pass all Acceptance Criteria
  • Code is refactored to best practices and coding standards
  • Documentation is updated as needed
  • Data security has not been compromised (with particular reference to the personal information we hold in GigaDB)
  • No deviation from the team technology stack and software architecture has been introduced
  • The product is in a releasable state (i.e. the increment has not broken anything)
@rija
Copy link
Contributor Author

rija commented Sep 30, 2024

can this help with no-dowtime backup of the database?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: To Estimate
Development

No branches or pull requests

1 participant