在远程Vagrant盒子上运行Ansible剧本

时间:2017-04-28 19:13:08

标签: vagrant ansible ssh-tunnel

我有一台机器(A),我在各种主机上运行Ansible playbooks。这里没有安装Vagrant。

我有另一台机器(B),它有两倍的RAM来托管我的Vagrant盒子。这里没有安装Ansible。

我想使用Ansible以与其他所有主机相同的方式对Vagrant盒子进行操作;也就是说,在machineA上运行ansible-playbook,同时针对machineB上的虚拟化Vagrant框。已经在两者之间建立了SSH密钥。

这看起来像一个简单的用例,但是在鼓励使用Vagrant的内置Ansible配置器的情况下,我无法在任何地方找到它。可能吗?  也许某些SSH隧道和端口转发欺骗的组合?

1 个答案:

答案 0 :(得分:1)

事实证明这非常简单。事实上,Vagrant 根本不需要了解Ansible。

机器上的Ansible库存:

default ansible_host=machineB ansible_port=2222

machineB上的Vagrantfile:

Vagrant.configure("2") do |config|
  ...
  config.vm.network "forwarded_port", id: "ssh", guest: 22, host: 2222
  ...
end

id: "ssh"是重要的一点,因为它会覆盖从localhost仅限SSH到guest虚拟机的默认SSH行为。

$ ansible --private-key=~/.ssh/vagrant-default -u vagrant -m ping default
default | SUCCESS => {
    "changed": false, 
    "ping": "pong"
j }

(请注意,必须将Vagrant私钥复制到Ansible主机并在命令行中指定。)