Struggling with a problem that i just can’t seem to figure out.

When starting from scratch self hosting both the SCM and CI/CD server.

Given that you can’t use an existing setup to deploy/manage it, what is the best practice for deploying said services?

  • slazer2au@lemmy.world
    link
    fedilink
    English
    arrow-up
    1
    ·
    7 months ago

    Isn’t this what bootstrapping is for? Manually set up the system to the point it can be taken over by ci/cd

  • alienscience@programming.dev
    link
    fedilink
    arrow-up
    1
    ·
    7 months ago

    I am not sure if it is best practice, but this is what I do and it might provide some inspiration:

    • Bootstrap from a private gitlab.com repository with a base ansible setup. Executed from a laptop.
    • The bootstrap setups up k8s and installs a bare bones git repository docker container based on https://codeberg.org/al13nsc13nc3/gitsrv.
    • Flux CD is installed into the bare bones git repository and k8s.
    • Flux CD is used to install Forgejo and Woodpecker CI using the bare bones git repository as the gitops source of truth.

    This has the advantage that Gitops and normal git repositories are separate. I think that a similar principle would work with docker compose instead of k8s.

  • icb4dc0de@programming.dev
    link
    fedilink
    arrow-up
    1
    ·
    6 months ago

    I tend to do manual bootstrapping with local execution as well but when using Forgejo/Gitea and corresponding actions you could also init the repo, start building your pipeline and use act to run it (locally at first if course) and as soon as you have your infrastructure in place you could continue to use the same pipeline there?

    Still not ideal/perfect but if you don’t want to depend on some SaaS then this at least already runs the automation as it will be later?

    • Senal@programming.devOP
      link
      fedilink
      English
      arrow-up
      1
      ·
      6 months ago

      Yeah, I’m going with a tiny dedicated infra bootstrapping box with all the tools I’d need to bootstrap the main infrastructure.

      Using a hypervisor (proxmox in this case) I have some prebuilt vms’s and container images that I can use for the bootstrap instances so i’d not need to completely hand roll it again should it be needed.

      I’m looking at cloudinit scripts to see if that’s useful for this.

      I really like packer but I’m hesitant to rely on anything hashicorp until whatever they have going on shakes out.

      Then I just load up the bootstrap box with the main infra code and use woodpecker to deploy.

      Code and config backed up, also mirrored to newly created infra forgejo instances, just in case.

      If I can get a semi presentable cloud init based bootstrap system working nicely I’ll stick it somewhere people can get to it, in case it’s useful to someone else.

      • icb4dc0de@programming.dev
        link
        fedilink
        arrow-up
        1
        ·
        6 months ago

        If you don’t mind I’d be interested in how the cloudinit for proxmox looks like 😁 So far I only used it for Azure and Hetzner Cloud to bootstrap Coder machines but from your description I’d expect that should work. Very cool approach!