在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/hostsfind默认主机文件。 但是,正如其他人指出的,你可能只是想改变默认值。

我喜欢使用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主机称为“默认”,因此您的剧本应该引用“默认”或“全部”。

Interesting Posts