VagrantboxをプロビジョニングするためにAnsibleを使い始めようとしていますが、ホストファイルの処理方法がわかりません。
ドキュメントによると、/etc/ansible/hosts
が、システム(Mac OS X)でこれを見つけることができません。また、Host.ini
ファイルは、vagrantファイルに隣接するドキュメントルートにあります。
だから私の質問は、単一の浮浪者ボックスを設定するためのホストファイルをどこに保存しますか?
Ansibleは/etc/ansible/hosts
デフォルトでは、代替インベントリファイルを探す場所をansibleに伝える方法がいくつかあります。
-i
コマンドラインスイッチで、インベントリファイルのパスを渡しますhostfile = path_to_hostfile
の中に [defaults]
セクションの~/.ansible.cfg
設定ファイルexport ANSIBLE_HOSTS=path_to_hostfile
DomaNitroの回答で示唆されたとおりvagrantで利用可能なプロビジョニング可能なプロバイダー を使用するか、または手動でvagrantホストをプロビジョニングするかについては言及しません。
最初にVagrant ansibleプロビジョナーに行きましょう:
ディレクトリ(テストなど)を作成し、内部にVagrantファイルを作成します:
Vagrantfile:
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のansible provionnerは、Vagrantfileと同じディレクトリでファイル名hosts
を探し、provision.yml
プレイブック。
Vagrantのansible provisionnerに頼らずに、手動で実行することもできます。
ansible-playbook -i hosts provision.yml --ask-pass --Sudo
Vagrant + Virtualbox + Ansibleトリオは常にうまくいくとは限らないことに注意してください。問題のあるバージョンの組み合わせがいくつかあります。問題が発生した場合は、最新バージョンにアップグレードしてください(特にネットワークに関して)。
{shameless_plug} VagrantとAnsibleを組み合わせたより広範な例があります here {/ shameless_plug}
幸運を !
Brewを使用してAnsibleをインストールした場合、デフォルトのホストファイルは/usr/local/etc/ansible/hosts
。しかし、他の人が指摘したように、デフォルトを変更したいだけかもしれません。
基本プロジェクトは他のユーザーと共有されるため、bash環境変数を使用するのが好きです。単にexport ANSIBLE_HOSTS=/pathTo/inventory/
これは、ホストファイルまたはマルチファイルのディレクトリにすることができます。
〜/ .bash_profileに書き込むこともできます。そのため、ansible/lib/ansible/constants.pyでソースを確認するために、confファイルを維持する代わりに、その永続的な他の変数がそのように設定できます。
Vagrantのansibleプロビジョニングツールを使用すると、Vagrantは自動的にAnsibleホストファイル(vagrant_ansible_inventory_default
)ansible-playbookを構成して、そのファイルを使用します。次のようになります。
# Generated by Vagrant
default ansible_ssh_Host=127.0.0.1 ansible_ssh_port=2222
Vagrant Hostを「デフォルト」と呼ぶため、プレイは「デフォルト」または「すべて」を参照する必要があります。
MacにAnsibleをインストールした後の対処方法を以下に説明します。私にとってはうまくいきました。 ansible-tips-and-tricks.readthedocs.io
Ansible.cfgファイルをダウンロードしました
/Users/"yourUser"/.ansible
その後、コメントを外してansible.cfgファイルを編集できます
inventory = /Users/"yourUser"/.ansible
上記のように、ansibleフォルダへのパスを指定します。このフォルダーにホストファイルを作成することもできます。ローカルで試してみるには、
localhost ansible_connection=local
hostsファイルで、それを試してみてください
ansible -m ping all