Где хранить файл Ansible host на Mac OS X
Я пытаюсь начать работу с Ansible для обеспечения моего Vagrantbox, но я не могу понять, как работать с файлами хоста.
согласно документации, они должны храниться в /etc/ansible/hosts, но я не могу найти это в моей системе (Mac OS X). Я также видел примеры, где host.ini файл, расположенный в корне документа рядом с файлом vagrant.
Итак, мой вопрос заключается в том, где бы вы хранили свой хост-файл для настройки одного бродячего ящика?
5 ответов:
в то время как Ansible будет пытаться
/etc/ansible/hostsпо умолчанию существует несколько способов указать ansible, где искать альтернативный файл инвентаризации:
- использовать
-iпереключатель командной строки и передать свой путь к файлу инвентаризации- добавить
hostfile = path_to_hostfileна вашего~/.ansible.cfgконфигурационный файл- использовать
export ANSIBLE_HOSTS=path_to_hostfileкак предложил Доманитро в своем ответетеперь вы не упоминаете, если вы хотите использовать ansible provisionner доступно в vagrant, или если вы хотите подготовить свой залет host вручную.
давайте сначала отправимся за бродячим ансиблом провизионнером:
создать каталог (например, тест), и создать бродячий файл внутри:
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), ansible provionner Vangrant будет искать имя файлаhostsв том же каталоге, что и Vagrantfile, и попытается применитьprovision.ymlplaybook.вы также можете запустить его вручную, не прибегая к Ansible provisionner Vagrant:
ansible-playbook -i hosts provision.yml --ask-pass --sudoобратите внимание, что Vagrant+Virtualbox+Ansible trio не всегда хорошо ладят. Есть некоторые комбинации версий, которые являются проблематичными. Попробуйте обновить до последних версий, если у вас возникли проблемы (особенно в отношении сети).
{shameless_plug} вы можете найти более обширный пример смешение бродячего и ансибля здесь {/shameless_plug}
удачи !
Если вы использовали Brew для установки Ansible, вы, скорее всего, найдете файл hosts по умолчанию в
/usr/local/etc/ansible/hosts. Но, как указывали другие, вы можете просто изменить значение по умолчанию.
Мне нравится использовать переменные среды bash, поскольку мой базовый проект совместно используется с другими пользователями. вы можете просто
export ANSIBLE_HOSTS=/pathTo/inventory/Это может быть хост файл или папку с несколькими файлами.вы также можете использовать написать его в ~/.файл так упорно Куча других переменных может установить этот способ вместо того, чтобы поддерживать файл conf для получения дополнительной информации проверьте источник ansible/lib/ansible/constants.py
Если вы используете Ansible provisioner 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Он называет бродячий хост "default", поэтому ваши пьесы должны либо ссылаться на" default", либо"all".
Вот описание, Что делать после установки Ansible на Mac, это сработало для меня:ansible-tips-and-tricks.readthedocs.io
Я скачал ansible.файл cfg для
/Users/"yourUser"/.ansibleи после этого вы можете редактировать ansible.cfg файл, раскомментировав
inventory = /Users/"yourUser"/.ansibleстрока и указание пути к папке ansible, как показано выше. Вы также можете создать файл hosts в этой папке. Чтобы попробовать его локально, вы можете поставить
localhost ansible_connection=localв файле hosts и попробуйте его с
ansible -m ping all
Comments