我想用Ansible开始配置我的Vagrantbox,但我无法弄清楚如何处理主机文件。在Mac OS X上存储Ansible主机文件的位置
根据文档应存入/etc/ansible/hosts
,但我无法在我的系统(Mac OS X)上找到它。我还看到了一些示例,其中host.ini
文件位于与vagrant文件相邻的文档根目录中。
所以我的问题是你将存储你的hostfile设置一个单一的流浪者箱子?
我想用Ansible开始配置我的Vagrantbox,但我无法弄清楚如何处理主机文件。在Mac OS X上存储Ansible主机文件的位置
根据文档应存入/etc/ansible/hosts
,但我无法在我的系统(Mac OS X)上找到它。我还看到了一些示例,其中host.ini
文件位于与vagrant文件相邻的文档根目录中。
所以我的问题是你将存储你的hostfile设置一个单一的流浪者箱子?
虽然Ansible将尝试在默认情况/etc/ansible/hosts
,有几种方式来告诉ansible到哪里寻找一个替代清单文件:
-i
命令行开关,并通过您的库存文件路径hostfile = path_to_hostfile
在~/.ansible.cfg
configuration fileexport ANSIBLE_HOSTS=path_to_hostfile
的[defaults]
部分由DomaNitro在他的回答提出现在你不提,如果你想使用ansible provisionner available in vagrant,或者如果你想手动配备你的流浪主机。
我们去的流浪ansible provisionner第一:
创建一个目录(如测试),并建立内部的流浪文件:你什么时候
Vagrant.configure("2") do |config|
config.vm.box = "precise64-v1.2"
config.vm.box_url = "http://files.vagrantup.com/precise64.box"
config.vm.define :webapp do |webapp|
webapp.vm.hostname = "webapp.local"
webapp.vm.network :private_network, ip: "192.168.123.2"
webapp.vm.provider "virtualbox" do |v|
v.customize ["modifyvm", :id, "--memory", 200, "--name", "vagrant-docs", "--natdnshostresolver1", "on"]
end
end
#
# Provisionning
#
config.vm.provision :ansible do |ansible|
ansible.playbook = "provision.yml"
ansible.inventory_path = "hosts"
ansible.sudo = true
#
# Use anible.tags if you want to restrict what `vagrant provision`
# Here is a list of possible tags
# ansible.tags = "foo bar"
#
# Use ansible.verbose to see detailled output for ansible runs
# ansible.verbose = 'vvv'
#
# Customize your stuff here
ansible.extra_vars = {
some_var: 42,
foo: "bar",
}
end
end
现在:
Vagrantfile运行vagrant up
(或vagrant provision
),Vangrant's ansible provionner将在与Vagrantfile相同的目录中查找文件名hosts
,并尝试应用剧本。
您也可以手动运行它,而不是诉诸放浪的ansible provisionner:
ansible-playbook -i hosts provision.yml --ask-pass --sudo
注意流浪+ VirtualBox虚拟+ Ansible三人并不总是相处得很好。有一些版本组合是有问题的。如果遇到问题,请尝试升级到最新版本(特别是关于网络)。
{} shameless_plug你可以找到一个更广泛的例子混合流浪汉,ansible here {/ shameless_plug}
祝你好运!
如果您使用Vagrant的可靠配置器,Vagrant会自动生成一个Ansible hosts文件(名为vagrant_ansible_inventory_default
)并配置ansible-playbook以使用该文件。它看起来像这样:
# Generated by Vagrant
default ansible_ssh_host=127.0.0.1 ansible_ssh_port=2222
它调用流浪主机“默认”,所以你的戏要么是指“默认”或“全部”。
我喜欢使用bash环境变量,因为我的基础项目是与其他用户共享的。 你可以简单地export ANSIBLE_HOSTS=/pathTo/inventory/
这可以是一个主机文件或一个多文件目录。
你也可以在你的〜/ .bash_profile中写下它的持久性 其他一些变量可以这样设置,而不是维护一个conf文件以获取更多信息,在ansible/lib/ansible/constants中检查源代码。 py
如果您使用Brew安装Ansible,您很可能会在/usr/local/etc/ansible/hosts
找到默认主机文件。但是,正如其他人指出的那样,您可能只想更改默认值。
这里是一个说明在Mac上安装Ansible后做什么,它的工作对我来说:ansible-tips-and-tricks.readthedocs.io
我下载的ansible.cfg文件
/Users/"yourUser"/.ansible
事后你可以编辑ansible。 cfg文件通过取消注释
inventory = /Users/"yourUser"/.ansible
行并指定到上面显示的文件夹的路径。您也可以在此文件夹中创建主机文件。尝试一下当地,你可以把
localhost ansible_connection=local
在hosts文件,并尝试一下与
ansible -m ping all
大答案的人!我一直在玩流浪两天,我一直回到这个答案和你发布的链接。 Thx男人! – StenW
谢谢。乐意效劳 ! – leucos
我爱你解决了这个问题,但也指出了一个更好的方法来完成同样的事情... – jsh