Отговорни

Управлявайте хранилища на пакети на Ubuntu и PPA с помощта на Ansible

Управлявайте хранилища на пакети на Ubuntu и PPA с помощта на Ansible
Добавянето и премахването на хранилища на пакети и PPA в Ubuntu във вашата лична система може да бъде много проста задача. Ако обаче имате много машини на Ubuntu, да речем 10 или повече, тогава ръчното добавяне и премахване на хранилища на пакети и PPA на всяка система един по един ще се окаже едновременно отнемащо време и неефективност.

Отговорното apt_repository модул може да се използва за добавяне и премахване на хранилища на пакети и PPA на вашите Ubuntu хостове с лекота. Можете също така да актуализирате кеша на хранилището на APT пакета, използвайки Ansible apt_repository модул.

Тази статия ще ви покаже как да управлявате хранилищата на пакети на Ubuntu и PPA с помощта на Ansible apt_repository модул. И така, нека започнем.

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

Ако искате да изпробвате примерите, включени в тази статия:

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

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

Настройване на директория на проекти

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

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

$ mkdir -pv apt-ppa-repo / playbooks

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

$ cd apt-ppa-repo

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

$ nano домакини

Добавете IP или DNS име на хоста (vm7.нодеките.com и vm8.нодеките.com, в моя случай) на вашите Ubuntu хостове във файла с инвентара.

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

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

$ nano ansible.cfg

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

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

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

В този момент директорията на проекта трябва да изглежда по следния начин:

$ дърво

Както можете да видите, Ansible хостовете са достъпни. И така, можем да преминем към следващия раздел на тази статия.

$ ansible all -u ansible -m ping

Добавяне на хранилища на пакети

В този раздел ще ви покажа как да добавите хранилище на пакети в Ubuntu с помощта на Ansible.

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

$ nano playbooks / add_repo.ямъл

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

- домакини: всички
потребител: ansible
стана: Вярно
задачи:
- name: Уверете се, че хранилището на вселената е активирано
apt_repository:
репо: deb http: // archive.ubuntu.com / ubuntu фокусна вселена
състояние: присъства
update_cache: Вярно

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

Ето, репо опция на apt_repository модул се използва за определяне на реда за хранилище на APT пакета (в моя случай, deb http: // архив.ubuntu.com / ubuntu фокусна вселена) на хранилището на пакети, което искате да добавите (в моя случай Ubuntu 20.04 LTS официален вселена хранилище).

За да научите повече за формата на реда за хранилище на APT пакета, прочетете Файлове за конфигуриране на хранилището на пакети на Ubuntu раздел на статията Как да използвам APT Package Manager в Ubuntu 20.04 LTS.

Тъй като добавям ново хранилище на пакети тук, държава е присъства.

The update_cache опция може да бъде Вярно/да или Невярно/не.

Ако update_cache е настроен на Вярно, Ansible ще актуализира кеша на хранилището на APT пакети след добавяне на хранилището на пакета.

Ако update_cache е настроен на Невярно, Ansible няма да актуализира кеша на хранилището на APT пакета.

Тук искам APT хранилището на пакети да бъде актуализирано, след като бъде добавено новото хранилище на пакети. И така, зададох update_cache да се Вярно.

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

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

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

За да потвърдя, че хранилището на пакети (в моя случай Ubuntu 20.04 LTS вселена хранилище), изпълнете следната команда:

$ grep --color -R 'http: // архив.ubuntu.com '/ etc / apt / sources.списък
/ etc / apt / sources.списък.д/*.списък

Както можете да видите, в. Е създаден нов файл / etc / apt / sources.списък.д/ директория (1) и Ubuntu 20.04 LTS вселена добавено е хранилище на пакети (2).

По подразбиране Ansible автоматично ще генерира a .списък файл в / etc / apt / sources.списък.д/ директория, в зависимост от реда на APT хранилището.

Ако искате да изберете конкретно име на файл (i.д. ubuntu-вселена.списък) за вашето хранилище можете да посочите име на файл, като използвате име на файл опция на apt_repository модул във вашия add_repo.ямъл playbook, както е показано на екранната снимка по-долу.

Сега стартирайте add_repo.ямъл игрална книга отново.

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

Както можете да видите, името на файла е същото име, което посочих.

$ grep --color -R 'http: // архив.ubuntu.com '/ etc / apt / sources.списък
/ etc / apt / sources.списък.д/*.списък

Премахване на хранилища на пакети

В този раздел ще ви покажа как да премахнете съществуващо хранилище на пакети от вашите хостове на Ubuntu с помощта на Ansible.

Ръководството за премахване на хранилище на пакети е почти същото като добавянето на хранилище на пакети. Така че, можете просто да копирате add_repo.ямъл playbook файл и го модифицирайте малко. Това е много лесно да се направи.

Първо копирайте add_repo.ямъл файл в премахване_репо.ямъл, както следва:

$ cp -v playbooks / add_repo.yaml playbooks / remove_repo.ямъл

Редактирайте премахване_репо.ямъл playbook, както следва:

$ nano playbooks / remove_repo.ямъл

Промяна състояние: присъства да се състояние: отсъства, както е отбелязано на екранната снимка по-долу. Това ще бъде единствената промяна, която трябва да направите.

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

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

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

След това изпълнете следната команда, за да проверите дали хранилището на пакети, което искате да премахнете, действително е премахнато.

$ grep --color -R 'http: // архив.ubuntu.com '/ etc / apt / sources.списък
/ etc / apt / sources.списък.д/*.списък

Както можете да видите, Ubuntu 20.04 LTS официален вселена хранилището на пакети, което добавих по-рано, беше премахнато.

ЗАБЕЛЕЖКА: Игнорирайте съобщението за грешка. Това съобщение просто означава, че / etc / apt / sources.списък.д/ директория е празна. Ако искате да премахнете съобщението за грешка, просто добавете 2> / dev / null в края на командата, както следва. Грешката трябва да бъде премахната след въвеждане на тази команда.

$ grep --color -R 'http: // архив.ubuntu.com '/ etc / apt / sources.списък
/ etc / apt / sources.списък.д/*.списък 2> / dev / null

Добавяне на PPA

В този раздел ще ви покажа как да добавите PPA на вашите Ubuntu хостове с помощта на Ansible.

Ще добавя osomon / nodejs-10.19-фокусно Възел.js 10.19 PPA за Ubuntu 20.04 LTS в моя пример.

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

$ nano playbooks / add_ppa.ямъл

Добавете следните редове във вашия add_ppa.ямъл книга за игри:

- домакини: всички
потребител: ansible
стана: Вярно
задачи:
- име: Добавяне на възел.js 10.19 ЗОП
apt_repository:
репо: ppa: osomon / nodejs-10.19-фокусно
състояние: присъства
update_cache: Вярно
validate_certs: Невярно

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

Ето, репо опция на apt_repository модул се използва за добавяне на PPA osomon / nodejs-10.19-фокусно (1).

Не забравяйте да добавите ppa: преди името на PPA, т.е.д. ppa: osomon / nodejs-10.19-фокусно.

Повечето от PPA използват самоподписани сертификати, така че Ansible не може да ги провери вместо вас и те могат да излязат от грешка, когато стартирате плейбека.

Можете да зададете validate_certs да се Невярно за да пропуснете валидирането на сертификат за PPA, който добавяте (2). Това направих в примера в тази статия.

ЗАБЕЛЕЖКА: Можете също да зададете validate_certs да се Невярно да пропуснете валидирането на сертифициране при добавяне на хранилища на пакети на трети страни.

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

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

Както можете да видите, нов .списък файл за PPA osomon / nodejs-10.19-фокусно е създаден в / etc / apt / sources.списък.д/ директория (1).

Като разглеждаме съдържанието на ppa_osomon_nodejs_10_19_focal_focal.списък файл, мога да потвърдя, че PPA е добавен (2).

$ дърво / etc / apt / sources.списък.д/
$ cat / etc / apt / sources.списък.d / ppa_osomon_nodejs_10_19_focal_xenial.списък

Премахване на PPA

Можете да премахнете PPA по същия начин, по който премахнахме хранилищата на пакети в по-ранния раздел на тази статия.

Просто копирайте app_ppa.ямъл игрална книга към премахване_ppa.ямъл, както следва:

$ cp -v playbooks / add_repo.yaml playbooks / remove_repo.ямъл

Сега отворете премахване_ppa.ямъл playbook, както следва:

$ nano playbooks / remove_ppa.ямъл

След това сменете реда състояние: присъства да се състояние: отсъства, както е отбелязано на екранната снимка по-долу.

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

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

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

Както можете да видите, ppa_osomon_nodejs_10_19_focal_focal.списък файл за osomon / nodejs-10.19-фокусно PPA вече не е налице в / etc / apt / sources.списък.д/ директория. И така, PPA osomon / nodejs-10.19-фокусно е бил премахнат.

$ дърво / etc / apt / sources.списък.д/

Промяна на PPA кодово име

Понякога PPA, който се опитвате да добавите към вашия хост на Ubuntu, не поддържа версията на Ubuntu, която използвате. В този случай ще трябва да посочите кодовото име на версията на Ubuntu ръчно, докато добавяте PPA.

Да предположим, че използвате Ubuntu 20.04 с кодово име фокусно и се опитвате да добавите PPA xyz, но PPA xyz поддържа само Ubuntu 16.04 LTS кодово име xenial. Ако се опитате да добавите PPA xyz, ще получите грешка, тъй като PPA няма пакет за Ubuntu 20.04 кодово име фокусно. Но ако посочите Ubuntu 16.04 LTS кодово име xenial докато добавяте PPA, няма да получите грешка. Може да успеете да инсталирате желания от вас пакет от PPA по този начин, дори ако той не поддържа изричната версия на Ubuntu, която използвате в момента.

Да видим пример.

Първо копирайте add_ppa.ямъл файл на change_ppa_codename.ямъл, както следва:

$ cp -v playbooks / add_ppa.yaml playbooks / change_ppa_codename.ямъл

След това отворете change_ppa_codename.ямъл файл, както следва:

$ nano playbooks / change_ppa_codename.ямъл

Тук всичко, което трябва да направите, е да добавите кодово име опция с желаното от вас кодово име на Ubuntu (т.е.д. кодово име: xenial), както е отбелязано на екранната снимка по-долу.

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

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

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

ЗАБЕЛЕЖКА: Получавам грешка, защото PPA, който съм добавил тук, поддържа само Ubuntu 20.04 LTS. Можете просто да игнорирате това съобщение.

Както можете да видите, PPA е добавен и кодовото име на Ubuntu xenial е в реда за хранилище на APT пакети.

Заключение

Тази статия ви показа как да управлявате (добавяте / премахвате) хранилища на пакети и PPA на Ubuntu с помощта на Ansible.

Отговорното apt_repository модул се използва за управление на хранилища на пакети на Ubuntu и PPA. Тази статия обясни всички важни опции на apt_repository модул на Ansible.

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

Как да променяте настройките на мишката и тъчпада с помощта на Xinput в Linux
Повечето дистрибуции на Linux се доставят с библиотека “libinput” по подразбиране за обработка на входни събития в системата. Той може да обработва вх...
Пренастройте бутоните на мишката си по различен начин за различен софтуер с X-Mouse Button Control
Може би се нуждаете от инструмент, който може да промени контрола на мишката с всяко приложение, което използвате. Ако случаят е такъв, можете да изпр...
Преглед на безжична мишка на Microsoft Sculpt Touch
Наскоро прочетох за Microsoft Sculpt Touch безжична мишка и реших да я купя. След като го използвах известно време, реших да споделя опита си с него. ...