vagrant-nexus

所属分类:Docker
开发工具:Shell
文件大小:0KB
下载次数:0
上传日期:2023-09-18 02:29:23
上 传 者sh-1993
说明:  使用Vagrant的短实验室设置Nexus docker中心代理,
(Short Lab setup Nexus docker hub proxy using Vagrant,)

文件列表:
imgs/ (0, 2023-09-17)
imgs/acessando_nexus_01.jpg (93749, 2023-09-17)
imgs/acessando_nexus_02.jpg (93316, 2023-09-17)
imgs/acessando_nexus_03.jpg (82526, 2023-09-17)
imgs/acessando_nexus_04.jpg (27146, 2023-09-17)
imgs/acessando_nexus_05.jpg (48729, 2023-09-17)
imgs/acessando_nexus_06.jpg (22377, 2023-09-17)
imgs/configurando_nexus_01.jpg (19964, 2023-09-17)
imgs/configurando_nexus_02.jpg (23212, 2023-09-17)
imgs/configurando_nexus_03.jpg (97245, 2023-09-17)
imgs/configurando_nexus_04.jpg (23489, 2023-09-17)
imgs/configurando_nexus_05.jpg (40169, 2023-09-17)
imgs/configurando_nexus_06.jpg (119133, 2023-09-17)
imgs/configurando_nexus_06a.jpg (26228, 2023-09-17)
imgs/configurando_nexus_06b.jpg (81568, 2023-09-17)
imgs/configurando_nexus_07.jpg (99007, 2023-09-17)
imgs/configurando_nexus_08.jpg (46128, 2023-09-17)
imgs/configurando_nexus_09.jpg (5150, 2023-09-17)
imgs/configurando_nexus_10.jpg (63718, 2023-09-17)
imgs/configurando_nexus_11.jpg (52521, 2023-09-17)
imgs/configurando_nexus_12.jpg (61555, 2023-09-17)
imgs/configurando_nexus_13.jpg (35011, 2023-09-17)
imgs/configurando_nexus_14.jpg (38650, 2023-09-17)
imgs/configurando_nexus_14a.jpg (25321, 2023-09-17)
imgs/configurando_nexus_14b.jpg (11146, 2023-09-17)
imgs/configurando_nexus_14c.jpg (74189, 2023-09-17)
imgs/configurando_nexus_14d.jpg (50945, 2023-09-17)
imgs/configurando_nexus_14e.jpg (46256, 2023-09-17)
imgs/configurando_nexus_14f.jpg (4794, 2023-09-17)
imgs/configurando_nexus_15.jpg (23799, 2023-09-17)
imgs/configurando_nexus_16.jpg (26428, 2023-09-17)
imgs/configurando_nexus_17.jpg (47483, 2023-09-17)
imgs/configurando_nexus_18.jpg (26125, 2023-09-17)
imgs/configurando_nexus_19.jpg (21872, 2023-09-17)
imgs/configurando_nexus_20.jpg (25168, 2023-09-17)
imgs/configurando_nexus_21.jpg (22081, 2023-09-17)
imgs/configurando_nexus_22.jpg (23899, 2023-09-17)
imgs/configurando_nexus_23.jpg (12845, 2023-09-17)
imgs/configurando_nexus_24.jpg (49880, 2023-09-17)
... ...

# README Pequeno laboratório de estudos para aprimorar conhecimentos de Vagrant e estudar a ferramenta Nexus como proxy de imagens para o Docker Hub, entre outros recursos. Foi utilizado o Vagrant com Virtualbox para subir a máquina virtual e foi criado um script para instalar e configurar o Nexus na mesma. ### **Procedimentos** 1. Instalao do Vagrant * Acesse [Download Vagrant](https://developer.hashicorp.com/vagrant/downloads?product_intent=vagrant) e escolha o seu Sistema operacional. Aqui vamos usar o ambiente **Linux** como base. * Para distribuies baseadas em **Debian/Ubuntu**, podemos configurar o repositório com os passos abaixo: ```bash wget -O- https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list sudo apt update && sudo apt install vagrant ``` * Ou você pode baixar o binário da verso que desejar * Após instalar o vagrant, vamos instalar o plugin **vbguest** que traz algumas facilidades. Para isso, execute o comando abaixo: `vagrant plugin install vagrant-vbguest` 2. Inicializar nosso projeto * Crie uma pasta aonde ficaro os arquivos de configurao e inicialize o vagrant nesta pasta: * mkdir ~/lab-nexus * vagrant init (O comando acima apenas cria um arquivo **Vagrantfile** padro dentro da pasta) 3. Criao do Vagrantfile * Agora vamos criar o arquivo para a nossa máquina do Nexus (Você pode editar o arquivo padro gerado pelo vagrant init ou apagar ele e criar um novo). * Crie o arquivo Vagrantfile como mostrado abaixo: ```ruby Vagrant.configure("2") do |config| # imagem a ser usada no setup config.vm.box = "ubuntu/focal64" # hostname da máquina a ser criada config.vm.hostname = "nexus-srv" # configurao do shape da máquina virtual config.vm.provider "virtualbox" do |vb| vb.cpus = "2" vb.memory = "2048" end # configurao do endereo de rede na sub-rede do virtualbox config.vm.network "private_network", ip: "192.168.56.3" # porta usada para acesso ao Nexus Web config.vm.network "forwarded_port", guest: 8081, host: 8081 # porta usada para acesso ao repositório docker local config.vm.network "forwarded_port", guest: 8181, host: 8181 # compartilhamento via NFS - pode ser compartilhado com outras máquinas # config.vm.synced_folder ".", "/vagrant", type: "nfs" # script para configurao do ambiente config.vm.provision "shell", path: "provision.sh" end ``` 4. Criar scripts auxiliares * Com o descritivo da nossa máquina criado, vamos criar os scripts auxiliares que iro fazer o trabalho de instalar e configurar o Nexus * O primeiro script será o **provision.sh**. Ele será o responsável por instalar os pacotes necessários para o Nexus rodar em nosso ambiente. ```bash #!/bin/bash # Ajuste as variáveis abaixo conforme sua necessidade e verso do Nexus que será usada NEXUS_INST_DIR="/opt" NEXUS_INST_FOLDER="nexus" NEXUS_USER="nexus" NEXUS_USER_PWD="n3x02" NEXUS_DWLD_URL="https://download.sonatype.com/nexus/3" NEXUS_INST_FILE="nexus-3.60.0-02-unix.tar.gz" NEXUS_VERSION="nexus-3.60.0-02" NEXUS_INIT_PWD="$NEXUS_INST_DIR/sonatype-work/nexus3/admin.password" #--#--#--#--#--#--#--#--#--#--#--#--#--#--#--#--#--#--#--#--#--#--#--#--#--#--#--#--# ######### Somente mexa nas linhas abaixo se você souber o que está fazendo ########## #--#--#--#--#--#--#--#--#--#--#--#--#--#--#--#--#--#--#--#--#--#--#--#--#--#--#--#--# # roda um update, caso necessário sudo apt-get update # verificar se o nexus já está instalado, caso sim, aborta o processo de instalao # (checagem precisa de melhorias para evitar casos de instalaes quebradas por conta de erros) if [ -d "$NEXUS_INST_DIR/$NEXUS_INST_FOLDER" ]; then echo "Provisionamento ja realizado..." else # instala o JDK - dependencia do nexus sudo apt-get install openjdk-8-jdk --yes sudo apt-get install wget --yes # instala o expect para uso configurar o usuário/senha do nexus sudo apt-get install expect --yes sudo useradd -d $NEXUS_INST_DIR/$NEXUS_INST_FOLDER -s /bin/bash $NEXUS_USER sudo /usr/bin/expect /vagrant/expect-nexus $NEXUS_USER $NEXUS_USER_PWD echo "Baixando pacote do Nexus..." if [ ! -f "/vagrant/$NEXUS_INST_FILE" ]; then wget $NEXUS_DWLD_URL/$NEXUS_INST_FILE -O /vagrant/$NEXUS_INST_FILE fi if [ -f "/vagrant/$NEXUS_INST_FILE" ]; then cd $NEXUS_INST_DIR ; sudo tar xzvf /vagrant/$NEXUS_INST_FILE ; cd - sudo mv $NEXUS_INST_DIR/$NEXUS_VERSION $NEXUS_INST_DIR/$NEXUS_INST_FOLDER sudo cat <> /etc/security/limits.d/$NEXUS_USER.conf $NEXUS_USER - nofile 65536 EOT # ajusta parametros de memória que a JVM para o nexus irá usar sudo sed -i '/\-Xms/c\\-Xms512m' $NEXUS_INST_DIR/$NEXUS_INST_FOLDER/bin/nexus.vmoptions sudo sed -i '/\-Xmx/c\\-Xmx512m' $NEXUS_INST_DIR/$NEXUS_INST_FOLDER/bin/nexus.vmoptions sudo sed -i '/MaxDirectMemorySize/c\-XX:MaxDirectMemorySize=512m' $NEXUS_INST_DIR/$NEXUS_INST_FOLDER/bin/nexus.vmoptions # ajusta o usuário em arquivo de conf do nexus sudo echo "run_as_user=\"$NEXUS_USER\"" > /opt/nexus/bin/nexus.rc # ajusta a permisso dos diretórios dop nexus sudo chown -R $NEXUS_USER:$NEXUS_USER $NEXUS_INST_DIR/$NEXUS_INST_FOLDER $NEXUS_INST_DIR/sonatype-work # cria o arquivo para gerenciar o start/stop do servio via systemd sudo cat <> /etc/systemd/system/nexus.service [Unit] Description=nexus service After=network.target [Service] Type=forking LimitNOFILE=65536 ExecStart=$NEXUS_INST_DIR/$NEXUS_INST_FOLDER/bin/nexus start ExecStop=$NEXUS_INST_DIR/$NEXUS_INST_FOLDER/bin/nexus stop User=$NEXUS_USER Restart=on-abort TimeoutSec=600 [Install] WantedBy=multi-user.target EOT # carrega, habilita e ativa o servio do nexus via systemd sudo systemctl daemon-reload sudo systemctl enable nexus.service sudo systemctl start nexus.service # Finalizao echo "Instalao finalizada. Aguardando finalizar processo de inicializao..." sleep 10 echo "Instalao finalizada. Status dos servios:" echo "===========================================" sudo systemctl status nexus.service echo "===========================================" echo "Caso a saída acima apresente erro, reuna o máximo de informaes" echo "(cópia de logs, prints de tela dos erros, cópia do seus arquivos de config)" echo "e entre contato com o autor em ftvieira@pobox.com" cat<:8081 Ex.: http://192.168.0.10:8081 Para usar o repositório em cache com o docker cli (linha de comando): Ex.: docker pull 192.168.0.10:8181/ubuntu docker run --rm -it 10.0.2.60:8181/debian /bin/bash EOT else echo "Problema no download do pacote do Nexus!" fi fi ``` * O segundo script é um auxiliar para o primeiro script. Ele faz uso do **expect** para atribuir a senha ao usuário criado sem que o usuário precise digitar a senha de forma interativa. * Crie o arquivo **expect-nexus** com o conteúdo abaixo: ```bash #!/usr/bin/expect spawn passwd [lindex $argv 0] set senha [lindex $argv 1] expect "ssword:" send "$senha\r" expect "ssword:" send "$senha\r" expect eof ``` 5. Acessando o Nexus e configurando o docker proxy * Usando as instrues dadas no final do processo de instalao da máquina, acesse a interface do Nexus: * Tela do Nexus no primeiro acesso. Clique em Sign in no canto superior direito ![My Image](imgs/acessando_nexus_01.jpg) * No pop-up que aparecer, você deve informar o usuário e senha para o primeiro acesso (use as informaes coletadas durante o processo de instalao) ![My Image](imgs/acessando_nexus_02.jpg) * Ao clicar em Sign in no pop-up, o wizard de configurao inicial iniciará para troca de senha e alguns ajustes básicos. Basta seguir as orientaes das imagens. ![My Image](imgs/acessando_nexus_03.jpg) ![My Image](imgs/acessando_nexus_04.jpg) ![My Image](imgs/acessando_nexus_05.jpg) ![My Image](imgs/acessando_nexus_06.jpg) * Agora vamos para a configurao clicando na engrenagem próxima ao campo de pesquisa no topo da tela. ![My Image](imgs/configurando_nexus_01.jpg) * Primeiro vamos configurar a área de armazenagem para o nosso proxy. Como aqui é apenas um lab,vamos usar a mesma área já existente, apenas criando um novo apontamento. Para um ambiente produtivo a recomendao seria colocar estar área em uma partio, disco ou mesmo storage. ![My Image](imgs/configurando_nexus_02.jpg) * Clique no boto Create Blob Store ![My Image](imgs/configurando_nexus_03.jpg) * Na caixa de seleo escolha a opo File e depois clique em Save ![My Image](imgs/acessando_nexus_04.jpg) * Ao selecionar o tipo, as demais opes sero exibidas. Ajuste como na imagem e clique em Save. (nesta tela poderia ser configurada uma outra área para armazenar o cache, como em ambientes de produo por exemplo). ![My Image](imgs/acessando_nexus_05.jpg) ![My Image](imgs/acessando_nexus_06.jpg) * preciso também configurar o Docker Bearer Token. Para isso, no menu do lado esquerdo, vá em Security -> Realms, como mostrado abaixo: ![My Image](imgs/configurando_nexus_06a.jpg) * No lado esquerdo, clique no símbolo de **+** que está no item Docker Bearer Token. Ao fazer isso, ele passará para a caixa da direita. Para finalizar, clique em Save. ![My Image](imgs/configurando_nexus_06b.jpg) * No menu a esquerda, clique em Repositories e depois em Create repository. ![My Image](imgs/configurando_nexus_07.jpg) * Na tela que abre escolha a Recipe (Receita) ***docker (proxy)*** ![My Image](imgs/configurando_nexus_08.jpg) * Configure os dados do repositório como nas imagens abaixo ![My Image](imgs/configurando_nexus_10.jpg) ![My Image](imgs/configurando_nexus_11.jpg) * Selecione o Blob Storage que criamos anteriormente ![My Image](imgs/configurando_nexus_12.jpg) ![My Image](imgs/configurando_nexus_13.jpg) * Para finalizar, clique no boto Create repository ![My Image](imgs/configurando_nexus_14.jpg) * Agora precisamos criar uma Role para o acesso ao repositório. Afinal no podemos dar acesso de admin para todos que precisarem utilizar o repositório. Basta seguir os passos abaixo: * No menu a esquerda, selecione Roles ![My Image](imgs/configurando_nexus_14a.jpg) * Depois clique no boto Create role ![My Image](imgs/configurando_nexus_14b.jpg) * Preencha os campos indicados. O ***Type*** será **Nexus Role**. Os demais campos podem ter os nomes que desejar. ![My Image](imgs/configurando_nexus_14c.jpg) * Na parte de Privileges, no lado esquerdo, coloque o filtro com o nome do repositório criado. No nosso caso, foi docker-proxy. ![My Image](imgs/configurando_nexus_14d.jpg) * Procure na lista o privilégio adequado, conforme a imagem e clique no sinal de **+** para jogá-lo para a janela da direita. ![My Image](imgs/configurando_nexus_14e.jpg) * Para finalizar, vai para o final da página e clique no boto Save. ![My Image](imgs/configurando_nexus_14f.jpg) * Com a Role criada, vamos criar nosso usuário (vamos criar um usuário genérico, mas podem ser criados mais usuários, dependendo das necessidades do ambiente) * No menu do lado esquerdo, selecione Users, como mostrado na imagem ![My Image](imgs/configurando_nexus_15.jpg) * Selecione Create local user ![My Image](imgs/configurando_nexus_16.jpg) * Siga as orientaes das imagens abaixo e preencha os campos necessários para a criao do usuário no Nexus. ![My Image](imgs/configurando_nexus_17.jpg) * Associe a role que foi criada com o usuário. Caso seu ambiente já possua um servidor Nexus,podem existir muitas roles e, neste caso, você deverá pesquisar a role criada para o repositório. Clique no **>** para mover a role para a janela da direita. Para finalizar, clique em Create local user. ![My Image](imgs/configurando_nexus_18.jpg) ![My Image](imgs/configurando_nexus_19.jpg) 6. Configurando e testando o docker cli com nosso repositório (Linux) * Para fazer com que o docker cli no Linux possa usar nosso cache e no o Docker Hub diretamente, devemos fazer uma pequena configurao. * Devemos editar ou criar o arquivo ***/etc/docker/daemon.json***, como mostrado abaixo: ```json { "insecure-registries": [":8181"], "registry-mirrors": ["http://:8181"] } ``` * Após editar ou criar este arquivo, o daemon do docker deve ser reiniciado. No nosso laboratório a máquina cliente roda o Ubuntu 20.04, logo o comando será: ```bash sudo systemctl restart docker ``` * Para confirmar que as configuraes foram reconhecidas, execute o comando: ```bash docker info ``` * Nas informaes geradas deverá ter um trecho semelhante a este: ```bash Insecure Registries: 192.168.1.129:8181 127.0.0.0/8 Registry Mirrors: http://192.168.1.129:8181/ ``` * Agora podemos testar nosso repositório. Para isso, teremos que nos autenticar, pois no deixamos o repositório com acesso annimo. Para isso, vamos executar: ```bash docker login -u dockerlogin 192.168.1.129:8181 ``` * Será pedida a senha que definimos para o usuário e a resposta deverá ser algo semelhante a isso: ![My Image](imgs/configurando_nexus_20.jpg) * Após fazer o login, podemos comear a usar nosso repositório. * Vamos comear simplesmente baixando a imagem do ubuntu: ```bash docker pull 192.168.1.129:8181/ubuntu ``` * Deverá produzir uma saída semelhante a esta: ![My Image](imgs/configurando_nexus_21.jpg) * Para validar que o download da imagem foi realizado pelo nosso cache e que uma cópia da mesma está disponível, vamos ver no Nexus se a imagem do ubuntu está mesmo lá. * Para isso, vamos na interface e clicamos na opo Browse. ![My Image](imgs/configurando_nexus_22.jpg) * No menu a esquerda, selecione Browse ![My Image](imgs/configurando_nexus_23.jpg) * Na tela que se abre, selecionamos o nosso repositório ![My Image](imgs/configurando_nexus_24.jpg) * Será exibida uma estrutura similar a mostrada abaixo ![My Image](imgs/configurando_nexus_25.jpg) * Se clicarmos nos botes de **+** ao lado das pastas, veremos a estrutura mostrando que a imagem do ubuntu agora está no nosso cache local ![My Image](imgs/configurando_nexus_26.jpg)

近期下载者

相关文件


收藏者