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

15

Я на 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 работает (без локального ansible.cfg, а в ansibleпапке пользователя dir ничего нет ), но я в замешательстве.

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

MikeiLL
источник

Ответы:

14

Из того, что я знаю, файл конфигурации 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 работает (без локального ansible.cfg, а в ansibleпапке пользователя dir ничего нет ), но я в замешательстве.

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

Да, он должен работать без конфигурации. Для большинства программных продуктов все файлы конфигурации переопределяют настройки системы по умолчанию. Поэтому, если 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
JakeGould
источник
ни в одном месте. и я единственный пользователь. Я думаю, я мог бы просто скопировать его из репозитория Git и поместить его в один из этих каталогов.
MikeiLL
Хороший звонок. Он не был установлен через homebrew, но это была версия 1.9.2. переустановка через pip на данный момент ...
MikeiLL
сейчас в 1.9.3, но все еще не может найти каталог конфигурации ни в одном из вышеуказанных мест. Там ~/.ansible/cpи /etc/ansible/с таким же содержанием.
MikeiLL 19.09.15
Благодарю. Имеет смысл. Я просто не был уверен, была ли стандартная конфигурация храниться в одном из указанных ansible.cfgфайлов.
MikeiLL
1
@MikeiLL Нет, не беспокойся об этом. Мое последнее редактирование было, когда я наконец понял твои проблемы. Я, честно говоря, не могу вспомнить хорошо известную часть программного обеспечения, которая не работает по логике «у меня будут основные настройки по умолчанию, но если я найду файл конфигурации пользователя, который переопределит настройки по умолчанию». Большой риск безопасности / стабильности, который вы получаете, когда вся ваша система зависит от внешнего файла конфигурации, заключается в том, что если этот файл исчезнет, ​​вся система рухнет? Не хороший план. Рад, что теперь вы понимаете, что если файл конфигурации отсутствует, ничего плохого не произойдет.
JakeGould
13

homebrewФормула заменяет строку /etc/ansibleв constants.pyс /usr/local/etc/ansible. Мне кажется, это плохо для меня.

У меня не было /usr/local/etc/ansibleпосле brew install ansible. Тем не менее, я подтвердил, что если вы поставите действительное ansible.cfgтам, оно будет выполнено (пока).

Мои рекомендации:

  1. Не используйте brewдля установки Ansible.
  2. Будьте откровенны в отношении вашей конфигурации, не зависит от глобальных параметров системной среды, таких как /etc/ansible/ansible.cfg.

Код ссылки:

Замена готовой формулы # 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

Майк Д
источник
homebrew работает в пользовательском пространстве, поэтому все находится в / usr / local. Это отлично.
gagarine
3

В 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'
vaichidrewar
источник
2

Я обнаружил, что Homebrew не создаст /etc/ansibleкаталог и не создаст файл конфигурации или файл хоста. Однако, если вы создадите /etc/ansibleкаталог и скопируете конфигурацию из репозитория github в /etc/ansibleкаталог, он распознает это как конфигурацию.

Вы также можете перейти в этот конфиг и раскомментировать строку, которая также указывает местоположение инвентаря:

инвентарь = / etc / ansible / hosts

После этого ansible будет выполнять ту же процедуру с установкой homebrew, что и с любой другой установкой, и документацию, которую вы найдете в Интернете, можно использовать с версией homebrew.

Guardius
источник
/ usr / local / etc / не был распознан. Попытался создать каталог / etc / ansible / и переместить хосты, а ansible.cfg работал отлично!
aelkz