Отговорни

Лесно инсталиране на няколко пакета на CentOS с помощта на Ansible

Лесно инсталиране на няколко пакета на CentOS с помощта на Ansible
На Ansible можете да използвате dnf или ням модул за инсталиране на софтуерни пакети на CentOS или RHEL хостове. По подразбиране тези модули инсталират само един софтуерен пакет. Можете да използвате dnf или ням модул няколко пъти във вашата Ansible playbook, за да инсталирате толкова софтуерни пакети, колкото искате. Въпреки това, това не е най-ефективният начин за това, тъй като ще има много повторения на кода, които бихме искали да избегнем, ако е възможно. За щастие можем да използваме цикли, за да инсталираме лесно толкова софтуерни пакети, колкото искаме, без никакво повторение на кода.

Тази статия ще ви покаже как да инсталирате множество софтуерни пакети на CentOS / RHEL хостове с помощта на Ansible loop. И така, нека започнем.

Предпоставки

Ако искате да изпробвате примерите в тази статия,
1) Трябва да имате инсталиран Ansible на вашия компютър.
2) Трябва да имате поне CentOS / RHEL 7 или 8 хост, конфигуриран за Ansible автоматизация.

В LinuxHint има много статии, посветени на Инсталиране на Ansible и конфигуриране на хостове за Ansible автоматизация. Можете да ги проверите, ако е необходимо.

Създаване на директория на проекти

Преди да продължим по-нататък, ще създадем директория на проекти, само за да поддържаме нещата малко организирани.

За да създадете директория на проекта centos-pkg / и всички необходими поддиректории (в текущата работна директория), изпълнете следната команда:

$ mkdir -pv centos-pkg / playbooks

След като директорията на проекта е създадена, отидете до директорията на проекта, както следва:

$ cd centos-pkg /

След това създайте a домакини инвентарен файл, както следва:

$ nano домакини

Добавете IP или DNS име на хоста (vm3.нодеките.com, в моя случай) на вашите CentOS / RHEL хостове във файла с инвентара (по един хост на ред).

След като приключите, запазете файла, като натиснете + х, следван от Y и .

Създайте конфигурационен файл Ansible ансибъл.cfg в директорията на вашия проект, както следва:

$ nano ansible.cfg

След това въведете следните редове в ансибъл.cfg файл.

[по подразбиране]
инвентар = хостове
host_key_checking = Невярно

След като приключите, запазете ансибъл.cfg файл, като натиснете + х, следван от Y и .

Опитайте да пингнете всички хостове CentOS / RHEL, които сте добавили във вашия домакини инвентарен файл, както следва:

$ ansible all -u ansible -m ping

Както можете да видите, моят CentOS 8 хост е достъпен.

Инсталиране на единичен софтуерен пакет

Този раздел ще ви покаже как да инсталирате отделен софтуерен пакет с помощта на dnf или ням модул на Ansible на вашите CentOS / RHEL хостове.

Първо създайте новата книга за игри install_package.ямъл в книги за игри / директория, както следва:

$ nano playbooks / install_package.ямъл

След това въведете следните редове в install_package.ямъл файл.

- домакини: всички
потребител: ansible
стана: Вярно
задачи:
- име: Инсталирайте httpd пакет
dnf:
име: httpd
състояние: присъства
update_cache: Вярно

След като приключите, запазете файла, като натиснете + х, следван от Y и .

Тук добавих само една задача, Инсталирайте httpd пакета. Целта на тази задача е да инсталирате httpd пакет на CentOS / RHEL 8.

CentOS / RHEL 7 не използва dnf пакет мениджър, той използва ням мениджър на пакети. Така че, ако използвате CentOS / RHEL 7, променете dnf да се ням, както е отбелязано на екранната снимка по-долу. Не се изискват други промени.

The име Опцията се използва за съобщаване на dnf или ням модул името на пакета, който се опитвате да инсталирате. В този случай това ще бъде httpd пакет.

The държава Опцията се използва за съобщаване на dnf или ням модулирайте действието (i.д. инсталирайте, надстройте, премахнете) трябва да поеме дадения пакет. В този случай действието е присъства.

Поддържаните стойности на държава опция са:

присъства - ще инсталира пакета, ако вече не е инсталиран.

последен - ще инсталира пакета, ако вече не е инсталиран; ако вече е инсталиран, модулът ще проверява за актуализации; ако е налична актуализирана версия на пакета, той ще инсталира новата версия.

отсъстващ - ще премахне пакета, ако е инсталиран.

Ако update_cache опцията е зададена на Вярно, кешът на хранилището на DNF / YUM ще бъде актуализиран преди инсталирането на пакета.

Стартирайте install_package.ямъл playbook, както следва:

$ ansible-playbook playbooks / install_package.ямъл

Както можете да видите, книгата за игри install_package.ямъл работи успешно.

Както можете да видите, httpd пакет е инсталиран на моя CentOS 8 хост, който съм добавил на моя домакини инвентарен файл.

$ sudo dnf списък е инсталиран | grep httpd

Ако сте на CentOS / RHEL 7, използвайте ням пакет мениджър вместо dnf пакет мениджър, за да провери дали пакетът е инсталиран.

$ sudo yum списък е инсталиран | grep httpd

Инсталиране на множество софтуерни пакети с помощта на цикъл with_items

Предишният раздел на тази статия ви показа как да инсталирате отделен софтуерен пакет на вашия CentOS / RHEL хост с помощта на Ansible dnf/ням модул. Този раздел ще ви покаже как да инсталирате множество софтуерни пакети на вашите CentOS / RHEL хостове с помощта на Ansible with_items цикъл.

Първо създайте новата книга за игри install_packages.ямъл, както следва:

$ nano playbooks / install_packages.ямъл

Въведете следните редове в install_packages.ямъл файл.

- домакини: всички
потребител: ansible
стана: Вярно
задачи:
- name: Инсталирайте всички пакети
dnf:
name: 'item'
състояние: присъства
update_cache: Вярно
with_items:
httpd
php
vsftpd

След като приключите, натиснете + х, следван от Y и , за да запазите install_packages.ямъл файл.

Тук съм дефинирал имената на пакетите (httpd, php, vsftpd), които искам да инсталирам с помощта with_items цикъл.

Замених името на пакета с променливата вещ. The вещ променливата ще бъде актуализирана с името на пакета във всяка итерация.

Стартирайте install_packages.ямъл playbook, както следва:

$ ansible-playbook playbooks / install_packages.ямъл

Както можете да видите, книгата за игри install_packages.ямъл работи успешно.

The httpd, php, и vsftpd пакетите са инсталирани на моя хост CentOS 8, както можете да видите на екранната снимка по-долу.

$ sudo dnf списък е инсталиран | grep httpd
$ sudo dnf списък е инсталиран | grep php
$ sudo dnf списък е инсталиран | grep vsftpd

Инсталиране на множество софтуерни пакети с помощта на цикъл Loop

Започвайки от Ansible 2.5, препоръчителният начин да използвате цикли във вашата книга за игри е като използвате цикъл ключова дума, вместо with_items ключова дума. Ето защо видяхте предупредително съобщение, когато стартирах install_packages.ямъл playbook в по-ранния раздел на тази статия.

Работа с цикли с помощта на цикъл ключовата дума е много лесна.

Първо отворете книгата с игри install_packages.ямъл (от предишния пример), както следва:

$ nano playbooks / install_packages.ямъл

В install_packages.ямъл playbook, просто заменете термина with_items с термина цикъл, както е отбелязано на екранната снимка по-долу. Не е нужно да променяте нищо друго.

След като приключите, натиснете + х, следван от Y и , за да запазите install_packages.ямъл файл.

Стартирайте install_packages.ямъл playbook, както следва:

$ ansible-playbook playbooks / install_packages.ямъл

Както можете да видите, задачата Инсталирайте всички пакети управлява dnf/ням модул общо три пъти; веднъж за всеки цикъл вещ.

The httpd, php, и vsftpd пакетите са инсталирани на моя хост CentOS 8, както можете да видите на екранната снимка по-долу.

$ sudo dnf списък е инсталиран | grep httpd
$ sudo dnf списък е инсталиран | grep php
$ sudo dnf списък е инсталиран | grep vsftpd

Инсталиране на множество софтуерни пакети с помощта на Array Syntax

По-ранните раздели на тази статия ви показаха как да използвате with_items и цикъл цикли в Ansible за инсталиране на множество софтуерни пакети на CentOS / RHEL 7 или 8, без повторение на кода. Този раздел ще ви покаже как да направите същото с по-опростен синтаксис на масива.

Първо отворете install_packages.ямъл playbook, както следва:

$ nano playbooks / install_packages.ямъл

Премахни with_items или цикъл раздел от задачата и променете име опция за ['httpd', 'php', vsftpd '], както е отбелязано на екранната снимка по-долу.

След като приключите, натиснете + х, следван от Y и , за да запазите install_packages.ямъл книга за игри.

Тук всеки цитиран низ в квадратните скоби ([]) е елемент от масив (името на софтуерния пакет, в моя случай). Всеки елемент на масив трябва да бъде разделен със запетая (,). Можете да добавите толкова елементи от масив, колкото искате. Добавил съм само три елемента, httpd, php, и vsftpd.

Стартирайте install_packages.ямъл playbook, както следва:

$ ansible-playbook playbooks / install_packages.ямъл

Както можете да видите, софтуерните пакети httpd, php, и vsftpd са инсталирани на моя хост CentOS 8.

$ sudo dnf списък е инсталиран | grep httpd
$ sudo dnf списък е инсталиран | grep php
$ sudo dnf списък е инсталиран | grep vsftpd

Заключение

Тази статия ви показа как да използвате with_items и цикъл цикли, както и синтаксиса на Array, с Ansible ням/dnf модул за инсталиране на множество софтуерни пакети на вашите CentOS / RHEL 7 или 8 хостове.

За повече информация проверете официалната документация на Ansible.

[1] Официална документация на Ansible цикли
[2] Официална документация на Ansible with_items
[3] Официална документация на Ansible dnf модула
[4] Официална документация на модула Ansible yum

Как да изтеглите и пуснете Civilization VI на Сид Майер на Linux
Въведение в играта Civilization 6 е модерен поглед върху класическата концепция, въведена в поредицата от игрите Age of Empires. Идеята беше доста про...
Как да инсталирате и играете Doom на Linux
Въведение в Doom Серията Doom възниква през 90-те години след пускането на оригиналния Doom. Това беше незабавен хит и от този момент нататък серията ...
Vulkan за потребители на Linux
С всяко ново поколение графични карти виждаме, че разработчиците на игри преместват границите на графичната вярност и се приближават една крачка до фо...