ezlee
ezlee

Reputation: 429

ansible-galaxy and git clone from Bitbucket.org

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

Upvotes: 9

Views: 10041

Answers (6)

U53r
U53r

Reputation: 316

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:

Upvotes: 0

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

Upvotes: -1

Jason2616321
Jason2616321

Reputation: 395

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

Upvotes: 2

VictorB
VictorB

Reputation: 156

try git+ssh schema

works on ansible-galaxy 2.7.8

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

Upvotes: 3

Ze_Alex
Ze_Alex

Reputation: 1

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.

Upvotes: 0

VonC
VonC

Reputation: 1326646

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.

Upvotes: 4

Related Questions