O Ansible
irá se comunicar com os servidores remotos através de SSH.
Não precisa de agente instalado nos servidores remotos, mas
para isso será necessário ter instalado o Python nos servidores Workers
gerenciados pelo Control-Node
-
Dentro do diretório Control-Node estão os arquivos de configuração do Ansible e dentro do diretório Workers estão os arquivos de configuração das VM que serão gerenciadas pelo Ansible (Control-Node)
-
A primeira etapa será iniciar o Control-Node para realizar sua configuração de inventário e gerar a chave de confiança. O Passo a passo está no tópico
CONFIGURAÇÃO ANSIBLE
-
Após gerar a hash da chave pública
id_rsa.pub
ela deverá ser adicionada no arquivoworkers_provision.sh
dentro do diretório Workers. -
A segunda etapa será iniciar os Workers.
-
Reinicie o Control-Node ao término das configurações através do comando
vagrant reload --no-provision
-
Acesse a pasta Workers e inicie as outras máquinas virtuais. Quando todas as configurações acima forem finalizadas, acesse o Control-Node e execute os comandos:
# Através desses comandos é possível checar se o ambiente está pronto.
$ ansible -m ping all
$ ssh vagrant@worker_hostname
OBS.:
A configuração inicial de cada servidor (Docker e Jenkins, p.ex.) poderia ser realizada através do próprio VAGRANT, mas
o objetivo AQUI é realizar essa configuração incial através do ANSIBLE.
Com o Ansible, a VM precisa estar desligada para que seja realizado um novo provisionamento. Já com o Ansible
esse provisionamento é realizado com a VM ligada.
Acesse a VM do Ansible e siga as instruções abaixo.
-
Executar o comando
$ ssh-keygen
este comando irá gerar a chave privadaid_rsa
e a chave públicaid_rsa.pub
que estarão no diretório/home/vagrant/.ssh/
junto a authorized_keys. -
Após o comando será solicitado algumas informações, preeencha dessa forma:
- Será solicitado um nome e senha que poderá ser vazio. Apenas pressione o Enter até o final
- Acesse o diretório
/home/vagrant/.ssh
, verifique se o arquivo id_rsa e id_rsa.pub foram criados. Se criou, e execute o comando cat id_rsa.pub
- Copie a hash completa (p.ex. [início da hash]
ssh-rsa AAA...Hqj21 vagrant@ansible
[fim da hash] ), pois ela será adicionada no authorized_keys de cada Worker-Node
-
Agora, FORA da VM acesse o diretório Workers, onde futuramente serão iniciadas as VMs e cole a hash no workers_provision.sh, substituindo onde está escrito
hash
, como no item 6 abaixo. -
Para adicionar a chave pública individualmente precisa copiar e colar a hash dentro do arquivo authorized_keys da máquina virtual desejada. Ou criar um arquivo provision e fazer o reload. Ou simplesmente, copiar e colar o código abaixo no terminal da VM e pressionar Enter.
$ cat << EOT >> /home/vagrant/.ssh/authorized_keys
hash
EOT
- Inventário host do Ansible Control-Node pode ser conferido com o comando
$ cat /etc/hosts
Acrescentar diretamente os IPs e Hostname no arquivo de provisionamento através do EOT
Acrescentar diretamente os IPs e Hostname no arquivo host
- Em
/etc/hosts
será adicionado ao final do arquivo o IP e Hostname de cada servidor. Por exemplo, ao executar o comando$ cat /etc/hosts
certamente a última linha será127.0.1.1 Ansible Ansible
abaixo dela será adicionado os IPs e Hostnames dos Workers. No meu caso:
127.0.1.1 Ansible Ansible
192.168.56.11 Jenkins
192.168.56.12 Docker
Criar um arquivo hosts que sempre será passado com o parâmetro -i nome_do_arquivo sempre que precisar configurar ou acessar outra VM.
p.ex: ansible -i hosts all -k -m ping
. Porém, será adicionado somente os IPs e Hostnames desejados.
A criação de grupos no Inventário Host é a mágica do Ansible, pois ao invés de acessar servidor por servidor, se um grupo com n servidores foi criado será necessário apenas apontar a nova atualização ou configuração para aquele grupo.
Acesse o arquivo hosts dentro do diretório /etc/ansible
. Neste arquivo os grupos serão acrescentados bem no topo, como no exemplo abaixo:
[Ubuntu]
Docker
[RedHat]
Jenkins
[Bancos]
oracle
Redis
[Services]
Jenkins
Docker
[Web]
Nginx
Apache
# No mesmo local também é possível criar um grupo composto de outros grupos, chamados de CHILDREN, como no exemplo abaixo.
# Sempre que quiser atualizar apenas nesses grupos, basta apontar para noDB, neste caso.
[noDB:children]
Services
Web
Quando foi gerada uma chave pública nos passos anteriores para adicionar no Workers
também foi gerada uma chave privada, e será com ela que será realizada a autenticação
do Control-Node com os Worker-Node.
Para configurar a chave pública será necessário acessar o diretório /etc/ansible
,
abrir o arquivo ansible.cfg.
Como root edite o arquivo ansible.cfg
da seguinte maneira:
Com o editor vi é possível mostrar as linhas através do comando :set number
-
Encontre a linha 71
#host_key_checking = False
e descomente. -
Encontre a linha 136
#private_key_file = /path/to/file
, descomente e troque o caminho para o local que foi gerada a chave privada. Provavelmente estará em /home/vagrant
- Em
/home/vagrant
procure o arquivoid_rsa
sem.pub
- Agora, altere aquela linha como o exemplo:
private_key_file = /home/vagrant/.ssh/id_rsa
- Pronto! quando fizer o acesso a partir do control-node para as workers a sua chave privada será passada como parâmetro
-
Baixar a ISO do Windows
-
Criar VM e instalar a ISO
-
Alterar nome da VM para
VagrantPC
ouVagrant
-
Criar usuario e senha vagrant
-
No terminal, navegue até o diretório onde a máquina virtual foi criada.
Obs.:
neste ponto, antes de proseguir para criação daBOX
, pode ser primeiramente configurado o `WinRm' para que as suas outras bases já contenham a configuração para receber os comandos do Ansible. -
Execute o seguinte comando para criar a
Box do Vagrant
:
- Precisa estar com a VM desligada. Caso contrário o comando irá forçar o desligamento.
vagrant package --base nome_da_sua_máquina_virtual
- Isso criará um arquivo package.box no diretório atual.
- Ex.:
vagrant package --base Vagrant
- A exportação da VM é um pouco demorada (Depndendo da configuração do PC).
- Logo após exportar, será realizada a compressão do arquivo que levará um tempo também.
- O Arquivo final terá em média 5GB a 6GB.
- Adicione a box à sua biblioteca do Vagrant:
- Execute o seguinte comando para adicionar a “box” à sua biblioteca do Vagrant:
vagrant box add Win10v22H2x64 package.box
- Isso adicionará a box do Windows 10 à sua biblioteca LOCAL do Vagrant com o nome Win10v22H2x64.
- Crie um Vagrantfile para iniciar a máquina virtual:
vagrant init Win10v22H2x64
- No virtual box, com a imagem do windows
Desligada
:
- Configurações
- Rede
- Adaptador 1 (Deixar somente um adaptador habilitado)
- Placa em Modo Bridge
- Avançado - Modo Promíscuo - Permitir Tudo
- Habilitar "Cabo Conectado"
- Ligar VM Windows
- Acessar Propriedades da Internet
- Protocolo IPv4
- Adicionar IP, Máscara e Gateway de acordo com sua rede local.
- Acessar Central de Rede e Compartilhamento
- Alterar as configurações de compartilhamento avançadas
- Habilitar Descoberta de Rede (Particular e Convidade ou Público)
-
Saiba mais em: https://docs.ansible.com/ansible/latest/collections/ansible/windows/index.html
-
Obs.:
Os passos a seguir podem ser realizados antes de criar a imagem na base do Vagrant.
-
Habilitar no VirtualBox as opções
Bi-direcional
deÁrea de Transferência Compartilhada
eArrastar e Soltar
-
Acesse a VM Windows, abra o PowerShell, caso esteja instalado e execute o comando
$PSVersiontable
, caso a versão seja>=7
será preciso baixar uma nova versão. -
Na VM Windows, acesse o navegador e
realize o download e instalação
da versão atual do PowerShell compatível com seu sistema operacional.