Interactive console authentication for 3rd party repository on deploy

Using the global auth.json file didn’t seem to be working for me and the most recent version of the Delicious Brains docs only mention using an auth.json file "alongside the composer.json file.

So I am currently (and redundantly) using the composer config command to generate (or add to) the ~/.composer/auth.json file, and the Jinga template to create the one alongside the composer.json in the current release directory.

  - name: Setup composer.deliciousbrains.com username
    composer:
      global_command: yes
      command: config
      arguments: http-basic.composer.deliciousbrains.com username {{ vault_delicious_brains_username }}
    when: vault_delicious_brains_username is defined

  - name: Setup composer.deliciousbrains.com password
    composer:
      global_command: yes
      command: config
      arguments: http-basic.composer.deliciousbrains.com password {{ vault_delicious_brains_password }}
    when: vault_delicious_brains_password is defined

  - name: Create composer auth.json for deliciousbrains
    template:
      src: "{{ playbook_dir }}/deploy-hooks/auth.json.j2"
      dest: "{{ deploy_helper.new_release_path }}/auth.json"
      mode: "0600"

The template pulls the vault variables from the top level of the vault file(s) (per env):

{
  "http-basic": {
    "composer.deliciousbrains.com": {
      "username": "{{ vault_delicious_brains_username }}",
      "password": "{{ vault_delicious_brains_password }}"
    }
  }
}

Which in the vault file look like this:

vault_delicious_brains_username: "bla bla bla from delicious brains"
vault_delicious_brains_password: "bla bla bla from delicious brains"

But a slightly easier approach might be to put the Delicious Brains credentials in group_vars/all/vault.yml:

vault_wordpress_env_defaults:
    delicious_brains_username: "bla bla bla from delicious brains"
    delicious_brains_password: "bla bla bla from delicious brains"

With a template like this that pulls from the env_defaults dictionary:

{
  "http-basic": {
    "composer.deliciousbrains.com": {
      "username": "{{ vault_wordpress_env_defaults.delicious_brains_username }}",
      "password": "{{ vault_wordpress_env_defaults.delicious_brains_password }}"
    }
  }
}

In the meantime I have contacted Delicious Brains to ask if they currently support Global auth.json authentication.