Como automatizar comandos que eu uso com muita frequência no VPS?

1

Eu tenho alguns projetos em VPSs DigitalOcean. Eu implemento partes do código com muita frequência. Quase depois de cada upload eu tenho que fazer vários comandos.

Por exemplo, se eu mudar modelos do Django e adicionar alguns arquivos estáticos:

Eu tenho que conectar através do ssh e:

activate virtualenv
cd to /home/django/project/
python manage.py makemigrations
python manage.py migrate 
python manage.py collectstatic
sudo systemctl daemon-reload
sudo systemctl restart gunicorn
sudo systemctl restart nginx
sudo supervisorctl
restart celery_worker

Claro que não preciso de todos os comandos todas as vezes.

Gostaria de tornar mais confortável trabalhar com esses comandos.

Existe alguma aplicação onde eu possa definir esses comandos e depois escolher entre eles e executar?

A coisa mais próxima que me vem à mente é criar scripts de shell, mas talvez haja uma opção melhor.

Eu uso PyCharm para implantar. Eu verifiquei docs e não encontrei esse recurso, mas talvez haja.

    
por Milano Slesarik 20.07.2017 / 09:10

1 resposta

2
  

A coisa mais próxima que me vem à mente é criar scripts de shell, mas talvez haja uma opção melhor.

     

Existe alguma aplicação onde eu possa definir esses comandos e depois escolher entre eles e executar?

Eu criaria scripts de shells sim. Mas você também pode criar um site hospedado local em que você crie uma página com caixas de seleção e faça com que elas sejam executadas no servidor.

Com relação aos scripts de shell:

Você pode criar scripts de shell bastante elaborados. Dê uma olhada em Como posso criar um select menu em um script de shell? para um método de estilo "menu" usando "diálogo". "tasksel" é um script que é muito chique para a linha de comando e se parece com isso:

Você poderia criar algo assim e fazer com que cada uma dessas tarefas fosse selecionada e depois executada. Ou agrupe seus comandos se eles dependem um do outro (imagino que você precise iniciar o python manage.py o tempo todo e não como comandos separados).

    
por Rinzwind 20.07.2017 / 09:44