web-dev-qa-db-ja.com

Mac OS XでのAnsible Hostファイルの保存場所

VagrantboxをプロビジョニングするためにAnsibleを使い始めようとしていますが、ホストファイルの処理方法がわかりません。

ドキュメントによると、/etc/ansible/hostsが、システム(Mac OS X)でこれを見つけることができません。また、Host.iniファイルは、vagrantファイルに隣接するドキュメントルートにあります。

だから私の質問は、単一の浮浪者ボックスを設定するためのホストファイルをどこに保存しますか?

62
StenW

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}

幸運を !

71
leucos

Brewを使用してAnsibleをインストールした場合、デフォルトのホストファイルは/usr/local/etc/ansible/hosts。しかし、他の人が指摘したように、デフォルトを変更したいだけかもしれません。

38
counterbeing

基本プロジェクトは他のユーザーと共有されるため、bash環境変数を使用するのが好きです。単にexport ANSIBLE_HOSTS=/pathTo/inventory/これは、ホストファイルまたはマルチファイルのディレクトリにすることができます。

〜/ .bash_profileに書き込むこともできます。そのため、ansible/lib/ansible/constants.pyでソースを確認するために、confファイルを維持する代わりに、その永続的な他の変数がそのように設定できます。

7
DomaNitro

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を「デフォルト」と呼ぶため、プレイは「デフォルト」または「すべて」を参照する必要があります。

3
Lorin Hochstein

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