Nie można znaleźć pliku konfiguracyjnego w „/ etc / ansible /” w Mac OS X

15

Jestem na Mac OS X i nowy w Ansible . Zapomniałem, jak to zainstalowałem. Myślę za pośrednictwem pip:

$ pip freeze
altgraph==0.12
ansible==1.9.2

W każdym razie z tego, co czytam, powinien być plik konfiguracyjny /etc/ansible/, ale zawartość tego katalogu to po prostu:

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

Nie wygląda na to, żeby zdefiniowano zmienną środowiskową:

$ echo $ANSIBLE_CONFIG
# blank line

Ansible działa, o ile mi wiadomo (bez lokalnego ansible.cfgi nic nie ma w ansiblefolderze w katalogu użytkownika), ale jestem zaskoczony.

Czy ktoś może wyjaśnić, czego tu nie dostaję?

MikeiLL
źródło

Odpowiedzi:

14

Z tego, co wiem, plik konfiguracyjny Ansible ( ansible.cfg) może znajdować się tutaj dla ustawień konfiguracji na poziomie użytkownika:

~/.ansible.cfg

Jak również konfiguracja ogólnosystemowa znajduje się tutaj; tam, gdzie twierdzisz, nie możesz znaleźć żadnego takiego pliku:

 /etc/ansible/ansible.cfg

Jeśli w jakiś sposób masz wielu użytkowników w systemie, być może ~/.ansible.cfgw jednym z katalogów użytkowników jest zmienna, o której zapomniałeś?

Stwierdzasz, że mogłeś go zainstalować przy użyciu pip, ale sprawdzając formułę Homebrew dla Ansible , został niedawno zderzony z wersją 1.9.2 do 1.9.3 4 września . Więc może zainstalowałeś go przez Homebrew?

A Twoim głównym zmartwieniem wydaje się to, czy ansible.cfgjest to konieczne:

Ansible działa, o ile mi wiadomo (bez lokalnego ansible.cfgi nic nie ma w ansiblefolderze w katalogu użytkownika), ale jestem zaskoczony.

Czy ktoś może wyjaśnić, czego tu nie dostaję?

Tak, powinien działać poprawnie bez konfiguracji. W przypadku większości programów wszystko, co robi plik konfiguracyjny, zastępuje wartości domyślne systemu podstawowego. Więc jeśli go ansible.cfgbrakuje, Ansible nadal działałby, ale używałby tylko domyślnych ustawień podstawowych systemu. Jak wyjaśniono w oficjalnej dokumentacji Ansible :

Niektóre ustawienia w Ansible można regulować za pomocą pliku konfiguracyjnego. Konfiguracja zapasów powinna być wystarczająca dla większości użytkowników, ale mogą istnieć powody, dla których chcesz je zmienić.

Zmiany można wprowadzić i wykorzystać w pliku konfiguracyjnym, który będzie przetwarzany w następującej kolejności:

* ANSIBLE_CONFIG (an environment variable)
* ansible.cfg (in the current directory)
* .ansible.cfg (in the home directory)
* /etc/ansible/ansible.cfg
JakeGould
źródło
nie w żadnym miejscu. i jestem jedynym użytkownikiem. Chyba mógłbym po prostu skopiować go z repozytorium git i umieścić w jednym z tych katalogów.
MikeiLL,
Dobra decyzja. Nie został zainstalowany przez Homebrew, ale była to wersja 1.9.2. w tej chwili ponowna instalacja za pośrednictwem pip ...
MikeiLL
teraz w wersji 1.9.3, ale nadal nie można znaleźć katalogu konfiguracji w żadnej z powyższych lokalizacji. Jest ~/.ansible/cpi /etc/ansible/z tą samą zawartością.
MikeiLL,
Dzięki. Ma sens. Po prostu nie byłem pewien, czy konfiguracja zapasów była zwykle przechowywana w jednym z ansible.cfgplików, do których się odwołuje .
MikeiLL,
1
@MikeiLL Nie, nie martw się tym. Moja ostatnia edycja miała miejsce, kiedy w końcu zrozumiałem twoje obawy. Szczerze mówiąc, nie mogę wymyślić dobrze znanego oprogramowania, które nie działa zgodnie z logiką „Będę mieć podstawowe ustawienia domyślne, ale jeśli znajdę plik konfiguracyjny użytkownika, który zastąpi ustawienia domyślne”. Duże ryzyko związane z bezpieczeństwem / stabilnością, jakie powstaje, gdy cały system jest zależny od zewnętrznego pliku konfiguracyjnego, polega na tym, że jeśli ten plik zniknie, cały system się zawali? Niezły plan. Szczęśliwy, że rozumiesz teraz, że jeśli brakuje pliku konfiguracyjnego, nic złego się nie dzieje.
JakeGould,
13

homebrewFormuła zastępuje ciąg /etc/ansiblew constants.pyz /usr/local/etc/ansible. Wydaje mi się to złym juju.

Nie miałem /usr/local/etc/ansiblepóźniej brew install ansible. Potwierdziłem jednak, że jeśli umieścisz tam ważny dokument ansible.cfg, zostanie on uhonorowany (na razie).

Moje rekomendacje:

  1. Nie używaj brewdo instalacji Ansible.
  2. Wyraźnie powiedz, że twoja konfiguracja nie zależy od globalizacji środowiska systemowego, takich jak /etc/ansible/ansible.cfg.

Odniesienia do kodu:

zaparzanie formuły ansible # 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

Mike D.
źródło
homebrew pracuje w przestrzeni użytkownika, więc wszystko znajduje się w katalogu / usr / local. Jest okej.
gagarine
3

W OSX zainstalowałem ansible za pomocą pipa i znalazłem, że ansible.cfg nie jest obecny w / etc / ansible lub w moim katalogu domowym.

Źródło: https://github.com/ansible/ansible/issues/18512

pip zwykle nie instaluje plików konfiguracyjnych, a pip z ansible nie różni się. Jeśli chcesz po prostu wypróbować ansible, zazwyczaj działa bez pliku ansible.cfg. (Musisz podać spis, ale możesz to zrobić w wierszu poleceń, a nie w pliku, jeśli chcesz). Jeśli chcesz pobrać przykładowy plik konfiguracyjny do dostosowania, możesz go pobrać z tarballa lub z repozytorium źródłowego tutaj: https://github.com/ansible/ansible/blob/devel/examples/ansible.cfg

Pliki ekwipunku są wyjaśnione tutaj: http://docs.ansible.com/ansible/intro_inventory.html Aby określić hosty dla ekwipunku w wierszu poleceń, wykonaj następujące czynności:

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

Jeśli chcesz określić pojedynczy host za pomocą wiersza polecenia, użyj przecinka końcowego w ciągu ekwipunku:

ansible -i 'host1,' all -m command -a 'hostname'
Vaichidrewar
źródło
2

Przekonałem się, że Homebrew nie utworzy /etc/ansiblekatalogu ani nie utworzy pliku konfiguracji ani hosta. Jeśli jednak utworzysz /etc/ansiblekatalog i skopiujesz konfigurację z repozytorium github do /etc/ansiblekatalogu, rozpozna to jako konfigurację.

Możesz także przejść do tej konfiguracji i odkomentować wiersz określający lokalizację zapasów, aby:

ekwipunek = / etc / ansible / hosts

Po wykonaniu tej czynności ansible będzie działać tak samo, jak w przypadku instalacji homebrew, jak w przypadku każdej innej instalacji, a dokumentacja znaleziona w Internecie może być wykorzystana w wersji homebrew.

Guardius
źródło
/ usr / local / etc / nie został rozpoznany. Próbowałem utworzyć katalog / etc / ansible / i przeniosłem hosty i ansible.cfg działało dobrze!
aelkz