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