11

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

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

4 ответа4

12

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

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

Да, он должен работать без конфигурации. Для большинства программных продуктов все файлы конфигурации переопределяют настройки системы по умолчанию. Поэтому, если 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
11

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

У меня не было /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

2

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

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

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

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

2

В 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'

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .