Ansible, bezpłatny i oparty na otwartym kodzie źródłowym projekt Red Hata w języku Python, to popularna platforma do zarządzania konfiguracją i automatyzacji IT.
Jest wieloplatformowy i może współpracować z większością nowoczesnych systemów operacyjnych, w tym Linux, Windows i Mac. Obsługuje deklaratywny język napisany w YAML lub YAML Ain’t Markup Language do opisu konfiguracji systemu.
Ansible, wraz z innymi nowoczesnymi platformami do zarządzania konfiguracją, zrewolucjonizował automatyzację IT i standardy branżowe. Narzędzia do zarządzania konfiguracją stały się częścią zestawu narzędzi DevOps i są nieodłączną częścią każdego nowoczesnego cyklu życia procesów IT. Ma to zastosowanie do każdego nowoczesnego środowiska infrastruktury, niezależnie od tego, czy jest zbudowane na środowisku lokalnym, hybrydowym czy w chmurze. Nie tylko dla DevOps, ale Ansible może również pomóc zautomatyzować wiele codziennych zadań wykonywanych przez administratora systemu.
Jedną z zalet korzystania z Ansible jest to, że nie wymaga agentów i nie wymaga wiele, aby rozpocząć, poza dostępem SSH do maszyny docelowej i obsługiwanej wersji Pythona, która jest już domyślnie zainstalowana w większości nowoczesnych systemów operacyjnych. Ponadto, ponieważ jest to lekkie narzędzie, może być wdrażane i używane ze spuścizną po innowacyjnych systemach.
Spis treści:
Zastosowania Ansible
Orkiestracja
Ansible to wybrane narzędzie do organizowania różnych zadań związanych z administrowaniem systemem i wdrażaniem. Playbooki umożliwiają korzystanie z tych samych przepływów pracy orkiestracji w różnych projektach, a dane konfiguracyjne oparte na YAML umożliwiają przechowywanie i wersjonowanie infrastruktury w repozytorium Git lub dowolnej obsługiwanej platformie kontroli wersji.
Wdrażanie aplikacji
Niezależnie od tego, czy jest to prosta aplikacja z kilkuwierszowym kodem, czy wielowarstwowe, rozbudowane wdrożenie, Ansible umożliwia zautomatyzowanie całego cyklu wdrażania aplikacji.
Bezpieczeństwo i zgodność
Ansible może również pomóc w zapewnieniu bezpieczeństwa systemów zgodnie z wytycznymi Twojej organizacji i zgodności ze standardami branżowymi. Może działać na tysiącach serwerów, generować audyt i naprawiać te luki w zabezpieczeniach, dając administratorowi pełną kontrolę nad środowiskiem.
Przyjrzyjmy się teraz niektórym z typowych zadań Sysadmin, które można zautomatyzować za pomocą Ansible.
Skopiuj pliki z lokalnego lub zdalnego systemu
Jako administrator systemu często kopiujesz pliki z jednego katalogu do drugiego. Pliki konfiguracyjne często trzeba kopiować na serwery zdalne, a czasami musimy przenieść pliki z jednej zdalnej lokalizacji do drugiej.
Moduł kopiowania Ansible może pomóc w wykonaniu tych zadań w playbooku.
Sysadmin rutynowo sprawdza stan zarządzanych serwerów i wykonuje predefiniowane działania zgodnie z zasadami organizacji. Jednym z takich zadań jest znajomość czasu pracy serwera. Dzięki Ansible możemy łatwo pobrać wartości czasu sprawności i wydrukować je razem. Przykład kopiowania konfiguracji ntp z lokalnego na zdalny serwer za pomocą modułu kopiowania pokazano poniżej:
--- - hosts: all gather_facts: no become: yes tasks: - name: Copy a new ntp configuration file and back up the original, if it differs copy: src: ./ntp.conf dest: /etc/ntp.conf owner: root group: root mode: '0644' backup: yes
Skonfiguruj dodatkowe zadania cron
Konfigurowanie zaplanowanych zadań do wykonywania rutynowych zadań jest częścią zarządzania dowolnym serwerem. Możesz zaplanować automatyczne tworzenie kopii zapasowych, łatanie, audyty itp. o określonych porach dnia lub miesiąca, pozostawiając produktywny czas do użytku.
cron jest jednym z takich narzędzi w systemie Linux, które obsługuje planowanie, a Ansible może pomóc w dodawaniu lub modyfikowaniu tych zadań. Jako przykład, poniższy poradnik pokazuje, jak łatwo ustawić zadanie rsync jako root na niektórych lub wszystkich serwerach za pomocą Ansible.
--- - hosts: all gather_facts: no become: yes tasks: - name: Deploy cron job cron: name: "Set rsync job" user: root minute: "5" hour: "4" job: "rsync -avz /path/to/folder1 /path/to/folder1 2>&1"
Zarządzaj dyskami i systemami plików
Ansible może być używany do zarządzania dyskami, układami partycji, systemami plików i montowaniami, w tym /etc/fstab na serwerach Linux. Umożliwia to inny moduł Ansible. Oto przykład, który tworzy partycję na dysku o pojemności 100 GB, formatuje ją za pomocą systemu plików ext4, tworzy nowy katalog do montowania partycji i ostatecznie montuje ją w podanym katalogu. Wpis w /etc/fstab jest również tworzony przez montowanie tymczasowe lub stałe, w zależności od opcji modułu.
--- - hosts: all gather_facts: no become: yes tasks: - name: Create a partition parted: device: /dev/sdb number: 1 part_end: "100%" state: present - name: Format new partition filesystem: fstype: ext4 dev: /dev/sdb1 - name: Create mount directory file: path: /data state: directory - name: Mount partition mount: path: /data src: /dev/sdb1 fstype: ext4 state: mounted
Zbierz logi serwera
Prowadzenie logów w dogodnym miejscu jest czasem niezbędne dla bezpieczeństwa, audytu, a także analizy. Ansible umożliwia zbieranie dzienników z różnych serwerów w środowisku przedsiębiorstwa i łatwe przechowywanie ich w określonej lokalizacji. Oto poradnik, jak to osiągnąć:
--- - hosts: all gather_facts: no become: yes tasks: - name: Find logs find: paths: /var/log/ patterns: '*.log' recurse: yes register: _logs - name: Fetch logs fetch: src: "{{ item.path }}" dest: /tmp/logs with_items: "{{ _logs.files }}"
Zainstaluj lub usuń pakiety i oprogramowanie
Pakiety są często wymagane do zainstalowania na żądanie użytkownika lub jako część początkowych kompilacji serwera. Możemy również potrzebować usunąć niektóre pakiety, które nie są już potrzebne lub mają kilka krytycznych błędów itp. Ansible pozwala łatwo instalować lub usuwać pakiety bez kłopotów z przechodzeniem do każdego serwera i uruchamianiem ręcznych poleceń. Oto przykład demonstrujący instalację i usunięcie jednego pakietu dla serwerów Linux Ubuntu i RHEL/CentOS.
--- - hosts: ubuntu gather_facts: no tasks: - name: Install lsof utility apt: pkg: lsof state: latest sudo: yes - name: Remove ARP Scan utility apt: pkg: arp-scan state: absent sudo: yes --- - hosts: centos gather_facts: no tasks: - name: Install lsof utility yum: pkg: lsof state: latest sudo: yes - name: Remove ARP Scan utility yum: pkg: arp-scan state: absent sudo: yes
Zarządzanie użytkownikami
Użytkownicy i grupy tworzą podstawową strukturę, wokół której systemy oparte na systemach Unix/Linux zarządzają dostępem i uprawnieniami. W dużej organizacji zarządzanie użytkownikami i grupami może być dużym wyzwaniem pomimo automatyzacji wspierającej środowisko.
Dzięki Ansible administrator systemu ma doskonałe narzędzie do tworzenia, modyfikowania i usuwania użytkowników i grup z różnymi możliwościami obsługiwanymi w systemie operacyjnym.
Oto prosty przykład, który pokazuje tworzenie i usuwanie użytkowników i grup za pomocą Ansible. Po uruchomieniu tego podręcznika, serwery docelowe będą miały utworzone grupy A i B z podanymi identyfikatorami GID, podczas gdy użytkownik 1 zostanie usunięty, jeśli jest obecny. Nowy użytkownik bez powłoki zostanie utworzony jako użytkownik2 z podanym UID, przypisanymi grupami i zablokowanym hasłem.
--- - hosts: all gather_facts: no become: yes tasks: - group: gid: 12310 name: groupA state: present - group: gid: 12311 name: groupB state: present - user: name: user1 state: absent - user: name: user2 uid: 12427 shell: /bin/false password_lock: yes groups: groupA, groupB
Zarządzanie usługami
Usługi to demony procesów, które działają w tle i obsługują niektóre usługi, takie jak sshd zapewniające łączność SSH itp. Za pomocą Ansible możesz zarządzać usługami systemowymi i użytkownikami, takimi jak uruchamianie, zatrzymywanie i ponowne ich uruchamianie. Oto przykładowy podręcznik, który pokazuje, że:
--- - hosts: all gather_facts: no become: yes tasks: - name: Restart ssh daemon service: name: ssh state: restarted - name: Restart sssd daemon service: name: sssd state: stopped - name: Restart httpd daemon service: name: httpd state: started
W powyższym przykładzie usługa SSH zostanie ponownie uruchomiona podczas zatrzymywania usługi SSSD. Demon httpd jest uruchamiany pod koniec. Ponieważ Ansible jest idempotentny, każda usługa, która jest już uruchomiona lub zatrzymana, nie zostanie zmieniona podczas ponownego uruchamiania, zawsze zmienia stan usługi. Pamiętaj, aby sprawdzić nazwę usługi, ponieważ różne dystrybucje Linuksa używają innych nazw, nawet dla tej samej usługi, takiej jak ssh i sshd.
Podsumowanie 👨💻
Ansible ułatwia życie administratorowi systemu, umożliwiając wykonywanie powtarzających się i czasochłonnych zadań w sposób zautomatyzowany oraz redukując ludzkie błędy i wysiłek. Co więcej, umożliwi przechowywanie danych konfiguracyjnych w centralnym repozytorium kodu, takim jak Git, umożliwiając wielu użytkownikom współpracę i przeglądanie każdego działania.
Aby dowiedzieć się więcej o Ansible i jego obszernym zestawie modułów, zapoznaj się z jego dokumentacja.