ansible-galaxy and git clone from Bitbucket.org
Asked Answered
F

6

9

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
Ferwerda answered 20/1, 2017 at 3:21 Comment(0)
L
4

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.

Lobachevsky answered 20/1, 2017 at 5:35 Comment(3)
[ERROR]: failed to download the file: <urlopen error unknown url type: ssh>Neckwear
@papanito Did you manage to make it work in your Ansible task?Lobachevsky
Unfortunately not, tried different variations but no luck.Separation
S
3

try git+ssh schema

works on ansible-galaxy 2.7.8

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

Spoondrift answered 12/3, 2019 at 18:11 Comment(2)
What about the ssh port number? Ours doesn't run on port 22.Ashleeashleigh
for instance sh "GIT_SSH_COMMAND='ssh -o StrictHostKeyChecking=no' ansible-galaxy install -f git+ssh://[email protected]:7999/project/ansible-roles -p ./"Spoondrift
A
2

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).

Ashleeashleigh answered 29/7, 2019 at 20:7 Comment(0)
L
0

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.

Lucubration answered 28/6, 2017 at 17:17 Comment(0)
H
0

The error is related to the unknown key_file and accept_hostkey attributes in your requirements.yml file.

According to the Ansible documentation, the only available attributes for the requirements.yml file are:

  • src
  • scm
  • version
  • name

You will need to use the ssh config file to configure the ssh-key to use for your private repositories. Here are some helpful links:

Hui answered 17/1, 2022 at 15:31 Comment(0)
N
-1

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

Nordine answered 22/10, 2020 at 17:31 Comment(1)
Please change answer to denote the wrong details. Also, please indicate the sources that you have referred to.Strung

© 2022 - 2024 — McMap. All rights reserved.