ansibleansible-galaxy

How to install galaxy role with a different name than in git url?


There is a galaxy role: git@site.net/ansible-myapp.git

I can install it like this:

ansible-galaxy install git+git@site.net/ansible-myapp.git

, but it creates a role with the name "ansible-myapp".

How can I install a role with a different name than in git url?

It's possible to do via requirements.yml:

- src: git@site.net/ansible-myapp.git
  scm: git
  name: myapp

ansible-galaxy install -r requirements.yml will install it with the name "myapp"

But how to do it in one command without requirements.yml file?


Solution

  • Found this actually undocumented feature (at least I did not find the doc) with trial and error, extrapolating from the official doc

    Add the desired name after the version.

    ansible-galaxy role install git+git@site.net/ansible-myapp.git,master,myapp
    

    This will install the role as myapp using the specified version. For master version, if this is the default repository branch, you can pass an empty version which will default to it:

    ansible-galaxy role install git+git@site.net/ansible-myapp.git,,myapp
    

    This was tested with:

    $ ansible-galaxy --version
    ansible-galaxy 2.9.10
      config file = None
      configured module search path = ['/home/user/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
      ansible python module location = /usr/local/lib/python3.6/dist-packages/ansible
      executable location = /usr/local/bin/ansible-galaxy
      python version = 3.6.9 (default, Apr 18 2020, 01:56:04) [GCC 8.4.0]
    

    NOTE: The TYPE positional argument role in the above command line was introduced to differentiate roles and collections, and will default to role if omitted (for compatibility with previous ansible galaxy versions)