04_user_bootstrap.ymlΒΆ

---
- name: "πŸ”Ž Check whether Friendica administrator user already exists"
  shell: >-
    container exec -i --user {{ FRIENDICA_USER }}
    --workdir {{ FRIENDICA_APPLICATION_DIR }}
    {{ FRIENDICA_LOCAL_CID | quote }}
    {{ FRIENDICA_APPLICATION_DIR }}/bin/console user search nick {{ FRIENDICA_ADMIN_USERNAME | quote }}
  delegate_to: "{{ FRIENDICA_HOST_NODE }}" # nocheck: include-uniform-apply-keyword
  register: friendica_admin_search
  changed_when: false
  failed_when: false

- name: "πŸ“ Pre-create Friendica administrator user"
  shell: >-
    container exec -i --user {{ FRIENDICA_USER }}
    --workdir {{ FRIENDICA_APPLICATION_DIR }}
    {{ FRIENDICA_LOCAL_CID | quote }}
    {{ FRIENDICA_APPLICATION_DIR }}/bin/console user add
    "{{ lookup('users', 'platform_administrator').firstname | default('Administrator') }}"
    "{{ FRIENDICA_ADMIN_USERNAME }}"
    "{{ lookup('users', 'platform_administrator').email }}"
    en
  delegate_to: "{{ FRIENDICA_HOST_NODE }}"
  when: FRIENDICA_ADMIN_USERNAME not in friendica_admin_search.stdout
  register: friendica_admin_create
  changed_when: friendica_admin_create.rc == 0

- name: "πŸ”‘ Converge the Friendica administrator password"
  ansible.builtin.shell: >- # nocheck: container-exec-resolver  FRIENDICA_LOCAL_CID resolved at delegate_to runtime
    container exec -i -e FRIENDICA_ADMIN_NICKNAME -e FRIENDICA_ADMIN_PASSWORD
    --user {{ FRIENDICA_USER }} --workdir {{ FRIENDICA_APPLICATION_DIR }}
    {{ FRIENDICA_LOCAL_CID | quote }} php --
  args:
    stdin: "{{ lookup('file', role_path + '/files/php/converge_admin_password.php') }}"
  environment:
    FRIENDICA_ADMIN_NICKNAME: "{{ FRIENDICA_ADMIN_USERNAME }}"
    FRIENDICA_ADMIN_PASSWORD: "{{ lookup('users', 'platform_administrator').password }}"
  delegate_to: "{{ FRIENDICA_HOST_NODE }}"
  register: friendica_admin_password
  changed_when: "'PASSWORD_SET' in friendica_admin_password.stdout"
  failed_when: >-
    friendica_admin_password.rc != 0
    or friendica_admin_password.stdout is not search('(?m)^PASSWORD_(SET|KEPT)$')
  no_log: "{{ MASK_CREDENTIALS_IN_LOGS | bool }}"