8
votes

I am using ansible-galaxy (v2.0.0.2) to install ansible roles that which has the source code on Bitbucket through the requirements.yml file. But I could not checkout the code from bitbucket.org with the private key. Here is the error message, and also my requirements.yml content.

Does any one what's the correct requirements.yml file format for ansible-galaxy 2.0.0.2?

  + ansible-galaxy -vvv install --force --role-file ansible/requirements.yml --roles-path ./ansible/roles

    Using /etc/ansible/ansible.cfg as config file
    Opened /tmp/.ansible_galaxy
    found role {'scm': 'git', 'src': '[email protected]:myrepo/nginx.git', 'version': 'latest', 'name': 'nginx'} in yaml file
    Installing role nginx 

     [WARNING]: - nginx was NOT installed successfully: - command git checkout
    latest failed in directory /tmp/tmpQRZc8j (rc=1)
    ERROR! - you can use --ignore-errors to skip failed roles and finish processing the list.

[requirements.yml]

- name: nginx
  src: [email protected]:myrepo/nginx.git
  scm: git
  version: latest
  accept_hostkey: yes
  key_file: /tmp/.ssh/id_rsa
5

5 Answers

4
votes

Maybe the scp syntax does not work. The url one might:

ssh://[email protected]/myrepo/nginx.git

Try, as in this ansible issue:

Direct copy from github clone repo path

[email protected]:geerlingguy/ansible-role-php.git

Actual URL that works

ssh://[email protected]/geerlingguy/ansible-role-php.git

You have to replace the : with a /.
And it needs to be a URL (i.e. contain ://) otherwise ansible-galaxy assumes it's a filesystem path.

2
votes

try git+ssh schema

works on ansible-galaxy 2.7.8

ansible-galaxy install git+ssh://bitbucket.org:<username>/<role-name>.git

1
votes

If you set "scm: git" underneath the src, galaxy will run "git clone XYZ" where XYZ is your src: field. So, anything you can "git clone XYZ" is what you put in the src field.

- src: ssh://[email protected]:8899/project/repo-name.git
  scm: git

For the private key, in case it's not your default ssh key, we use ssh-agent(1) (see manpage for usage).

0
votes

As said by Ansible, if you look in your /tmp/tmpQRZc8j directory you will see that your role has been fetch.

The problem is that you have specified a wrong version argument and ansible is trying to make a git checkout latest which is not possible (unless with a branch or tag named latest).

You have to give an existing branch or tag instead.

-1
votes

The error will be due to some wrong details given by you in requirements.yml it can be git URL, or version:number or version: branch name