Administracja serwerami

Ansible – administracja serwerami linux

Administracja serwerami linux za pomocą narzędzia Ansible

Posiadając wiele serwerów z różnymi sposobami logowania, administracja serwerami staje się nieco trudniejsza i żmudniejsza. W poniższym artykule, przedstawię wam jak można jednorazowo skonfigurować plik /etc/ansible/hosts, aby móc jednocześnie zarządzać wieloma serwerami z różnymi sposobami logowania.

Mówiąc tu o różnych sposobach, mam na myśli używanie połączenie tylko po ssh ale:

  • z różnymi kluczami prywatnymi
  • z różnym portem na którym nasłuchuje usługa SSH
  • z różnymi użytkownikami do logowania
  • z logowaniem bezpośrednio na użytkownika root lub przejściem na niego za pomocą su
  • z przejściem na wyższe uprawnienia za pomocą sudo

 

Oczywiście najprostszym sposobem, byłoby na każdym serwerze ustawić ten sam sposób logowania i to samo hasło. Niestety nie jest to dobre rozwiązanie i mało bezpieczne.

Mówiąc tu o różnych hasłach, trzeba je gdzieś przechowywać. Administracja serwerami wymusza abyśmy wszystkie wrażliwe dane nie przechowywali w jednym miejscu w nieszyfrowanym formacie. Hasło do serwerów możemy podać  bezpośrednio w pliku /etc/ansible/hosts ale byłyby one nieszyfrowane.

Z pomocą przychodzi tutaj „Vault”. Dzięki temu narzędziu możemy przechowywać wrażliwe dane w pliku z zaszyfrowanymi danymi. W takim pliku możemy przechowywać zarówno hasła jak i dane konfiguracyjne. Dostęp do pliku jest zabezpieczony hasłem, które podajemy w trakcie uruchamiania polecania.

 

Konfiguracja pliku /etc/ansible/hosts – administracja serwerami linux staje się prostsza

W poprzednim artykule ansible-automatyzacja-zadan opisywaliśmy podstawy konfiguracji tego pliku. Poniżej przedstawię konfigurację umożliwiającą logowanie na kilka sposobów:

W pliku /etc/ansible/hosts tworzymy nową grupę:

[groupservers]

192.168.0.10 ansible_connection=ssh ansible_port=22 ansible_user=root ansible_ssh_pass="password"

Powyższy przykład przedstawia łączenie do serwera 192.168.0.10 za pomocą użytkownika root i podając jednocześnie hasło w formacie nieszyfrowanym

Teraz wystarczy tylko uruchomić:

ansible groupservers -a "hostname"

 

Był to najprostszy sposób logowania. Teraz użyjemy logowania na oddzielnego użytkownika po kluczu ssh, z niestandardowym portem oraz przejście z niego na użytkownika root za pomocą użycia metody „su”.

192.168.0.11 ansible_connection=ssh ansible_port=51232 ansible_user=user1 ansible_become=yes ansible_become_method=su ansible_become_user=root ansible_become_pass="password"

Po ustawieniu tej konfiguracji można użyć agenta do przechowywani  klucza ssh:

ssh-agent bash
ssh-add ~/.ssh/id_rsa

a następnie:

ansible groupservers -a "hostname"

 

Bez użycia agenta ssh musi zostaćc dodatkowo użyty parametr „–private-key=”

ansible groupservers -a "hostname" --private-key=~/.ssh/id_rsa

 

Zastosowanie szyfrowanych danych za pomocą ansible-vault – administracja serwerami linux z większym bezpieczeństwem przechowywania danych

Jak wcześniej wspominałem przechowywanie haseł w postaci nieszyfrowanej jest niezalecane i nie należy tego stosować.

Ansible posiada ciekawe narzędzie ansible-vault pozwalające szyfrować piki. W przypadku chęci utworzenia takiego pliku wykonujemy polecenie:

ansible-vault create pass_file.yml

Następnie dwukrotnie podajemy hasło, które ma być zabezpieczeniem pliku.

 

Struktura pliku wygląda następująco:

zmienna: wartość

Także jeśli chcemy przechowywać w tym pliku hasła, to będzie to wyglądało jak poniżej:

root_password: password1
server_root_password: password2

 

Teraz te zmienne możemy zastosować w pliku /etc/ansible/hosts:

[groupservers]

192.168.0.10 ansible_connection=ssh ansible_port=22 ansible_user=root ansible_ssh_pass="{{ root_password }}"

192.168.0.11 ansible_connection=ssh ansible_port=51232 ansible_user=user1 ansible_become=yes ansible_become_method=su ansible_become_user=root ansible_become_pass="{{ server_root_password }}"

 

Za pomocą polecenia:

ansible-vault edit pass_file.yml

możemy edytować plik z hasłami i wprowadzać ich dowolną ilość.

 

Szyfrowany plik wygląda podobnie do tej wartości:

$ANSIBLE_VAULT;1.1;AES256
31356461373165663564633737633864386463666265623937623237373435313637393462643836
3037386632666434646264613532313765383061336663660a393730323231383832643461313634
32366438313566633561636138336364366261623162303436313332613562316134396637643761
3732656333636263360a646162343930383034663632393336376133356132313935353331313438
36353965396337643330613962393265653330316632643962373262336131386238363938313733
37303161356562323739333433393062616232346534393839656638623334646338303936613334
62343530316639393431396536343465366361636339343432333738376261623364353566393830
39336133303033373964663434396535376134633233353638616335376136373931323830653863
64346661363230646130373963623232363831343737333137653838656338613939

 

Domyślnym edytorem ansible-vault jest vi, możemy to zmienić i używać przykładowo edytora nano.

W konsoli wystarczy wpisać polecenie:

export EDITOR=nano

 

Uruchomienie zadania z Vault

ansible groupservers -a "hostname" [email protected]_file.yml --ask-vault-pass

 

Posumowanie – administracja serwerami

Jak zauważyliście, posiadając wiele serwerów z różnymi sposobami konfiguracji niestety musimy poświęcić wiele czasu na dostosowanie konfiguracji i możliwości administracji serwerami linux. Natomiast patrząc z większej perspektywy warto poświęcić ten czas.

Jednak przed dostosowaniem plików konfiguracyjnych należy zastanowić się czy nie będzie lepiej ujednolicić sposobu logowania na wszystkich serwerach, dzieląc je na grupy.

Dodaj komentarz

Time limit is exhausted. Please reload the CAPTCHA.