Не удается найти файл конфигурации в «/ etc / ansible /» в Mac OS X

27167
MikeiLL

Я на Mac OS X и новичок в Ansible . Я забыл, как я его установил. Я думаю через pip:

$ pip freeze altgraph==0.12 ansible==1.9.2 

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

$ ls -a /etc/ansible/ . .. .hosts.swp hosts roles 

Похоже, что переменная окружения тоже определена:

$ echo $ANSIBLE_CONFIG # blank line 

Насколько я могу судить, Ansible работает (без локального доступа, а в папке пользователя dir ansible.cfgничего нет ansible), но я в замешательстве.

Может кто-нибудь объяснить, что я здесь не понимаю?

11

4 ответа на вопрос

12
JakeGould

Из того, что я знаю, файл конфигурации Ansible ( ansible.cfg) может быть расположен здесь для настроек конфигурации на уровне пользователя:

~/.ansible.cfg 

А также общесистемный конфиг, расположенный здесь; где вы утверждаете, что не можете найти такой файл:

 /etc/ansible/ansible.cfg 

Если каким-то образом у вас в системе несколько пользователей, возможно, ~/.ansible.cfgв одной из их пользовательских директорий, о которой вы забыли, есть плавающий элемент ?

Вы утверждаете, что могли установить его, используя pip, но, проверяя формулу Homebrew для Ansible, она только недавно была повышена с версии 1.9.2 до 1.9.3 4 сентября . Так, возможно, вы установили его через Homebrew?

И ваша главная забота, кажется, является ли ansible.cfgэто необходимым:

Насколько я могу судить, Ansible работает (без локального доступа, а в папке пользователя dir ansible.cfgничего нет ansible), но я в замешательстве.

Может кто-нибудь объяснить, что я здесь не понимаю?

Да, он должен работать без конфигурации. Для большинства программных продуктов все файлы конфигурации переопределяют настройки системы по умолчанию. Так что, если ansible.cfgотсутствует, Ansible все равно будет работать, но будет использовать только основные настройки системы по умолчанию. Как объясняется в официальной документации Ansible :

Некоторые настройки в Ansible настраиваются с помощью файла конфигурации. Стандартная конфигурация должна быть достаточной для большинства пользователей, но могут быть причины, по которым вы захотите изменить их.

Изменения могут быть внесены и использованы в файле конфигурации, который будет обрабатываться в следующем порядке:

* ANSIBLE_CONFIG (an environment variable) * ansible.cfg (in the current directory) * .ansible.cfg (in the home directory) * /etc/ansible/ansible.cfg 
ни в одном месте. и я единственный пользователь. Я думаю, я мог бы просто скопировать его из репозитория Git и поместить его в один из этих каталогов. MikeiLL 9 лет назад 0
Хороший звонок. Он не был установлен через homebrew, но это была версия 1.9.2. переустановка через pip на данный момент ... MikeiLL 9 лет назад 0
сейчас в 1.9.3, но все еще не может найти каталог конфигурации ни в одном из вышеуказанных мест. Есть `~ / .ansible / cp` и` / etc / ansible / `с тем же содержимым. MikeiLL 9 лет назад 0
Благодарю. Имеет смысл. Я просто не был уверен, хранится ли стандартная конфигурация в одном из указанных файлов `ansible.cfg`. MikeiLL 9 лет назад 0
@MikeiLL Нет, не беспокойся об этом. Мое последнее редактирование было, когда я наконец понял твои проблемы. Я, честно говоря, не могу вспомнить хорошо известную часть программного обеспечения, которая не работает по логике «у меня будут основные настройки по умолчанию, но если я найду файл конфигурации пользователя, который переопределит значения по умолчанию». Большая безопасность / стабильность Риск, который вы получаете, когда вся ваша система зависит от внешнего файла конфигурации: если этот файл исчезнет, ​​вся система рухнет? Не хороший план. Рад, что теперь вы понимаете, что если файл конфигурации отсутствует, ничего плохого не произойдет. JakeGould 9 лет назад 1
Я тоже :) Теперь вернемся к ответным документам ... MikeiLL 9 лет назад 0
11
Mike D

The homebrew formula replaces the string /etc/ansible in constants.py with /usr/local/etc/ansible. Seems like bad juju to me.

I did not have /usr/local/etc/ansible after brew install ansible. However, I did confirm that if you put a valid ansible.cfg there, it will be honored (for now).

My recommendations:

  1. Don't use brew to install Ansible.
  2. Be explicit about your config don't depend upon system environment globals, such as /etc/ansible/ansible.cfg.

Code Refs:

brew ansible formula replacement #475: https://github.com/Homebrew/homebrew/blob/master/Library/Formula/ansible.rb#L475

ansible constants.py #61: https://github.com/ansible/ansible/blob/v1.9.3-1/lib/ansible/constants.py#L61

Доморощенная работа в пользовательском пространстве, поэтому все находится в / usr / local. Это отлично. gagarine 8 лет назад 0
2
vaichidrewar

В OSX я установил ansible с помощью pip и обнаружил, что ansible.cfg отсутствует в / etc / ansible или в моем домашнем каталоге.

Источник: https://github.com/ansible/ansible/issues/18512

pip обычно не устанавливает файлы конфигурации, а pip с ansible ничем не отличается. Если вы просто хотите опробовать ansible, он обычно работает без файла ansible.cfg. (Вам необходимо указать некоторые ресурсы, но вы можете сделать это в командной строке, а не в файле, если хотите). Если вы хотите получить образец файла конфигурации для адаптации, вы можете получить его из tarball или исходного репозитория здесь: https://github.com/ansible/ansible/blob/devel/examples/ansible.cfg

Файлы инвентаризации описаны здесь: http://docs.ansible.com/ansible/intro_inventory.html Чтобы указать хосты для инвентаризации в командной строке, просто сделайте что-то вроде этого:

ansible -i 'host1,host2,host3' all -m command -a 'hostname' 

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

ansible -i 'host1,' all -m command -a 'hostname' 
1
Guardius

I've found that Homebrew will not create a /etc/ansible directory, nor will it create a config or host file. However if you create the /etc/ansible directory and copy the config from the github repository into the /etc/ansible directory it will recognize that as a config.

You may also want to go into that config and uncomment the line which specifies the inventory location as well to:

inventory = /etc/ansible/hosts

Upon doing this, ansible will perform the same way with a homebrew install as it does from any other install and the documentation you find online can be utilized with the homebrew version.