我想重现Vagrant如何使用ssh命令在shell脚本中记录到我的VM的方式,因此我为我的Vagrant实例创建了一个别名.
使用常规ssh命令访问它的命令语法是什么?
不知怎的,我的Vagrant项目已经解除了与VirtualBox虚拟机的关联,所以当我vagrant upVagrant将导入基础框并创建一个新的虚拟机时.
有没有办法将Vagrant项目与现有VM重新关联?Vagrant如何在内部将Vagrantfile与VirtualBox VM目录相关联?
人们如何处理具有流浪者的dev/prod环境的简单自动化(使用puppet)(理想情况下来自同一个vagrantfile)?
我试图解决的用例
问题
当您使用AWS或Digital Ocean等提供商调用vagrant时,它将成为活动提供者,您无法切换.你收到这个错误:
找到了与不同提供商的活动计算机.Vagrant目前允许每台机器一次只有一个提供商.未来版本将删除此限制.在此之前,请使用新的提供商销毁现有机器.
它似乎是破坏它的答案,但我只需要切换.我不想破坏.
我很乐意能说
vagrant up prod
Run Code Online (Sandbox Code Playgroud)
要么
vagrant reload prod
Run Code Online (Sandbox Code Playgroud)
然后一个简单的流浪汉将回落到默认机器.
这种语法类似于多台机器的工作方式,但是当我只调用vagrant up时,我不想启动开发和生产环境(这是默认行为).
作为工作流程的一部分,我应该关注打包机吗?我在2013年的puppetconf上观看了Mitchell关于Multi-Provider的演讲http://puppetlabs.com/presentations/multi-provider-vagrant-aws-vmware-and-more
我仍然没有看到我的问题的解决方案.
更新9/27/13
如果其他人正在反对这个想法,这篇文章清理了我的很多问题. http://pretengineer.com/post/packer-vagrant-infra
我想使用ubuntu/xenial64box为两个单独的项目创建两个单独的VM.我在两个单独的项目目录中定义了Vagrantfile,并将行添加config.vm.box = "ubuntu/xenial64"到每个目录中.
第一个盒子成功启动.但是当我vagrant up为第二个项目做的时候,我得到了错误
A VirtualBox machine with the name 'ubuntu-xenial-16.04-cloudimg' already exists.
Run Code Online (Sandbox Code Playgroud)
在Vagrant的文档中,它写得很清楚
为当前用户全局存储框.每个项目都使用一个框作为初始图像进行克隆,并且永远不会修改实际的基本图像.这意味着如果您有两个项目都使用我们刚添加的hashicorp/precise64框,则在一台客户机中添加文件对其他机器没有影响.
为什么我会收到此错误?
我已经检查了其他类似的问题,但我不理解他们删除看似具有相同名称的现有虚拟机的解决方案.根据上面的Vagrant文档引用,这不应该是必要的.我错过了什么吗?
为了测试Ansible,我已经建立了一个流浪VM可与被提供vagrant provision,给予
config.vm.provision "ansible" do |ansible|
ansible.playbook = "site.yml"
end
Run Code Online (Sandbox Code Playgroud)
在Vagrantfile.当我设置hosts为all,这工作,
- hosts: all
sudo: true
roles:
- common
- ssl
- webserver
Run Code Online (Sandbox Code Playgroud)
或者,文件
.vagrant/provisioners/ansible/inventory/vagrant_ansible_inventory
Run Code Online (Sandbox Code Playgroud)
这是由Vagrant自己说的
default ansible_ssh_host=127.0.0.1 ansible_ssh_port=2222
Run Code Online (Sandbox Code Playgroud)
意思是Vagrant VM的名称是 default.因此,
- hosts: default
Run Code Online (Sandbox Code Playgroud)
也做我想要的.但是,我想为VM设置一个更具体的名称(例如vagrant,像).
有没有办法将该名称更改为其他名称?
如何使用ansible-playbook安装Android SDK?
我需要配置 Jenkins 安装 playbook 并让 Ansible 配置 Jenkins 以与 Android 集成
所以,我有 Vagrantfile:
# -*- mode: ruby -*-
# vi: set ft=ruby :
IP = "192.168.33.55"
VM_NAME = "jenkins"
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.box = "geerlingguy/ubuntu1604" #target OS: Ubuntu 16.04
config.ssh.insert_key = false
config.vm.synced_folder ".", "/vagrant", disabled: true
config.ssh.forward_agent = true
config.vm.provider :virtualbox do |v|
v.name = VM_NAME
v.memory = 1024
v.cpus = 2
v.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
v.customize ["modifyvm", :id, "--ioapic", "on"]
end
config.vm.hostname …Run Code Online (Sandbox Code Playgroud) vagrant ×6
ansible ×2
virtualbox ×2
android ×1
command-line ×1
jenkins ×1
puppet ×1
shell ×1
ssh ×1
vagrantfile ×1