Korzystam z Ansible i mam tę konfigurację w moim ekwipunku / wszystkie:
[master]
192.168.1.10 ansible_connection=ssh ansible_ssh_user=vagrant ansible_ssh_pass=vagrant
[slave]
192.168.1.11 ansible_connection=ssh ansible_ssh_user=vagrant ansible_ssh_pass=vagrant
192.168.1.12 ansible_connection=ssh ansible_ssh_user=vagrant ansible_ssh_pass=vagrant
[app]
192.168.1.13 ansible_connection=ssh ansible_ssh_user=vagrant ansible_ssh_pass=vagrant
[all:children]
master
slave
Nie chcę powtarzać wszystkich parametrów dla każdej nowej instancji. Jak mogę je skonfigurować tylko w jednym miejscu? Czy jest plik z tymi parametrami?
~/.ssh/config
Odpowiedzi:
Możesz dodać następującą sekcję do pliku ekwipunku:
Uwaga: Przed ansibl 2.0
ansible_user
byłoansible_ssh_user
.źródło
[all:vars] ansible_connection=ssh ansible_port=22 ansible_user=admin
ansible_port
, więc nie musisz go jawnie określać, chyba że jest inny. Zainteresowany, jeśli ktoś wie, jak zastosować zmienne do więcej niż jednej grupy na raz (ale nie „wszystkie”), rozdzielanie przecinków nie działa.Zmienne grupowe
Możesz ustawić zmienne, które mają zastosowanie do wszystkich hostów, używając układu poradnika określonego w dokumencie najlepszych praktyk Ansible i tworząc
group_vars/all
plik, w którym je definiujesz .[edytuj] Jestem jednak zdezorientowany tym, co próbujesz zrobić. Nie trzeba podawać użytkownika Ansible ani hasła w inwentarzu. Jeśli używasz Vagrant, zdecydowanie tego nie robisz, a jeśli dzwonisz do Ansible z wiersza poleceń, możesz podać użytkownika
--user=vagrant
i poprosić go o podanie hasła--ask-pass
.źródło
group_vars/all/main.yml
czy po prostugroup_vars/all
?sshpass
-"you must install the sshpass program"
group_vars/all
.Myślę, że lepiej jest użyć instalacji klucza ssh na wszystkich serwerach w ciągu ściągania. Powinieneś uruchomić ssh-copy-id tylko dla każdego węzła i zainstalować klucz ssh wszędzie, aby Ansible mógł zalogować się przy użyciu twojego klucza ssh. Bezpieczniej będzie nie zapisywać haseł w podręczniku / ekwipunku.
W tym celu należy wygenerować parę kluczy ssh i następnie uruchomić ssh-copy-id dla wszystkich serwerów.
źródło
Dodaj poniżej do hostów zasobów reklamowych.
Dla Ansible <2.0:
Dla Ansible> = 2.0 :
źródło
ansible_ssh_pass
, nieansible_pass
.Oświadczenie: Testowałem to tylko na OSX. Na podstawie różnych dokumentów oczekuję, że będzie działał na innych platformach.
„katalog projektu” odnosi się do katalogu podstawowego projektu Vagrant - katalogu, który zawiera
Vagrantfile
.Plik ekwipunku Ansible automatycznie wygenerowany przez Vagrant:
Vagrant tworzy plik ekwipunku z domyślnymi zmiennymi połączeń Ansible. Poszukaj tego w
<project directory>/.vagrant/provisioners/ansible/inventory/vagrant_ansible_inventory
.W razie potrzeby plik Vagrant zostanie ponownie wygenerowany, więc ręczne zmiany zostaną zastąpione. Jednak zgodnie z dokumentami Vagrant można określić wiele komputerów, zmiennych grupowych itp.
Vagrantfile
I zostaną one dodane do tego pliku ekwipunku.Skonfiguruj domyślnie Ansible do tego pliku wykazu:
Aby ustawić ten plik jako domyślny używany przez
ansible
polecenie, gdy jesteś w katalogu projektu (na hoście), dodajansible.cfg
plik do katalogu projektu z tą zawartością, zmieniając ścieżkę w razie potrzeby:Aby potwierdzić, że ten plik zapasów jest używany, poszukaj go jako domyślnego zgłoszonego przez ansible:
(z katalogu projektu)
$ ansible | grep inventory ERROR! Missing target hosts -i INVENTORY, --inventory-file=INVENTORY specify inventory host path (default=./.vagrant/provis ioners/ansible/inventory/vagrant_ansible_inventory) or
Aby potwierdzić hosting:
$ ansible all --list-hosts hosts (2): master slave
Korzystanie z Ansible z tymi hostami:
W katalogu projektu powinieneś być w stanie
ansible
normalnie korzystać z hostów, które zdefiniowałeśVagrantfile
.Na przykład:
źródło