Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Sugestão] Script de configuração automática não funciona da maneira que está apresentado

O script ansible.sh que é colocado no user_data do launch template não funciona da forma como é apresentado na aula e no conteúdo escrito https://cursos.alura.com.br/course/infraestrutura-codigo-infraestrutura-elastica-aws/task/99417

Foi preciso adicionar o #!/bin/bash no início do arquivo para que funcionasse

Documentação da AWS: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html

1 resposta
solução!

Olá, Carlos!

Agradeço por compartilhar sua observação e a solução que você encontrou. Realmente, o script shell (.sh) precisa de um interpretador para ser executado, e essa informação é fornecida na primeira linha do script com o shebang (#!). No caso do bash, usamos #!/bin/bash.

O #!/bin/bash deve ser a primeira linha do script, antes de qualquer comando. Portanto, o script correto seria:

#!/bin/bash
cd /home/ubuntu
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
sudo python3 get-pip.py
sudo python3 -m pip install ansible
tee -a playbook.yml > /dev/null <<EOT
- hosts: localhost
  tasks:
  - name: Instalando o python3, virtualenv
    apt:
      pkg:
      - python3
      - virtualenv
      update_cache: yes
    become: yes
  - name: Git Clone
    ansible.builtin.git:
      repo: https://github.com/guilhermeonrails/clientes-leo-api.git
      dest: /home/ubuntu/tcc
      version: master
      force: yes
  - name: Instalando dependencias com pip
    pip:
      virtualenv: /home/ubuntu/tcc/venv
      requirements: /home/ubuntu/tcc/requirements.txt
  - name: Alterando o hosts do settings
    lineinfile:
      path: /home/ubuntu/tcc/setup/settings.py
      regexp: 'ALLOWED_HOSTS'
      line: 'ALLOWED_HOSTS = ["*"]'
      backrefs: yes
  - name: configurando o banco de dados
    shell: '. /home/ubuntu/tcc/venv/bin/activate; python /home/ubuntu/tcc/manage.py migrate'
  - name: carregando os dados iniciais
    shell: '. /home/ubuntu/tcc/venv/bin/activate; python /home/ubuntu/tcc/manage.py loaddata clientes.json'
  - name: iniciando o servidor
    shell: '. /home/ubuntu/tcc/venv/bin/activate; nohup python /home/ubuntu/tcc/manage.py runserver 0.0.0.0:8000 &'
EOT
ansible-playbook playbook.yml 

Obrigado por apontar este detalhe. Isso mostra o quão atento você está ao curso e contribui para a melhoria do material para todos os estudantes. Espero ter ajudado e bons estudos!