Ansible

Gerenciar repositórios de pacotes e PPAs do Ubuntu usando Ansible

Gerenciar repositórios de pacotes e PPAs do Ubuntu usando Ansible
Adicionar e remover repositórios de pacotes e PPAs no Ubuntu em seu sistema pessoal pode ser uma tarefa muito simples. No entanto, se você tiver muitas máquinas Ubuntu, digamos, 10 ou mais, adicionar e remover manualmente os repositórios de pacotes e PPAs em cada sistema, um por um, será demorado e ineficiente.

The Ansible apt_repository módulo pode ser usado para adicionar e remover repositórios de pacotes e PPAs em seus hosts Ubuntu com facilidade. Você também pode atualizar o cache do repositório de pacotes APT usando o Ansible apt_repository módulo.

Este artigo mostrará como gerenciar os repositórios de pacotes e PPAs do Ubuntu usando o Ansible apt_repository módulo. Então vamos começar.

Pré-requisitos

Se você quiser experimentar os exemplos incluídos neste artigo:

1) Você deve ter o Ansible instalado em seu computador.
2) Você deve ter um host Ubuntu configurado para automação Ansible.

Existem muitos artigos sobre LinuxHint dedicados à instalação do Ansible e configuração de hosts para automação do Ansible. Você pode verificar esses artigos se precisar de informações adicionais.

Configurando o diretório do projeto

Antes de começarmos, será uma boa ideia criar uma estrutura de diretório do projeto, apenas para manter as coisas um pouco mais organizadas.

Para criar o diretório do projeto apt-ppa-repo / e todos os subdiretórios necessários (em seu diretório de trabalho atual), execute o seguinte comando:

$ mkdir -pv apt-ppa-repo / playbooks

Depois que o diretório do projeto for criado, navegue até o diretório do projeto, da seguinte maneira:

$ cd apt-ppa-repo

Criar uma hospedeiros arquivo de inventário, como segue:

hosts $ nano

Adicione o IP do host ou o nome DNS (vm7.nodekite.com e vm8.nodekite.com, no meu caso) de seus hosts Ubuntu no arquivo de inventário.

Quando terminar, salve o arquivo pressionando + X, seguido pela Y e .

Crie um arquivo de configuração Ansible no diretório do projeto, da seguinte maneira:

$ nano ansible.cfg

Digite as seguintes linhas no ansible.cfg Arquivo:

[padrões]
inventário = hosts
host_key_checking = False

Quando terminar, salve o arquivo pressionando + X, seguido pela Y e .

Neste ponto, o diretório do projeto deve se parecer com o seguinte:

$ tree

Como você pode ver, os hosts Ansible são acessíveis. Então, podemos passar para a próxima seção deste artigo.

$ ansible all -u ansible -m ping

Adicionando Repositórios de Pacotes

Nesta seção, vou mostrar como adicionar um repositório de pacotes no Ubuntu usando o Ansible.

Primeiro, crie um novo manual chamado add_repo.yaml no manuais / diretório, da seguinte forma:

$ nano playbooks / add_repo.yaml

Digite as seguintes linhas no add_repo.yaml Arquivo:

- hosts: todos
usuário: ansible
tornar verdade
tarefas:
- nome: Certifique-se de que o repositório do universo esteja habilitado
apt_repository:
repo: deb http: // archive.ubuntu.com / universo focal ubuntu
estado: presente
update_cache: True

Quando terminar, salve o arquivo pressionando + X, seguido pela Y e .

Aqui o repo opção do apt_repository módulo é usado para especificar a linha de repositório de pacotes APT (no meu caso, deb http: // arquivo.ubuntu.com / ubuntu focal universe) do repositório de pacotes que você deseja adicionar (no meu caso, o Ubuntu 20.04 LTS oficial universo repositório).

Para saber mais sobre o formato da linha do repositório de pacotes APT, leia o Arquivos de configuração do repositório de pacotes do Ubuntu seção do artigo Como usar o gerenciador de pacotes APT no Ubuntu 20.04 LTS.

Como estou adicionando um novo repositório de pacotes aqui, o Estado é presente.

O update_cache opção pode ser Verdadeiro/sim ou Falso/não.

Se o update_cache está configurado para Verdadeiro, O Ansible irá atualizar o cache do repositório de pacotes APT após adicionar o repositório de pacotes.

Se o update_cache está configurado para Falso, O Ansible não atualizará o cache do repositório de pacotes APT.

Aqui, eu quero que o repositório de pacotes APT seja atualizado assim que o novo repositório de pacotes for adicionado. Então, eu defino o update_cache para Verdadeiro.

Agora, execute o add_repo.yaml manual, como segue:

$ ansible-playbook playbooks / add_repo.yaml

Como você pode ver, o manual foi executado com sucesso.

Para confirmar que o repositório de pacotes (no meu caso, o Ubuntu 20.04 LTS universo repositório) for adicionado, execute o seguinte comando:

$ grep --color -R 'http: // arquivo.ubuntu.com '/ etc / apt / sources.Lista
/ etc / apt / sources.Lista.d / *.Lista

Como você pode ver, um novo arquivo foi criado no / etc / apt / sources.Lista.d / diretório (1) e o Ubuntu 20.04 LTS universo repositório de pacotes foi adicionado (2).

Por padrão, o Ansible irá gerar automaticamente o a .Lista arquivo no / etc / apt / sources.Lista.d / diretório, dependendo da linha de repositório APT.

Se você deseja escolher um nome de arquivo específico (i.e. universo ubuntu.Lista) para o seu repositório, você pode especificar um nome de arquivo usando o nome do arquivo opção do apt_repository módulo em seu add_repo.yaml manual, conforme mostrado na imagem abaixo.

Agora, execute o add_repo.yaml playbook novamente.

$ ansible-playbook playbooks / add_repo.yaml

Como você pode ver, o nome do arquivo é o mesmo que eu especifiquei.

$ grep --color -R 'http: // arquivo.ubuntu.com '/ etc / apt / sources.Lista
/ etc / apt / sources.Lista.d / *.Lista

Removendo Repositórios de Pacotes

Nesta seção, vou mostrar como remover um repositório de pacotes existente de seus hosts Ubuntu usando Ansible.

O manual para remover um repositório de pacotes é quase o mesmo que adicionar um repositório de pacotes. Então, você pode apenas copiar o add_repo.yaml arquivo de manual e modificá-lo um pouco. Isso é muito simples de fazer.

Primeiro, copie o add_repo.yaml arquivo para remove_repo.yaml, do seguinte modo:

$ cp -v playbooks / add_repo.yaml playbooks / remove_repo.yaml

Edite o remove_repo.yaml manual, como segue:

$ nano playbooks / remove_repo.yaml

Mudar estado: presente para estado: ausente, como marcado na imagem abaixo. Esta será a única mudança que você precisa fazer.

Quando terminar, salve o arquivo pressionando + X, seguido pela Y e .

Execute o remove_repo.yaml manual, como segue:

$ ansible-playbook playbooks / remove_repo.yaml

Em seguida, execute o seguinte comando para verificar se o repositório de pacotes que você deseja remover foi realmente removido.

$ grep --color -R 'http: // arquivo.ubuntu.com '/ etc / apt / sources.Lista
/ etc / apt / sources.Lista.d / *.Lista

Como você pode ver, o Ubuntu 20.04 LTS oficial universo o repositório de pacotes que adicionei anteriormente foi removido.

NOTA: Ignore a mensagem de erro. Esta mensagem significa apenas que o / etc / apt / sources.Lista.d / diretório está vazio. Se você deseja remover a mensagem de erro, basta adicionar um 2> / dev / null no final do comando, da seguinte forma. O erro deve desaparecer após completar este comando.

$ grep --color -R 'http: // arquivo.ubuntu.com '/ etc / apt / sources.Lista
/ etc / apt / sources.Lista.d / *.lista 2> / dev / null

Adicionando PPAs

Nesta seção, vou mostrar como adicionar um PPA em seus hosts Ubuntu usando Ansible.

Vou adicionar o osomon / nodejs-10.19 focal Nó.js 10.19 PPA para Ubuntu 20.04 LTS no meu exemplo.

Primeiro, crie um novo manual add_ppa.yaml, do seguinte modo:

$ nano playbooks / add_ppa.yaml

Adicione as seguintes linhas em seu add_ppa.yaml livro de cantadas:

- hosts: todos
usuário: ansible
tornar verdade
tarefas:
- nome: Adicionar Nó.js 10.19 PPA
apt_repository:
repo: ppa: osomon / nodejs-10.19 focal
estado: presente
update_cache: True
validate_certs: False

Quando terminar, salve o add_ppa.yaml manual pressionando + X, seguido pela Y e .

Aqui o repo opção do apt_repository módulo é usado para adicionar o PPA osomon / nodejs-10.19 focal (1).

Certifique-se de adicionar ppa: antes do nome do PPA, eu.e. ppa: osomon / nodejs-10.19 focal.

A maioria dos PPAs usa certificados autoassinados, portanto, o Ansible não pode verificá-los para você e eles podem apresentar erros ao executar o manual.

Você pode definir validate_certs para Falso para pular a validação do certificado para o PPA que você está adicionando (2). Isso é o que eu fiz no exemplo deste artigo.

NOTA: Você também pode definir validate_certs para Falso pular a validação de certificação ao adicionar repositórios de pacotes de terceiros.

Execute o add_ppa.yaml manual, como segue:

$ ansible-playbook playbooks / add_ppa.yaml

Como você pode ver, um novo .Lista arquivo para o PPA osomon / nodejs-10.19 focal foi criado no / etc / apt / sources.Lista.d / diretório (1).

Olhando para o conteúdo do ppa_osomon_nodejs_10_19_focal_focal.Lista arquivo, posso confirmar que o PPA foi adicionado (2).

$ tree / etc / apt / sources.Lista.d /
$ cat / etc / apt / sources.Lista.d / ppa_osomon_nodejs_10_19_focal_xenial.Lista

Removendo PPAs

Você pode remover os PPAs da mesma forma que removemos os repositórios de pacotes na seção anterior deste artigo.

Basta copiar o app_ppa.yaml manual para remove_ppa.yaml, do seguinte modo:

$ cp -v playbooks / add_repo.yaml playbooks / remove_repo.yaml

Agora, abra o remove_ppa.yaml manual, como segue:

$ nano playbooks / remove_ppa.yaml

Em seguida, mude a linha estado: presente para estado: ausente, como marcado na imagem abaixo.

Quando terminar, salve o remove_ppa.yaml manual pressionando + X, seguido pela Y e .

Execute o remove_ppa.yaml manual, como segue:

$ ansible-playbook playbooks / add_ppa.yaml

Como você pode ver, o ppa_osomon_nodejs_10_19_focal_focal.Lista arquivo para o osomon / nodejs-10.19 focal PPA não está mais disponível no / etc / apt / sources.Lista.d / diretório. Então, o PPA osomon / nodejs-10.19 focal foi removido.

$ tree / etc / apt / sources.Lista.d /

Alterando o Codename PPA

Às vezes, o PPA que você está tentando adicionar ao seu host Ubuntu não suporta a versão do Ubuntu que você está executando. Nesse caso, você terá que especificar o codinome da versão do Ubuntu manualmente ao adicionar o PPA.

Suponha que você esteja executando o Ubuntu 20.04 com codinome focal e você está tentando adicionar o PPA xyz, mas o PPA xyz suporta apenas Ubuntu 16.04 codinome LTS hospitaleiro. Se você tentar adicionar o PPA xyz, você obterá um erro, pois o PPA não possui nenhum pacote para o Ubuntu 20.04 codinome focal. Mas, se você especificar o Ubuntu 16.04 codinome LTS hospitaleiro ao adicionar o PPA, você não receberá nenhum erro. Você pode conseguir instalar o pacote desejado do PPA desta forma, mesmo se ele não suportar a versão explícita do Ubuntu que você está executando no momento.

Vamos ver um exemplo.

Primeiro, copie o add_ppa.yaml arquivo de manual para change_ppa_codename.yaml, do seguinte modo:

$ cp -v playbooks / add_ppa.yaml playbooks / change_ppa_codename.yaml

Em seguida, abra o change_ppa_codename.yaml arquivo, da seguinte forma:

$ nano playbooks / change_ppa_codename.yaml

Aqui, tudo que você precisa fazer é adicionar o nome de código opção com o seu codinome Ubuntu desejado (i.e. codinome: xenial), conforme marcado na imagem abaixo.

Quando terminar, salve o change_ppa_codename.yaml arquivo pressionando + X, seguido pela Y e .

Execute o change_ppa_codename.yaml manual, como segue:

$ ansible-playbook playbooks / change_ppa_codename.yaml

NOTA: Estou recebendo um erro porque o PPA que adicionei aqui só oferece suporte ao Ubuntu 20.04 LTS. Você pode simplesmente ignorar esta mensagem.

Como você pode ver, o PPA foi adicionado e o codinome do Ubuntu hospitaleiro está na linha de repositório de pacotes APT.

Conclusão

Este artigo mostrou como gerenciar (adicionar / remover) repositórios de pacotes Ubuntu e PPAs usando Ansible.

The Ansible apt_repository módulo é usado para gerenciar repositórios de pacotes Ubuntu e PPAs. Este artigo explicou todas as opções importantes do apt_repository módulo de Ansible.

Para obter mais informações, verifique a página oficial de documentação da Ansible apt_repository.

Como instalar o League Of Legends no Ubuntu 14.04
Se você é fã de League of Legends, esta é uma oportunidade para testar o funcionamento de League of Legends. Observe que LOL é suportado no PlayOnLinu...
Instale o último jogo de estratégia OpenRA no Ubuntu Linux
OpenRA é um motor de jogo de estratégia em tempo real Libre / Free que recria os primeiros jogos Westwood como o clássico Command & Conquer: Red Alert...
Instale o emulador Dolphin mais recente para Gamecube e Wii no Linux
O Dolphin Emulator permite que você jogue seus jogos de Gamecube e Wii escolhidos em computadores pessoais Linux (PC). Sendo um emulador de jogo disp...