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!