Skip to content
Switch branches/tags

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

Ansible Role: Composer


Installs Composer, the PHP Dependency Manager, on any Linux or UNIX system.


  • php (version 5.4+) should be installed and working (you can use the geerlingguy.php role to install).
  • git should be installed and working (you can use the geerlingguy.git role to install).

Role Variables

Available variables are listed below, along with default values (see defaults/main.yml):

composer_path: /usr/local/bin/composer

The path where composer will be installed and available to your system. Should be in your user's $PATH so you can run commands simply with composer instead of the full path.

composer_keep_updated: false

Set this to true to update Composer to the latest release every time the playbook is run.

composer_home_path: '~/.composer'
composer_home_owner: root
composer_home_group: root

The COMPOSER_HOME path and directory ownership; this is the directory where global packages will be installed.

composer_version: ''

You can install a specific release of Composer, e.g. composer_version: '1.0.0-alpha11'. If left empty the latest development version will be installed. Note that composer_keep_updated will override this variable, as it will always install the latest development version.

composer_version_branch: '--2'

You can choose which major branch of composer you wish to use. Default is --2. Note that composer_keep_updated will update the latest version available for this branch.

composer_global_packages: []

A list of packages to install globally (using composer global require). If you want to install any packages globally, add a list item with a dictionary with the name of the package and a release, e.g. - { name: phpunit/phpunit, release: "4.7.*" }. The 'release' is optional, and defaults to @stable.

composer_add_to_path: true

If true, and if there are any configured composer_global_packages, the vendor/bin directory inside composer_home_path will be added to the system's default $PATH (for all users).

composer_project_path: /path/to/project

Path to a composer project.

composer_add_project_to_path: false

If true, and if you have configured a composer_project_path, the vendor/bin directory inside composer_project_path will be added to the system's default $PATH (for all users).

composer_github_oauth_token: ''

GitHub OAuth token, used to avoid GitHub API rate limiting errors when building and rebuilding applications using Composer. Follow GitHub's directions to Create a personal access token if you run into these rate limit errors.

php_executable: php

The executable name or full path to the PHP executable. This is defaulted to php if you don't override the variable.

Staying on Composer 1

While projects are upgrading to support Composer 2, it may be helpful to run Composer 1 instead. To do that, set these variables:

composer_version_branch: ''
composer_version: '1.10.12'


None (but make sure you've installed PHP; the geerlingguy.php role is recommended).

Example Playbook

- hosts: servers
    - geerlingguy.composer

After the playbook runs, composer will be placed in /usr/local/bin/composer (this location is configurable), and will be accessible via normal system accounts.



Author Information

This role was created in 2014 by Jeff Geerling, author of Ansible for DevOps.