--- - name: Install global Composer packages. composer: command: "{{ (item.state | default('present') == 'absent') | ternary('remove', 'require') }}" arguments: "{{ item.name | default(item) }} {{ item.version | default('@stable') }}" # Ansible 2.4 supports `global_command` making `working_dir` optional. working_dir: "{{ lookup('env', 'COMPOSER_HOME') | default('~/.composer', true) }}" with_items: "{{ composer_packages }}" - name: Install global NPM packages. npm: name: "{{ item.name | default(item) }}" state: "{{ item.state | default('present') }}" version: "{{ item.version | default(omit) }}" global: true executable: "{{ item.executable | default(omit) }}" with_items: "{{ npm_packages }}" - name: Install global Pip packages. pip: name: "{{ item.name | default(item) }}" state: "{{ item.state | default('present') }}" version: "{{ item.version | default(omit) }}" executable: "{{ item.executable | default(omit) }}" with_items: "{{ pip_packages }}" - name: Install global Ruby gems. gem: name: "{{ item.name | default(item) }}" state: "{{ item.state | default('present') }}" version: "{{ item.version | default(omit) }}" user_install: false executable: "{{ item.executable | default(omit) }}" with_items: "{{ gem_packages }}"