Ansible不会从Git SCM安装依赖项

时间:2017-12-10 21:06:05

标签: git apache vagrant ansible ansible-role

我正在尝试创建一个名为" Adminer"的新Ansible角色。这需要" Apache"作用。

我已将Apache角色指定为meta/main.yml中的依赖项:

---
dependencies:
  - src: git+https@github.com:alexandrubau/ansible-apache.git
    name: apache

我正在使用Vagrant测试Adminer角色,我收到以下错误:

vagrant provision
==> default: Running provisioner: shell...
    default: Running: inline script
==> default: Running provisioner: ansible_local...
Vagrant has automatically selected the compatibility mode '2.0'
according to the Ansible version installed (2.4.2.0).

Alternatively, the compatibility mode can be specified in your Vagrantfile:
https://www.vagrantup.com/docs/provisioning/ansible_common.html#compatibility_mode

    default: Running ansible-playbook...
ERROR! the role 'apache' was not found in /vagrant/tests/roles:/home/vagrant/.ansible/roles:/usr/share/ansible/roles:/etc/ansible/roles:/:/vagrant/tests

The error appears to have been in '/vagrant/meta/main.yml': line 3, column 5, but may
be elsewhere in the file depending on the exact syntax problem.

The offending line appears to be:

dependencies:
  - src: https://github.com/alexandrubau/ansible-apache.git
    ^ here

Ansible failed to complete successfully. Any error output should be
visible above. Please fix these errors and try again.

难道不应该从提供的git仓库下载新角色吗?

这是我的Vagrant档案:

# -*- mode: ruby -*-
# vi: set ft=ruby :

$script = <<SCRIPT
mkdir -p /etc/ansible/roles
ln -f -s /vagrant /etc/ansible/roles/test-role
SCRIPT

Vagrant.configure("2") do |config|

config.vm.box       = "bento/ubuntu-16.04"
config.vm.hostname  = "ansible-test.local"
config.vm.network "private_network", ip: "192.168.13.37"
config.vm.synced_folder "../", "/vagrant"

config.vm.provider "virtualbox" do |vbox|
    vbox.memory = 2048
    vbox.cpus   = 2
end

config.vm.provision "shell", inline: $script

config.vm.provision "ansible_local" do |ansible|
    ansible.inventory_path    = "tests/inventory"
    ansible.playbook          = "tests/test.yml"
    ansible.limit             = "localhost"
end
end

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

因此,当您安装角色时,似乎只有meta/main.yml命令才能读取ansible-galaxy文件。

这在official Ansible docs

中说明
  

ansible-galaxy遇到依赖关系时,它会自动将每个依赖关系安装到roles_path。要了解在播放执行期间如何处理依赖关系,请参阅...

我找到了解决方法,使用requirements.yml文件并运行它:
ansible-galaxy install -r requirements.yml