- Devem ser criadas tasks para todas as operações possíveis.
- As tasks devem ser idempotentes (seguras para múltiplas execuções).
- Buscar sempre seguir as Ansible Best Practices
O código foi testado no Mint 21.3 Cinnamon.
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:
- Instale o Mint em um novo computador:
- Faça login com o usuário criado;
- É recomendado realizar a atualização do sistema operacional antes de configurar a ET;
- Certifique-se de que o serviço SSH esteja funcionando e que você consiga acessar este computador por SSH com o usuário criado;
- Certifique-se de que o IP deste computador esteja cadastrado no DNS.
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çãoinventory/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 DNS
-
Adicione 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á paraet2
, a conexão usará o IP informado emansible_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)- Opcionalmente, você também pode utilizar o parâmetro
--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çãoall.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.