Ansible

Управление репозиториями пакетов 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-РЕПО / и все необходимые подкаталоги (в вашем текущем рабочем каталоге), выполните следующую команду:

$ mkdir -pv apt-ppa-repo / плейбуки

После создания каталога проекта перейдите в каталог проекта, как показано ниже:

$ cd apt-ppa-repo

Создать хозяева файл инвентаризации, как показано ниже:

$ nano хосты

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

Как только вы закончите, сохраните файл, нажав + Икс, с последующим Y а также .

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

$ нано доступный.cfg

Введите следующие строки в анзибль.cfg файл:

[по умолчанию]
inventory = hosts
host_key_checking = Ложь

Как только вы закончите, сохраните файл, нажав + Икс, с последующим Y а также .

На этом этапе каталог проекта должен выглядеть следующим образом:

$ tree

Как видите, хосты Ansible доступны. Итак, мы можем перейти к следующему разделу этой статьи.

$ ansible all -u ansible -m пинг

Добавление репозиториев пакетов

В этом разделе я покажу вам, как добавить репозиторий пакетов в Ubuntu с помощью Ansible.

Сначала создайте новую книгу под названием add_repo.ямл в пьесы / каталог, а именно:

$ nano playbooks / add_repo.ямл

Введите следующие строки в add_repo.ямл файл:

- хосты: все
пользователь: ansible
становятся истинными
задачи:
- имя: Убедитесь, что репозиторий юниверса включен
apt_repository:
репо: deb http: // архив.убунту.com / ubuntu центральная вселенная
состояние: настоящее
update_cache: Истина

Как только вы закончите, сохраните файл, нажав + Икс, с последующим Y а также .

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

Чтобы узнать больше о формате строки репозитория пакетов APT, прочтите Файлы конфигурации репозитория пакетов Ubuntu раздел статьи Как использовать диспетчер пакетов APT в Ubuntu 20.04 LTS.

Поскольку я добавляю сюда новый репозиторий пакетов, государственный является настоящее время.

В update_cache вариант может быть Правда/да или же Ложь/нет.

Если update_cache установлен на Правда, Ansible обновит кеш репозитория пакетов APT после добавления репозитория пакетов.

Если update_cache установлен на Ложь, Ansible не обновляет кеш репозитория пакетов APT.

Здесь я хочу, чтобы репозиторий пакетов APT обновлялся после добавления нового репозитория пакетов. Итак, я установил update_cache к Правда.

Теперь запустите add_repo.ямл playbook, как показано ниже:

плейбуки $ ansible-playbook / add_repo.ямл

Как видите, playbook успешно запустился.

Чтобы подтвердить, что репозиторий пакетов (в моем случае Ubuntu 20.04 LTS вселенная репозиторий), выполните следующую команду:

$ grep --color -R 'http: // архив.убунту.com '/ etc / apt / sources.список
/ и т.д. / APT / источники.список.d / *.список

Как видите, в папке / и т.д. / APT / источники.список.d / каталог (1) и Ubuntu 20.04 LTS вселенная добавлен репозиторий пакетов (2).

По умолчанию Ansible автоматически генерирует файл .список файл в / и т.д. / APT / источники.список.d / каталог, в зависимости от строки репозитория APT.

Если вы хотите выбрать конкретное имя файла (i.е. вселенная убунту.список) для вашего репозитория, вы можете указать имя файла, используя имя файла вариант apt_repository модуль в вашем add_repo.ямл playbook, как показано на скриншоте ниже.

Теперь запустите add_repo.ямл playbook снова.

плейбуки $ ansible-playbook / add_repo.ямл

Как видите, имя файла совпадает с именем, которое я указал.

$ grep --color -R 'http: // архив.убунту.com '/ etc / apt / sources.список
/ и т.д. / APT / источники.список.d / *.список

Удаление репозиториев пакетов

В этом разделе я покажу вам, как удалить существующий репозиторий пакетов с ваших хостов Ubuntu с помощью Ansible.

Схема удаления репозитория пакетов почти такая же, как и добавление репозитория пакетов. Итак, вы можете просто скопировать add_repo.ямл playbook файл и немного измените его. Это очень просто сделать.

Сначала скопируйте add_repo.ямл файл в remove_repo.ямл, следующим образом:

$ cp -v плейбуки / add_repo.плейбуки yaml / remove_repo.ямл

Отредактируйте remove_repo.ямл playbook, как показано ниже:

$ nano playbooks / remove_repo.ямл

Изменять состояние: настоящее к состояние: отсутствует, как отмечено на скриншоте ниже. Это единственное изменение, которое вам нужно сделать.

Как только вы закончите, сохраните файл, нажав + Икс, с последующим Y а также .

Запустить remove_repo.ямл playbook, как показано ниже:

$ ansible-playbook плейбуки / remove_repo.ямл

Затем выполните следующую команду, чтобы проверить, действительно ли удален репозиторий пакетов, который вы хотите удалить.

$ grep --color -R 'http: // архив.убунту.com '/ etc / apt / sources.список
/ и т.д. / APT / источники.список.d / *.список

Как видите, Ubuntu 20.04 LTS официальный вселенная репозиторий пакетов, который я добавил ранее, был удален.

ПРИМЕЧАНИЕ: Игнорируйте сообщение об ошибке. Это сообщение просто означает, что / и т.д. / APT / источники.список.d / каталог пуст. Если вы хотите удалить сообщение об ошибке, просто добавьте 2> / dev / null в конце команды, как показано ниже. Ошибка должна исчезнуть после ввода этой команды.

$ grep --color -R 'http: // архив.убунту.com '/ etc / apt / sources.список
/ и т.д. / APT / источники.список.d / *.список 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.ямл playbook:

- хосты: все
пользователь: 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, i.е. ппа: osomon / nodejs-10.19-фокусный.

Большинство PPA используют самозаверяющие сертификаты, поэтому Ansible не может проверить их за вас, и они могут выйти из строя при запуске playbook.

Вы можете установить validate_certs к Ложь чтобы пропустить проверку сертификата для добавляемого PPA (2). Это то, что я сделал в примере в этой статье.

ПРИМЕЧАНИЕ: Вы также можете установить validate_certs к Ложь пропустить проверку сертификата при добавлении сторонних репозиториев пакетов.

Запустить add_ppa.ямл playbook, как показано ниже:

плейбуки $ ansible-playbook / add_ppa.ямл

Как видите, новый .список файл для PPA osomon / nodejs-10.19-фокусный был создан в / и т.д. / APT / источники.список.d / каталог (1).

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

$ tree / etc / apt / sources.список.d /
$ cat / etc / apt / sources.список.d / ppa_osomon_nodejs_10_19_focal_xenial.список

Удаление PPA

Вы можете удалить PPA так же, как мы удаляли репозитории пакетов в предыдущем разделе этой статьи.

Просто скопируйте app_ppa.ямл учебник для remove_ppa.ямл, следующим образом:

$ cp -v плейбуки / add_repo.плейбуки yaml / remove_repo.ямл

Теперь откройте remove_ppa.ямл playbook, как показано ниже:

$ nano playbooks / remove_ppa.ямл

Далее меняем строку состояние: настоящее к состояние: отсутствует, как отмечено на скриншоте ниже.

Как только вы закончите, сохраните remove_ppa.ямл playbook, нажав + Икс, с последующим Y а также .

Запустить remove_ppa.ямл playbook, как показано ниже:

плейбуки $ ansible-playbook / add_ppa.ямл

Как видите, ppa_osomon_nodejs_10_19_focal_focal.список файл для osomon / nodejs-10.19-фокусный PPA больше не доступен в / и т.д. / APT / источники.список.d / каталог. Итак, PPA osomon / nodejs-10.19-фокусный был удален.

$ tree / etc / apt / sources.список.d /

Изменение кодового имени PPA

Иногда PPA, который вы пытаетесь добавить на свой хост Ubuntu, не поддерживает версию Ubuntu, которую вы используете. В этом случае вам нужно будет указать кодовое имя версии Ubuntu вручную при добавлении PPA.

Предположим, вы используете Ubuntu 20.04 с кодовым именем фокус и вы пытаетесь добавить PPA xyz, но PPA xyz поддерживает только Ubuntu 16.04 Кодовое имя LTS ксениал. Если вы попытаетесь добавить PPA xyz, вы получите сообщение об ошибке, так как PPA не имеет пакета для Ubuntu 20.04 кодовое имя фокус. Но если вы укажете Ubuntu 16.04 Кодовое имя LTS ксениал при добавлении PPA вы не получите никаких ошибок. Вы можете таким образом установить желаемый пакет из PPA, даже если он не поддерживает явную версию Ubuntu, которую вы сейчас используете.

Посмотрим на пример.

Сначала скопируйте add_ppa.ямл файл playbook в change_ppa_codename.ямл, следующим образом:

$ cp -v плейбуки / add_ppa.плейбуки yaml / change_ppa_codename.ямл

Затем откройте change_ppa_codename.ямл файл, как показано ниже:

$ nano playbooks / change_ppa_codename.ямл

Здесь все, что вам нужно сделать, это добавить кодовое имя вариант с желаемым кодовым именем Ubuntu (i.е. кодовое имя: xenial), как отмечено на скриншоте ниже.

Как только вы закончите, сохраните change_ppa_codename.ямл файл, нажав + Икс, с последующим Y а также .

Запустить change_ppa_codename.ямл playbook, как показано ниже:

Плейбуки $ ansible-playbook / change_ppa_codename.ямл

ПРИМЕЧАНИЕ: Я получаю сообщение об ошибке, потому что добавленный мной PPA поддерживает только Ubuntu 20.04 LTS. Вы можете просто проигнорировать это сообщение.

Как видите, PPA был добавлен, а кодовое имя Ubuntu ксениал находится в строке репозитория пакетов APT.

Заключение

В этой статье показано, как управлять (добавлять / удалять) репозиториями пакетов Ubuntu и PPA с помощью Ansible.

Ансибл apt_repository модуль используется для управления репозиториями пакетов Ubuntu и PPA. В этой статье описаны все важные параметры apt_repository модуль Ansible.

Для получения дополнительной информации посетите официальную страницу документации Ansible по apt_repository.

Лучшие эмуляторы игровой консоли для Linux
В этой статье будет перечислено популярное программное обеспечение для эмуляции игровых консолей, доступное для Linux. Эмуляция - это уровень совмести...
Лучшие дистрибутивы Linux для игр в 2021 году
Операционная система Linux прошла долгий путь от своего первоначального простого серверного вида. Эта ОС значительно улучшилась за последние годы и те...
Как записать и транслировать игровую сессию в Linux
В прошлом игры считались только хобби, но со временем игровая индустрия увидела огромный рост с точки зрения технологий и количества игроков. Игровая ...