Jak zainstalować i skonfigurować Ansible na Ubuntu?

Rozpoczęcie pracy z Ansible w systemie Ubuntu w celu lepszego udostępniania środowiska i zarządzania konfiguracją.

Zarządzanie konfiguracją jest kluczowym etapem cyklu życia DevOps. Pomaga w automatyzacji i orkiestracji infrastruktury IT.

Istnieje kilka narzędzi do zarządzania konfiguracją, na przykład Puppet, Ansible, Chef i SaltStack. I oczywiście Ansible jest jednym z najpopularniejszych narzędzi w DevOps. Może z łatwością zarządzać tysiącami serwerów i całą infrastrukturą IT.

W tym artykule omówimy następujące kwestie.

  • Instalacja ansible
  • Wymiana kluczy SSH
  • Ansible konfiguracja klienta
  • Testowanie ansible

Ansible Instalacja

Aby to uprościć, spróbujmy użyć Ansible na dwóch serwerach. Jeden będzie ansible-server, a drugi ansible-client z następującym adresem IP.

  • ansible-serwer – 10.0.0.1
  • ansible-klient – ​​10.0.0.25

Instalacja jest prosta… na wszystkich serwerach, na których chcesz używać Ansible, należy wykonać następujące czynności. W tym przypadku na obu serwerach powyżej.

  • Uruchom poniższe polecenie, aby zainstalować niezbędne oprogramowanie wymagane do zainstalowania ansible.
[email protected]:~# apt install software-properties-common
  • Zainstaluj repozytorium z pakietem ansible.
[email protected]:~# apt-add-repository --yes --update ppa:ansible/ansible
  • Zaktualizuj zaawansowane narzędzie do pakowania (apt)
[email protected]:~# apt update
  • I na koniec – uruchom poniższe polecenie, aby zainstalować
[email protected]:~# apt install ansible

Instalacja niezbędnego pakietu zajmie kilka sekund.

W jaki sposób zapewniasz jego instalację i wersję?

Cóż, to proste. Możesz użyć składni –version z ansiblem, aby dowiedzieć się, jak poniżej.

[email protected]:~# ansible --version
ansible 2.8.1
  config file = /etc/ansible/ansible.cfg
  configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python2.7/dist-packages/ansible
  executable location = /usr/bin/ansible
  python version = 2.7.15+ (default, Nov 27 2018, 23:36:35) [GCC 7.3.0]
[email protected]:~#

Jak widać, Ansible 2.8.1 jest zainstalowany i dostarcza niezbędnych informacji, takich jak lokalizacja pliku konfiguracyjnego, moduł Pythona.

Następnie musimy dokonać wymiany kluczy SSH, aby służyć i klient mogą ze sobą rozmawiać.

Wymiana kluczy SSH

Ansible łączy się ze swoim klientem przez SSH (Secure shell).

Najpierw wygenerujemy klucz publiczny na serwerze ansible, który należy skopiować do klienta ansible.

Upewnij się, że jesteś zalogowany jako użytkownik root.

  • Wygeneruj klucz za pomocą polecenia ssh-keygen, jak pokazano poniżej
[email protected]:~# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:cDapZBESo+8XcbXupbtILkFrklUSpwa70Y1c7yH5K1A [email protected]
The key's randomart image is:
+---[RSA 2048]----+
|    =.+oo .      |
|   . B.B.= .     |
|  . o @oE +      |
|   . *oO * .     |
|    o++.S + .    |
|   .o +o . +     |
|    .o..o +      |
|     ..o o .     |
|       .o o.     |
+----[SHA256]-----+
[email protected]:~#

Jak można zauważyć, wygenerował klucz publiczny w folderze .ssh. Pełna ścieżka to /root/.ssh/id_rsa.pub

Uwaga: upewnij się, że pliki kluczy prywatnych i publicznych nie są czytelne na całym świecie. Możesz wyświetlić listę plików, aby je zweryfikować.

cd /root/.ssh
[email protected]:~# ls -l 
-rw------- 1 root root 1679 Jun 19 00:37 id_rsa 
-rw------- 1 root root 404 Jun 19 00:37 id_rsa.pub

Jeśli zauważysz, że uprawnienia są nieprawidłowe, możesz je zmienić za pomocą polecenia chmod

Były:

chmod 400 id_rsa
chmod 400 id_rsa.pub

Skopiujmy klucz publiczny na hosta Ansible, którego adres IP to 192.168.56.101

[email protected]:~/.ssh# ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
The authenticity of host '10.0.0.25 (10.0.0.25)' can't be established.
ECDSA key fingerprint is SHA256:eXduPrfV0mhxUcpsZWg+0oXDim7bHb90caA/Rt79cIs.
Are you sure you want to continue connecting (yes/no)? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
[email protected]'s password: 

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh '[email protected]'"
and check to make sure that only the key(s) you wanted were added.

[email protected]:~/.ssh#

Jak widać na powyższym wyjściu, 1 klucz został pomyślnie dodany. Oznacza to, że klucz SSH jest wymieniany.

Następnie skonfigurujemy klienta Ansible.

Konfiguracja klienta Ansible

Zakładam, że wykonałeś już kroki instalacji Ansible na serwerze klienta, jak wyjaśniono w poprzednich krokach.

Konfiguracja klienta lub hosta to nic innego jak uświadomienie serwerowi Ansible klientów. Aby to zrobić:

  • Zaloguj się do serwera Ansible
  • Przejdź do /etc/ansible
  • Dodaj następujące elementy w pliku hosts za pomocą ulubionego edytora
[Client] 
node1 ansible_ssh_host=10.0.0.25

Test ansibla

Jeśli poprawnie wykonałeś wszystkie kroki, otrzymasz komunikat SUKCES po uruchomieniu poniższego polecenia na serwerze ansible.

[email protected]:~/.ssh# ansible -m ping Client
node1 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python3"
    }, 
    "changed": false, 
    "ping": "pong"
}
[email protected]:~/.ssh#

Thea powyżej wysyła ping do klienta, aby przetestować łączność i potwierdzić, czy jest dobra, czy nie.

Wniosek

Mam nadzieję, że to da ci pomysł na rozpoczęcie instalacji i zabawy. Czekaj na więcej samouczków Ansible lub zapoznaj się z kursem Udemy Mastering Ansible.