在Mac OS X上存储Ansible主机文件的位置
我正在尝试开始与Ansibleconfiguration我的Vagrantbox,但我不知道如何处理主机文件。
根据文档应该被存放在/etc/ansible/hosts
,但是在我的系统(Mac OS X)上找不到这个文件。 我还看到了位于文件根目录下的host.ini
文件的示例。
所以我的问题是你将在哪里存储你的主机文件设置一个单一的stream浪汉盒?
虽然Ansible默认会尝试/etc/ansible/hosts
,但有几种方法可以告诉谁在哪里查找备用库存文件:
- 使用
-i
命令行开关并传递库存文件path - 在
~/.ansible.cfg
configuration文件的[defaults]
部分添加hostfile = path_to_hostfile
- DomaNitro在他的回答中build议使用
export ANSIBLE_HOSTS=path_to_hostfile
现在你没有提到你是否想使用stream动的可用的供应商 ,或者你想手动供应stream浪的主机。
我们先来看一下stream浪者的先行者:
创build一个目录(如testing),并在里面创build一个Vagrant文件:
stream浪文件 :
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
现在,当你运行vagrant up
(或vagrant provision
)时,Vangrant的能力提供者将在与Vagrantfile相同的目录中查找一个文件名,并尝试应用provision.yml
playbook。
您也可以手动运行,而不诉诸Vagrant的安全提供者:
ansible-playbook -i hosts provision.yml --ask-pass --sudo
请注意,Vagrant + Virtualbox + Ansible三人并不总是相处融洽。 有一些版本组合是有问题的。 尝试升级到最新版本,如果遇到问题(特别是关于networking)。
{shameless_plug}你可以find一个更广泛的例子混合游民和在这里 {/ shameless_plug}
祝你好运 !
如果您使用Brew来安装Ansible,则很可能会在/usr/local/etc/ansible/hosts
find默认主机文件。 但是,正如其他人指出的,你可能只是想改变默认值。
我喜欢使用bash环境variables,因为我的基础项目是与其他用户共享的。 你可以简单地export ANSIBLE_HOSTS=/pathTo/inventory/
这可以是一个主文件或一个多文件目录。
你也可以用它写入你的〜/ .bash_profile文件,这样它的持久性一堆其他的variables可以这样设置,而不是维护一个conf文件以获取更多的信息,在ansible / lib / ansible / constants.py
如果您使用Vagrant的可靠供应商,Vagrant将自动生成一个Ansible主机文件(称为vagrant_ansible_inventory_default
)并configuration一个可用的手册来使用该文件。 它看起来像这样:
# Generated by Vagrant default ansible_ssh_host=127.0.0.1 ansible_ssh_port=2222
它将Vagrant主机称为“默认”,因此您的剧本应该引用“默认”或“全部”。