我想用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