WIP: add roles for siguldry server and bridge #3292

Draft
jcline wants to merge 2 commits from jcline/ansible:siguldry into main
Contributor

These roles deploy the Siguldry server and bridge.

There's a few TODOs, and one step that isn't covered at all is the
deployment of the TLS private keys. These need to be encrypted with
systemd-creds, which should be doable via ansible, but the pesign bridge
isn't doing it so I've left it out for now.

Related: infra/tickets#13199

These roles deploy the Siguldry server and bridge. There's a few TODOs, and one step that isn't covered at all is the deployment of the TLS private keys. These need to be encrypted with systemd-creds, which should be doable via ansible, but the pesign bridge isn't doing it so I've left it out for now. Related: https://forge.fedoraproject.org/infra/tickets/issues/13199
jcline force-pushed siguldry from da381cebd9
Some checks are pending
Linter / yamllint (pull_request) Blocked by required conditions
Linter / ansible-lint (pull_request) Blocked by required conditions
to 8523b5d9f2
Some checks failed
Linter / yamllint (pull_request) Failing after 28s
Linter / ansible-lint (pull_request) Successful in 1m14s
2026-04-16 15:24:04 +00:00
Compare
kevin changed title from draft: add roles for siguldry server and bridge to WIP: add roles for siguldry server and bridge 2026-04-30 17:50:59 +00:00
jcline force-pushed siguldry from 8523b5d9f2
Some checks failed
Linter / yamllint (pull_request) Failing after 28s
Linter / ansible-lint (pull_request) Successful in 1m14s
to 7749af7760
All checks were successful
Linter / yamllint (pull_request) Successful in 25s
Linter / ansible-lint (pull_request) Successful in 1m6s
2026-05-04 16:49:21 +00:00
Compare
Author
Contributor

So, this mostly works with the caveat that it needs EPEL 10.2 (so either CentOS stream or the not-yet-released EL10.2). In theory we could install the siguldry and kryoptic RPMs on 10.1 and it would probably be fine.

The outstanding question for me is how do we want to handle the private keys for the PKI. One option would be to do something like:

openssl req -new -nodes -sha256 \
    -addext "subjectAltName = DNS:siguldry-server.example.com" \
    -addext "extendedKeyUsage = clientAuth,serverAuth" \
    -subj "/CN=siguldry-server.example.com" \
    -keyout - \
    -newkey rsa:4096 \
    -out server.csr | \
    sudo systemd-creds encrypt - \
    /etc/credstore.encrypted/siguldry.server.private_key.pem

and then deal with signing the CSR wherever the CA lives rather than copying private keys around. I didn't see anything in the pesign_bridge role to use as inspiration, so I assume it was handled by hand?

So, this mostly works with the caveat that it needs EPEL 10.2 (so either CentOS stream or the not-yet-released EL10.2). In theory we could install the siguldry and kryoptic RPMs on 10.1 and it would probably be fine. The outstanding question for me is how do we want to handle the private keys for the PKI. One option would be to do something like: ```bash openssl req -new -nodes -sha256 \ -addext "subjectAltName = DNS:siguldry-server.example.com" \ -addext "extendedKeyUsage = clientAuth,serverAuth" \ -subj "/CN=siguldry-server.example.com" \ -keyout - \ -newkey rsa:4096 \ -out server.csr | \ sudo systemd-creds encrypt - \ /etc/credstore.encrypted/siguldry.server.private_key.pem ``` and then deal with signing the CSR wherever the CA lives rather than copying private keys around. I didn't see anything in the pesign_bridge role to use as inspiration, so I assume it was handled by hand?
jcline force-pushed siguldry from 7749af7760
All checks were successful
Linter / yamllint (pull_request) Successful in 25s
Linter / ansible-lint (pull_request) Successful in 1m6s
to ebaf8210f3
All checks were successful
Linter / yamllint (pull_request) Successful in 27s
Linter / ansible-lint (pull_request) Successful in 1m13s
2026-06-02 18:47:04 +00:00
Compare
siguldry: raise max connections on the signing helper
All checks were successful
Linter / yamllint (pull_request) Successful in 27s
Linter / ansible-lint (pull_request) Successful in 1m17s
f4b8c5cb84
This is controls (indirectly) the number of concurrent signing
operations.

Signed-off-by: Jeremy Cline <jeremycline@microsoft.com>
Owner

Hopefully @james will get cycles to work on this soon... or failing that I can try. :)

I think it looks pretty reasonable... we should also adjust (for staging only at first) the manual/ playbooks for the vault and the normal playbook for the bridge. Or we could just make new playbooks for them. We don't have any installed in staging, so we should make new sign-bridge01.stg and sign-vault01.stg vm's there.

I think we should just follow the same pattern we used for the pesign bridge. That is that a admin will add the creds on any reboots. Currently the bridge just has the cert .key on disk and has no passphrase, but we can/should just have admins install the creds on reboots.

Hopefully @james will get cycles to work on this soon... or failing that I can try. :) I think it looks pretty reasonable... we should also adjust (for staging only at first) the manual/ playbooks for the vault and the normal playbook for the bridge. Or we could just make new playbooks for them. We don't have any installed in staging, so we should make new sign-bridge01.stg and sign-vault01.stg vm's there. I think we should just follow the same pattern we used for the pesign bridge. That is that a admin will add the creds on any reboots. Currently the bridge just has the cert .key on disk and has no passphrase, but we can/should just have admins install the creds on reboots.
All checks were successful
Linter / yamllint (pull_request) Successful in 27s
Linter / ansible-lint (pull_request) Successful in 1m17s
This pull request is marked as a work in progress.
This branch is out-of-date with the base branch
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u siguldry:jcline-siguldry
git switch jcline-siguldry

Merge

Merge the changes and update on Forgejo.

Warning: The "Autodetect manual merge" setting is not enabled for this repository, you will have to mark this pull request as manually merged afterwards.

git switch main
git merge --no-ff jcline-siguldry
git switch jcline-siguldry
git rebase main
git switch main
git merge --ff-only jcline-siguldry
git switch jcline-siguldry
git rebase main
git switch main
git merge --no-ff jcline-siguldry
git switch main
git merge --squash jcline-siguldry
git switch main
git merge --ff-only jcline-siguldry
git switch main
git merge jcline-siguldry
git push origin main
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
infra/ansible!3292
No description provided.