Подтвердить что ты не робот

Где хранить файл Ansible host в Mac OS X

Я пытаюсь начать с Ansible для предоставления моего Vagrantbox, но я не могу понять, как обращаться с файлами хоста.

Согласно документации, ее следует хранить в /etc/ansible/hosts, но я не могу найти ее в своей системе (Mac OS X). Я также видел примеры, в которых файл host.ini находится в корневом документе рядом с бродячим файлом.

Итак, мой вопрос заключается в том, где вы можете сохранить свой файл хоста для настройки одного бродячего блока?

4b9b3361

Ответ 1

Пока Ansible будет пытаться /etc/ansible/hosts по умолчанию, есть несколько способов сказать, где искать альтернативный файл инвентаря:

  • используйте переключатель командной строки -i и передайте путь к файлу вашего ресурса.
  • добавьте hostfile = path_to_hostfile в раздел [defaults] конфигурационного файла ~/.ansible.cfg
  • используйте export ANSIBLE_HOSTS=path_to_hostfile, как предложил DomaNitro в его ответе

Теперь вы не упоминаете, хотите ли вы использовать доступный запасник, доступный в бродяжничестве, или если вы хотите вручную разместить свой бродячий хозяин.

Вначале отбросьте необходимое условие для бродяг:

Создайте каталог (например, test) и создайте файл 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 будет искать имя файла hosts в том же каталоге, что и Vagrantfile, и попытается применить playbook provision.yml.

Вы также можете запустить его вручную, не прибегая к незаменимому помощнику Vagrant:

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

Обратите внимание, что трюк Vagrant + Virtualbox + Ansible не всегда хорошо ладит. Есть несколько комбинаций версий, которые являются проблематичными. Попытайтесь обновить до версии latests, если у вас возникли проблемы (особенно в отношении сети).

{shameless_plug} Вы можете найти более обширный пример смешивания бродяг и несуществующих здесь {/shameless_plug}

Удачи!

Ответ 2

Если вы использовали Brew для установки Ansible, скорее всего, вы найдете файл hosts по умолчанию в /usr/local/etc/ansible/hosts. Но, как указывали другие, вы можете просто изменить значение по умолчанию.

Ответ 3

Мне нравится использовать переменные среды bash, так как мой базовый проект используется совместно с другими пользователями. вы можете просто export ANSIBLE_HOSTS=/pathTo/inventory/ это может быть файл хоста или каталог с несколькими файлами.

Вы также можете использовать запись в файле ~/.bash_profile, чтобы его постоянство Множество других переменных может установить этот способ вместо того, чтобы поддерживать файл conf для дополнительной информации. Проверьте источник в файле ansible/lib/ansible/constantants.py

Ответ 4

Если вы используете Vagrant-совместимый помощник, Vagrant автоматически сгенерирует файл Ansible hosts (называемый vagrant_ansible_inventory_default) и настроит загрузочную книгу для использования этого файла. Это выглядит так:

# Generated by Vagrant

default ansible_ssh_host=127.0.0.1 ansible_ssh_port=2222

Он вызывает хост-бродягу "по умолчанию", поэтому ваши пьесы должны либо ссылаться на "по умолчанию" или "все".