feat(semaphore): add idempotent initial admin user creation

- New variables for admin user (password from vault)
- Task checks if user exists before creating
- Uses podman exec + semaphore CLI
This commit is contained in:
Hermes Agent service account
2026-05-27 21:56:36 -05:00
parent 0116ec4cc3
commit 3f1c3a40cf
2 changed files with 30 additions and 2 deletions

View File

@@ -23,4 +23,9 @@ semaphore_db_path: "{{ semaphore_data_dir }}/database.boltdb"
# Vault variables (defined in group_vars/all/vault) # Vault variables (defined in group_vars/all/vault)
# vault_semaphore_admin_password # vault_semaphore_admin_password
# vault_semaphore_access_key_encryption # vault_semaphore_access_key_encryption
# Initial admin user (password should come from vault)
semaphore_admin_user: admin
semaphore_admin_name: Administrator
semaphore_admin_email: admin@local.mk-labs.cloud
# semaphore_admin_password: defined in vault

View File

@@ -76,4 +76,27 @@
daemon_reload: true daemon_reload: true
name: "container-{{ semaphore_container_name }}.service" name: "container-{{ semaphore_container_name }}.service"
state: started state: started
enabled: true enabled: true
- name: Check if admin user already exists
ansible.builtin.command:
cmd: "podman exec {{ semaphore_container_name }} semaphore user list"
register: semaphore_user_list
changed_when: false
failed_when: false
no_log: true
- name: Create initial admin user
ansible.builtin.command:
cmd: >
podman exec {{ semaphore_container_name }} semaphore user add --admin
--login {{ semaphore_admin_user }}
--name "{{ semaphore_admin_name }}"
--email {{ semaphore_admin_email }}
--password {{ semaphore_admin_password }}
register: create_admin_result
changed_when: create_admin_result.rc == 0
failed_when: create_admin_result.rc != 0 and 'already exists' not in create_admin_result.stderr
when:
- semaphore_admin_password is defined
- semaphore_admin_user not in semaphore_user_list.stdout
no_log: true