在 Mac OS X 上存储安赛波主机文件的位置

我正在尝试开始使用安赛尔来提供我的流浪箱,但是我不知道如何处理主机文件。

根据文档,这些文件应该存储在 /etc/ansible/hosts中,但是我在我的系统(MacOSX)中找不到这个文件。我也看到例子,其中 host.ini文件位于文件根相邻的流浪者文件。

所以我的问题是,如果要设置一个流浪汉盒子,你会把主机文件存放在哪里?

53786 次浏览

尽管安赛尔默认情况下会尝试 /etc/ansible/hosts,但是有几种方法可以告诉安赛尔在哪里寻找备用库存文件:

  • 使用 -i命令行开关并传递库存文件路径
  • ~/.ansible.cfg 配置文件[defaults]部分中加入 inventory = path_to_hostfile
  • 正如 DomaNitro 在他的回答中所建议的那样,使用 export ANSIBLE_HOSTS=path_to_hostfile

现在您没有提到是否要使用 流浪汉中可靠的供给者,或者是否要手动提供您的流浪主机。

我们先去找那个流浪汉:

创建一个目录(例如 test) ,并在其中创建一个流浪者文件:

流浪汉文件 :

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

Now when you run vagrant up (or vagrant provision), Vangrant's ansible provionner will look for a file name hosts in the same directory as Vagrantfile, and will try to apply the provision.yml playbook.

你也可以手动运行它,而不必求助于流浪者的可靠供应商:

ansible-playbook -i hosts provision.yml --ask-pass --sudo

请注意,流浪者 + 虚拟盒子 + 安塞尔三人组并不总是相处得很好。有一些版本的组合是有问题的。如果遇到问题(特别是关于网络) ,请尝试升级到最新版本。

你可以找到一个更广泛的例子混合流浪者和可能的 给你{/恬不知耻 _ 插件}

祝你好运!

如果你使用流浪者的安赛尔提供者,流浪者将自动生成一个安赛尔主机文件(称为 vagrant_ansible_inventory_default) ,并配置安赛尔剧本使用该文件。它看起来像这样:

# Generated by Vagrant


default ansible_ssh_host=127.0.0.1 ansible_ssh_port=2222

它称流浪者主机为“默认”,所以你的游戏应该指“默认”或“全部”。

我喜欢使用 bash 环境变量,因为我的基础项目是与其他用户共享的。 您可以简单地 export ANSIBLE_HOSTS=/pathTo/inventory/这可以是一个主机文件或具有多个文件的目录。

您还可以在 ~/. bash _ profile 中使用它,以使其持久化 其他一些变量可以这样设置,而不需要维护 conf 文件以获取更多信息,请检查 anable/lib/anable/Constants.py 中的源代码

如果您使用 Brew 来安装 Anble,您很可能会在 /usr/local/etc/ansible/hosts找到默认的主机文件。但是,正如其他人指出的那样,您可能只是想改变默认设置。

下面是在 Mac 上安装 Anble 之后的操作说明,它对我很有用: Ansible-tips-and-tricks.readthedocs.io

我下载了 ansible.cfg 文件

/Users/"yourUser"/.ansible

之后,您可以通过取消注释

inventory      = /Users/"yourUser"/.ansible

行并指定到可变文件夹的路径,如上所示。您也可以在这个文件夹中创建主机文件。要在本地试用,您可以将

localhost              ansible_connection=local

在主机文件中,并尝试使用

ansible -m ping all

在 Mac 上我用 sudo find / -type d -name "ansible" 2> /dev/null找到它, 但是我没有 .../ansible/hosts文件夹从框,也许是因为我安装使用 brew,因为我读上面,所以我在路径 /etc/ansible/hosts创建