簡體   English   中英

使用運行Ansible的另一個Vagrant Linux VM配置Vagrant Linux VM

[英]Provision Vagrant Linux VM with another Vagrant Linux VM running Ansible

我知道Ansible在Windows上運行有問題。 這就是為什么,我想避免將它用於我的主機。 我想配置一個在VirtualBox中運行的本地linux vm。

我想知道是否有人可以告訴我是否可能,使用vagrant在同一個盒子上調出兩個獨立的VM。 然后在其中一個VM上安裝Ansible,然后使用SSH登錄到該VM。 從那里,使用帶有Ansible的Linux VM作為主機,配置另一個通過Windows主機創建的Linux VM。 因此,這不是VM中的VM。 它只是使用vagrant在Windows上運行的兩個VM,然后通過SSH連接其中一個VM以使用Ansible來配置另一個VM。

腳步:

  1. Vagrant VM 1並安裝Ansible
  2. Vangrant VM 2
  3. SSH到VM 1
  4. 使用Ansible使用VM 1配置VM 2。

可以這樣做嗎? 對不起,如果這聽起來很混亂。

現在Vagrant 1.8.0中有一個新的Ansible本地配置器 ,您可以在您的場景中使用它。

特別是,請查看文檔的“提示和技巧”部分,有一個確切的解決方案(對我有用)。

下面是我的Vagrantfile這個場景(與文檔中的略有不同),它也解決了ssh權限和“可執行”庫存文件的潛在問題(如果你使用的是Cygwin):

Vagrant.configure(2) do |config|
  config.vm.synced_folder "./", "/vagrant", 
     owner: "vagrant",
     mount_options: ["dmode=775,fmode=600"]

  config.vm.define "vm2" do |machine|
    machine.vm.box = "box-cutter/ubuntu1404-desktop"
    machine.vm.network "private_network", ip: "172.17.177.21"
  end

  config.vm.define 'vm1' do |machine|
    machine.vm.box = "ubuntu/trusty64"
    machine.vm.network "private_network", ip: "172.17.177.11"    

    machine.vm.provision :ansible_local do |ansible|
      ansible.provisioning_path = "/vagrant"
      ansible.playbook = "provisioning/playbook.yml"      
      ansible.limit = "vm2"
      ansible.inventory_path = "inventory"
      ansible.verbose = "vvv"
      ansible.install = true    
    end
  end
end

和庫存文件:

vm1 ansible_connection=local
vm2 ansible_ssh_host=172.17.177.21 ansible_ssh_private_key_file=/vagrant/.vagrant/machines/vm2/virtualbox/private_key

為了配置一個盒子你沒必要使用另一個盒子,在這個Windows場景中你可以簡單地編寫你的劇本,分享給你的客人並使用shell配置用ansible-playbook來點擊它。

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|

$script = <<SCRIPT
sudo apt-get install -y software-properties-common
sudo apt-add-repository -y ppa:ansible/ansible
sudo apt-get update
sudo apt-get install -y ansible
ansible-playbook /home/vagrant/provisioning/playbook.yml
SCRIPT

config.vm.synced_folder "./provisioning", "/home/vagrant/provisioning"

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

end

第一行將在您的盒子上獲得安全,然后它將定位您已分享到您的盒子的劇本並運行劇本。

這是一個例子,我曾經用這種方法來配置我工作的流浪盒,希望這個想法可以幫到你。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM