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

Gerencie repositórios de pacotes do Ubuntu e PPAs 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 repositórios de pacotes e PPAs em cada sistema um por um será o tempo que consome tempo e ineficiente.

O Ansible apt_repository O módulo pode ser usado para adicionar e remover repositórios de pacotes e PPAs em seus hosts do 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 repositórios de pacotes do Ubuntu e PPAs 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 configurando hosts para Ansible Automation. 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 de projeto, apenas para manter as coisas um pouco mais organizadas.

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

$ mkdir -pv apt-pppa-repo/playbooks

Depois que o diretório do projeto for criado, navegue até o diretório do projeto, como segue:

$ CD APT-PPA-REPO

Criar uma anfitriões Arquivo de inventário, como segue:

$ nano hosts

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

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

Crie um arquivo de configuração Ansible no diretório do projeto, como segue:

$ Nano Ansible.cfg

Digite as seguintes linhas no Ansible.cfg arquivo:

[Padrões]
inventário = hosts
host_key_checking = false

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

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

$ árvore

Como você pode ver, os anfitriões 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, mostrarei como adicionar um repositório de pacotes no Ubuntu usando Ansible.

Primeiro, crie um novo manual chamado add_repo.Yaml no Playbooks/ Diretório, como segue:

$ nano Playbooks/add_repo.Yaml

Digite as seguintes linhas no add_repo.Yaml arquivo:

- Hosts: todos
Usuário: Ansible
tornar verdade
tarefas:
- Nome: Verifique se o repositório do universo está ativado
apt_repository:
Repo: Deb http: // Arquivo.Ubuntu.universo focal com/ubuntu
Estado: presente
update_cache: true

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

Aqui o repo opção do apt_repository O módulo é usado para especificar a linha de repositório de pacotes apt (no meu caso, Deb http: // arquivamento.Ubuntu.universo focal com/ubuntu) 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 de repositório de pacote apt, leia o Arquivos de configuração do repositório de pacotes ubuntu Seção do artigo Como usar o APT Package Manager no Ubuntu 20.04 LTS.

Enquanto estou adicionando um novo repositório de pacotes aqui, o estado é presente.

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

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

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

Aqui, quero que o repositório do pacote 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 correu com sucesso.

Para confirmar que o repositório do pacote (no meu caso, o Ubuntu 20.04 LTS universo repositório) é adicionado, execute o seguinte comando:

$ grep -cor -r 'http: // arquivamento.Ubuntu.com '/etc/apt/fontes.lista
/etc/apt/fontes.lista.d/*.lista

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

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

Se você deseja escolher um nome de arquivo específico (i.e. Ubuntu-universo.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 Playbook, conforme mostrado na captura de tela abaixo.

Agora, execute o add_repo.Yaml Manual novamente.

$ Ansible-Playbook Playbooks/add_repo.Yaml

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

$ grep -cor -r 'http: // arquivamento.Ubuntu.com '/etc/apt/fontes.lista
/etc/apt/fontes.lista.d/*.lista

Remoção de repositórios de pacotes

Nesta seção, mostrarei como remover um repositório de pacotes existente de seus hosts do 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 simplesmente copiar o add_repo.Yaml Arquivo de Playbook e modifique 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.Playbooks YAML/Remone_repo.Yaml

Editar o remove_repo.Yaml Manual, como segue:

$ Nano Playbooks/Remone_repo.Yaml

Mudar Estado: presente para estado: ausente, conforme marcado na captura de tela abaixo. Esta será a única mudança que você precisa fazer.

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

Execute o remove_repo.Yaml Manual, como segue:

$ Ansible-Playbook Playbooks/Remow_repo.Yaml

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

$ grep -cor -r 'http: // arquivamento.Ubuntu.com '/etc/apt/fontes.lista
/etc/apt/fontes.lista.d/*.lista

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

OBSERVAÇÃO: Ignore a mensagem de erro. Esta mensagem significa apenas que o /etc/apt/fontes.lista.d/ diretório está vazio. Se você deseja remover a mensagem de erro, basta adicionar um 2>/dev/nulo No final do comando, como segue. O erro deve desaparecer depois de atrair este comando.

$ grep -cor -r 'http: // arquivamento.Ubuntu.com '/etc/apt/fontes.lista
/etc/apt/fontes.lista.d/*.Lista 2>/dev/null

Adicionando PPAs

Nesta seção, mostrarei como adicionar um PPA em seus hosts do 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

Depois de terminar, salve o add_ppa.Yaml Playbook pressionando + X, seguido pela Y e .

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

Certifique -se de adicionar PPA: Antes do nome da PPA, eu.e. PPA: Osomon/Nodejs-10.19-focal.

A maioria dos PPAs usa certificados autoassinados, para que o Ansible não possa verificá-los para você, e eles podem errar quando você executa 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.

OBSERVAÇÃO: Você também pode definir validate_certs para Falso Para pular a validação da certificação ao adicionar repositórios de pacote 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/fontes.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).

$ árvore/etc/apt/fontes.lista.d/
$ cat/etc/apt/fontes.lista.d/ppa_osomon_nodejs_10_19_focal_xenial.lista

Remoção de PPAs

Você pode remover PPAs da mesma maneira que removemos 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.Playbooks YAML/Remone_repo.Yaml

Agora, abra o remove_ppa.Yaml Manual, como segue:

$ Nano Playbooks/Remone_ppa.Yaml

Em seguida, mude a linha Estado: presente para estado: ausente, conforme marcado na captura de tela abaixo.

Depois de terminar, salve o remove_ppa.Yaml Playbook 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 O PPA não está mais disponível no /etc/apt/fontes.lista.d/ diretório. Então, o PPA Osomon/NodeJS-10.19-focal foi removido.

$ árvore/etc/apt/fontes.lista.d/

Alteração do codinome 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 Somente suporta o Ubuntu 16.04 LTS Codename acolhedor. Se você tentar adicionar o PPA XYZ, Você receberá um erro, pois o PPA não tem nenhum pacote para o Ubuntu 20.04 CodEname focal. Mas, se você especificar o Ubuntu 16.04 LTS Codename acolhedor Ao adicionar o PPA, você não receberá nenhum erro. Você poderá instalar o pacote desejado do PPA dessa maneira, mesmo que não suportem 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.Playbooks YAML/Change_ppa_codename.Yaml

Em seguida, abra o Change_ppa_codename.Yaml arquivo, como segue:

$ Nano Playbooks/Change_ppa_codename.Yaml

Aqui, tudo que você precisa fazer é adicionar o nome de código opção com o codinome ubuntu desejado (eu.e. Codinome: Xenial), conforme marcado na captura de tela abaixo.

Depois de 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

OBSERVAÇÃO: Estou recebendo um erro porque o PPA que adicionei aqui suporta apenas o Ubuntu 20.04 LTS. Você pode simplesmente ignorar esta mensagem.

Como você pode ver, o PPA foi adicionado e o codinome ubuntu acolhedor está na linha de repositório de pacote APT.

Conclusão

Este artigo mostrou como gerenciar (Adicionar/Remover) Repositórios de Pacote Ubuntu e PPAs usando Ansible.

O Ansible apt_repository O módulo é usado para gerenciar repositórios de pacotes do 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 de documentação do oficial Apt_repository Ansible.