kai*_*ser 0 apt vagrant ansible
为了测试,我设置了一个非常简单的Vagrant文件。这只是为了测试如何使用Ansible。可悲的是,我被困在第 2 步,期间出现以下错误vagrant up --provision
(我可以重复reload
):
'ansible-playbook'
在 PATH 变量中找不到 Vagrant 尝试运行的可执行文件。这是一个错误。请验证此软件已安装并在路径上。
由于Ubuntu 14 “Trusty” 64bit box 没有安装Ansible,我添加了一个快速的 shell 脚本,在实际的Ansible playbook之前作为配置器运行。这是Vagrantfile
Vagrant.require_version ">= 1.7.0"
Vagrant.configure("2") do |config|
config.vm.box = "ubuntu/trusty64"
config.ssh.insert_key = false
# Synced folders
config.vm.synced_folder "./public", "/var/www",
disabled: false
# Install Ansible
config.vm.provision :shell,
path: "provisioners/shell/install-ansible.sh"
# Run Ansible Playbooks
config.vm.provision "ansible" do |ansible|
ansible.verbose = "vvv"
ansible.playbook = "provisioners/ansible/playbook.yml"
end
end
Run Code Online (Sandbox Code Playgroud)
bash 脚本install-ansible.sh
就像这样简单:
sudo apt-get install software-properties-common
sudo apt-add-repository ppa:ansible/ansible
sudo apt-get -y update
sudo apt-get install ansible
Run Code Online (Sandbox Code Playgroud)
为了确认ansible-playbook
和ansible
已安装,我vagrant ssh
进入框并调用which ansible-playbook
and which ansible
。两者都可用:
$ which ansible
# /usr/bin/ansible
Run Code Online (Sandbox Code Playgroud)
看着dpkg -L ansible
,我发现很多东西要在/etc
和/usr/bin
。也python --version
给了我Python 2.7.6
,而需要的最低版本为2.4。
本echo $PATH
提供了以下默认的输出:
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
Run Code Online (Sandbox Code Playgroud)
我可以确认,用户是正确的:whoami
导致vagrant
错误之前执行的最后一个命令是:
PYTHONUNBUFFERED=1
ANSIBLE_HOST_KEY_CHECKING=false
ANSIBLE_FORCE_COLOR=true
ANSIBLE_SSH_ARGS='-o UserKnownHostsFile=/dev/null -o IdentitiesOnly=yes -o ControlMaster=auto -o ControlPersist=60s'
ansible-playbook
--user=vagrant
--connection=ssh
--timeout=30
--limit='default'
--inventory-file=/Users/*****/projects/*****/.vagrant/provisioners/ansible/inventory
-vvv
provisioners/ansible/playbook.yml
Run Code Online (Sandbox Code Playgroud)
我在这里没有想法。
我想你在这里有一个误解。无需在 Vagrant 盒子内安装 Ansible。Ansible 是无代理的。Ansible 使用 SSH(或其他协议)连接到其他主机。所以不需要在主机内部有 Ansible 可执行文件。
你只需要在运行 vagrant 的主机上安装 Ansible。
如果您想在 Vagrant 框内运行 Ansible(恕我直言,不是 Vagrant 和 Ansible 应该一起工作的方式),您还需要更改vm.provision
Vagrant 文件的步骤。正如vm.provision "ansible"
在您运行的主机上寻找 Ansible 可执行文件一样,vagrant
您应该更改vm.provision "shell"
并将ansible-playbook
命令放入 shell 脚本中,该脚本应该在 Vagrant 框上查找 Ansible 可执行文件。
归档时间: |
|
查看次数: |
7125 次 |
最近记录: |