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
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
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: todosusuá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
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.yamlComo 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
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: todosusuá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
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
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
Execute o change_ppa_codename.yaml manual, como segue:
$ ansible-playbook playbooks / change_ppa_codename.yamlNOTA: 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.