O código foi testado no Mint 21.3 Cinnamon.
$$ \color{red}\Large{\textsf{LEIA\ ATENTAMENTE\ TODO\ O\ GUIA\ ANTES\ DE\ EXECUTAR\ OS\ COMANDOS}} $$
A configuração da Estação de Trabalho em uma máquina é realizada de forma remota, por SSH. Para rodar este código, você precisa configurar a sua estação de trabalho, instalando os pacotes necessários listados a seguir.
Procedimento:
A configuração da estação é realizada de forma remota por SSH com o Ansible. Configure o seu computador:
Para começar, instale o Ansible de acordo com a documentação oficial (sugerimos fazer a instalação usando o pip):
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python3 get-pip.py --user
python3 -m pip install --user ansible
Instale as dependências da role:
python3 -m pip install --user passlib
Para acessar o computador remoto, será necessário o sshpass
:
sudo apt install -y sshpass
Baixe o código do repositório
via git
ou baixando o zip.
Utilize o arquivo all.yml.example
como exemplo para criar um novo arquivo de configuração inventory/group_vars/all.yml
,
de acordo com o necessário. As variáveis são:
estacao_suporte_user
: usuário local para suporteestacao_suporte_pass
: senha do usuário suporteestacao_root_pass
: senha do usuário rootestacao_vnc_pass
: senha do login remoto (VNC)estacao_dtic_group
: grupo do AD que irá gerenciar as estaçõesestacao_dtic_network
: CIDR da rede que irá gerenciar as estaçõesestacao_ad_ip_addresses
: lista de endereços IP do servidor ADestacao_ad_domain
: dominio do ADestacao_ad_join_user
: nome do usuário de join (apenas para permitir a
configuração, não ficará hard-coded na ET)estacao_ad_join_pass
: password de usuário de join (apenas para permitir a
configuração, não ficará hard-coded na ET)estacao_s3fs_bucket_name
: nome do aws s3 bucket para o mountestacao_s3fs_access_key
: access key para acesso ao bucket de mountestacao_s3fs_secret_access_key
: secret access key para acesso ao bucket de mountestacao_s3fs_endpoint
: OPCIONAL, região do bucketestacao_mnt_suporte
: OPCIONAL, ponto de montagem localestacao_ad_fallback_ips
: OPCIONAL, lista de IPs para fallback de DNSAdicione o nome ou o endereço IP do computador onde será configurada a estação no inventário. Você poderá aplicar a configuração em mais de um computador ao mesmo tempo, configurando os hosts no inventário. Por exemplo, para aplicar em dois computadores ao mesmo tempo, um utilizando o nome DNS e o outro utilizando seu endereço IP, configure o inventário como a seguir:
---
all:
hosts:
pc-dtic-199:
et2:
ansible_host: 10.0.199.200
Neste exemplo, a conexão com o host pc-dtic-199
usará o IP obtido via DNS.
Já para et2
, a conexão usará o IP informado em ansible_host
. Se você
informar o IP, o nome utilizado no host não importa (et2
, no exemplo).
Para mais informações sobre como configurar o inventário, leia a documentação.
Verifique se é possível alcançar a(s) máquina(s) via ansible (veja parâmetros adicionais no próximo item):
ansible all -m ping -i inventory/inventory.yml
ansible pc-dtic-199 -m ping -i inventory/inventory.yml
ansible et2 -m ping -u suporte -k -i inventory/inventory.yml
Para aplicar o playbook, você utilizará o usuário/senha utilizados na instalação do Mint no novo computador (definido aqui). Aplique o playbook com o comando:
ansible-playbook -u suporte -Kk playbook.yml -i inventory/inventory.yml --diff
-u
: Usuário criado no novo computador a ser configurado-K
: Solicita a senha para sudo-k
: Solicita a senha para ssh-i
: Inventário a ser utilizado--diff
: Mostra o resultado de cada operação (opcional)--check
para apenas
verificar o que será feito, sem alterar nada efetivamente (modo dry-run).O playbook deve terminar sem erros.
Reinicie a nova estação de trabalho e faça login com seu usuário do domínio.
Clone este repositório para sua máquina
mkdir ~/workspace
cd ~/workspace/
git clone git@github.com:CMCuritiba/Estacao-Trabalho-CMC.git
Instale o Ansible, Molecule e Vagrant:
Instale o Ansible o sshpass
;
Instale o Vagrant de acordo com a documentação oficial.
Atenção: se o seu sistema operacional for o Linux Mint, durante a
instalação certifique-se de utilizar a versão base do ubuntu no
source list do vagrant a ser criado. O comando lsb_release -cs
retorna
a versão do Mint e não irá funcionar para a instalação do vagrant. A
versão base do seu Mint pode ser verificada nos arquivos:
/etc/apt/sources.list.d/official-package-repositories.list
/etc/upstream-release/lsb-release
Instale o Molecule e seus plugins, de acordo com a documentação oficial:
# Antes de instalar, crie e ative um virtualenv
$ cd ~/workspace/
$ python3 -m venv molecule
$ source ~/workspace/molecule/bin/activate
# Instale o molecule e os plugins
(molecule) $ pip install molecule
(molecule) $ pip install "molecule-plugins[vagrant]"
# Por alguma razão o molecule se perde ao buscar os módulos instalados:
(molecule) $ pip install ansible
# Instale as dependências da role:
(molecule) $ pip install passlib
Opcionalmente, ative o commitlint e o commitzen no repositório:
Instale npm e node
;
Na pasta do repositório, rode:
cd ~/workspace/Estacao-Trabalho-CMC/
npm install
Esta configuração não é obrigatória, mas fortemente recomendada;
O commitzen não integra com o VS Code, para uso no editor considere instalar uma extensão.
É possível utilizar o Molecule para automatizar testes com o Vagrant para testes locais.
sudo apt install virtualbox virtualbox-dkms virtualbox-ext-pack virtualbox-qt
Utilize o arquivo all.yml.example
como exemplo para criar um novo arquivo de configuração all.yml
, de acordo
com o necessário;
Teste o converge:
cd ~/workspace/Estacao-Trabalho-CMC/roles/estacao/
$ source ~/workspace/molecule/bin/activate
(molecule) $ molecule converge -- --diff
Se for necessário testar apenas tasks específicas, é possível ser utilizar o
parâmetro --tags "tag-desejada"
informando as tags definidas na role.
Para, por exemplo, aplicar apenas as tasks relacionadas ao DNS:
(molecule) $ molecule converge -- --tags "dns" --diff
O molecule criará, por meio do Vagrant, uma instância no VirtualBox utilizando a versão do Mint especificada no molecule e aplicará a role automaticamente na VM.
A primeira execução irá demorar um pouco porque será necessário baixar a imagem do Mint (~3,5 GB).
Para testar com outras versões do Mint ou outros sistemas operacionais, basta alterar ou adicionar instâncias no molecule.
Caso seja necessário realizar os testes manualmente sem utilizar o Molecule, é possível utilizar apenas o Vagrant para os testes locais.
Instale o VirtualBox e o Vagrant, como descrito acima.
Utilize o Vagrantfile na raiz do repositório para subir uma VM do Mint:
vagrant up
Acesse a VM (com o usuário vagrant
):
vagrant ssh
Já dentro da VM, baixe o fonte (neste exemplo, do branch develop) e execute o código:
wget https://github.com/CMCuritiba/Estacao-Trabalho-CMC/archive/refs/heads/develop.zip
unzip develop.zip
cd Estacao-Trabalho-CMC-develop/
sudo apt update
sudo apt install pip -y
pip install --user ansible
source ~/.profile # Necessário apenas na primeira vez
nano inventory/group_vars/all.yml # Edite de acordo com o necessário
sed -i 's/et1/localhost/g' playbook.yml
ansible-playbook --diff playbook.yml -i inventory/inventory.yml
Depois de executadas as tasks, de volta no seu computador, você pode dar SSH na VM usuário suporte
ou com seu
usuário do AD:
# Para descobrir a porta para conexão:
vagrant ssh-config
# Para acessar a VM:
ssh -p 2222 suporte@localhost
# ou
ssh -p 2222 nome.sobrenome@localhost
Toda contribuição é bem vinda!
Para ajudar-nos a manter o bom trabalho, por favor leia nossas diretrizes e código de conduta.