gpt4 book ai didi

vagrant - 通过 Vagrant 自动安装和运行 Ansible Local

转载 作者:行者123 更新时间:2023-12-02 10:05:12 25 4
gpt4 key购买 nike

我正在使用 Vagrant 并尝试让 Ansible 能够使用它。因为我在使用 Python 3.5.0 的 virtualenv 中工作,所以我必须使用 Ansible-Local – “主”Ansible 将不会在我的主机上运行,​​因为我没有运行 Python 2.x。

无论如何,一切都正常,除了 vagrant up 找不到 Ansible。以下是调用的输出:

==> default: Running provisioner: ansible_local...
default: Installing Ansible...
The Ansible software could not be found! Please verify
that Ansible is correctly installed on your guest system.

If you haven't installed Ansible yet, please install Ansible
on your Vagrant basebox, or enable the automated setup with the
`install` option of this provisioner. Please check
https://docs.vagrantup.com/v2/provisioning/ansible_local.html
for more information.

但是,如果我使用 vagrant ssh 访问虚拟机,则显然已经安装了 Ansible:

vagrant@vagrant-ubuntu-trusty-64:~$ ansible --version
ansible 2.0.0.2
config file = /etc/ansible/ansible.cfg
configured module search path = Default w/o overrides

我不知道该怎么办。我可以运行 ansible-playbook server.yml,同时通过 SSH 连接到服务器,并且它可以正常工作。然而,我使用 Ansible 的全部意义在于我可以通过 Vagrant 自动运行它。这是我的 Vagrantfile 的相关部分:

  config.vm.provision "ansible_local" do |ansible|
ansible.install = true
ansible.version = "latest"
ansible.sudo = true
ansible.playbook = "server.yml"
end

非常感谢任何建议。谢谢!

最佳答案

通过将盒子置于 Debug模式:

VAGRANT_LOG=debug vagrant up

演出:

DEBUG ssh: Re-using SSH connection.
INFO ssh: Execute: ansible-galaxy --help && ansible-playbook --help (sudo=false)
DEBUG ssh: stderr: ERROR! Missing required action

DEBUG ssh: stdout: Usage: ansible-galaxy [delete|import|info|init|install|list|login|remove|search|setup] [--help] [options] ...

Options:
-h, --help show this help message and exit
-v, --verbose verbose mode (-vvv for more, -vvvv to enable connection
debugging)
--version show program's version number and exit

DEBUG ssh: Exit status: 5

ansible-galaxy --help 是问题,因为它期望采取行动。因为失败了,vagrant 认为安装有问题。

看起来这个问题已在 master branch 上修复。并将在next version中.

你可以尝试的是:

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

$install_ansible = <<SCRIPT
apt-get -y install software-properties-common
apt-add-repository ppa:ansible/ansible
apt-get -y update
apt-get -y install ansible

SCRIPT

Vagrant.configure(2) do |config|
config.vm.box = 'ubuntu/trusty64'
config.vm.provision 'shell', inline: $install_ansible
# Patch for https://github.com/mitchellh/vagrant/issues/6793
config.vm.provision "shell" do |s|
s.inline = '[[ ! -f $1 ]] || grep -F -q "$2" $1 || sed -i "/__main__/a \\ $2" $1'
s.args = ['/usr/bin/ansible-galaxy', "if sys.argv == ['/usr/bin/ansible-galaxy', '--help']: sys.argv.insert(1, 'info')"]
end
config.vm.provision :ansible_local do |ansible|
ansible.sudo = true
ansible.playbook = 'server.yml'
end
end

注:记入MasonM为了以下片段:

# Patch for https://github.com/mitchellh/vagrant/issues/6793
config.vm.provision "shell" do |s|
s.inline = '[[ ! -f $1 ]] || grep -F -q "$2" $1 || sed -i "/__main__/a \\ $2" $1'
s.args = ['/usr/bin/ansible-galaxy', "if sys.argv == ['/usr/bin/ansible-galaxy', '--help']: sys.argv.insert(1, 'info')"]
end

或者在等待修复程序发布时的另一个选择是构建 vagrant from source .

关于vagrant - 通过 Vagrant 自动安装和运行 Ansible Local,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35299304/

25 4 0
文章推荐: node.js - 浏览器返回 403 访问错误,可能由 AWS 引起
文章推荐: angular - 我们如何将 Fine-uploader 与 Angular 5 一起使用?
文章推荐: 使用 GDSL 的 IntelliJ 中的 Jenkins 管道。警告 : 'node' cannot be applied to '(groovy.lang.closure)'