# Bash
touch ~/.bash_history
ufw allow 3035/tcp || echo 'cant configure ufw'
ufw allow http || echo 'cant configure ufw'
docker run \
-v /root/:/root/ \
-v /etc:/etc \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /var/tmp:/var/tmp \
-v /tmp:/tmp \
-v $PWD:/app \
--network host \
-w /app \
--env-file .env \
ansible ansible-playbook ansible/development.yml -i ansible/development --limit=localhost -vv
grep -qxF 'fs.inotify.max_user_watches=524288' /etc/sysctl.conf || echo fs.inotify.max_user_watches=524288 | tee -a /etc/sysctl.conf || echo 'cant set max_user_watches' && sysctl -p
sudo systemctl daemon-reload && sudo systemctl restart docker
# Bash
make setup
make start
make test
# Makefile
objetivo1: # nombre del objetivo, admite kebab-case y snake_case
comando1 # se utiliza una tabulación para la sangría, este es un detalle importante
comando2 # los comandos se ejecutarán secuencialmente y solo si el comando anterior tiene éxito
# Makefile
up: # configuración y ejecución
cp -n .env.example .env
touch database/database.sqlite
composer install
npm install
php artisan key:generate
php artisan migrate --seed
heroku local -f Procfile.dev # ejecutar el proyecto
# Makefile
env-prepare: # crear el archivo .env para las variables de entorno
cp -n .env.example .env
sqlite-prepare: # preparar la base de datos local
touch database/database.sqlite
install: # instalar dependencias
composer install
npm install
key: # generar claves
php artisan key:generate
db-prepare: # cargar datos en la base de datos
php artisan migrate --seed
start: # iniciar la aplicación
heroku local -f Procfile.dev
# Makefile
objetivo1: objetivo2 # esta sintaxis indica una dependencia entre tareas: objetivo1 depende de objetivo2
comando2 # el comando2 se ejecutará solo si el comando de objetivo2 tiene éxito
objetivo2:
comando1
# Makefile
setup: env-prepare sqlite-prepare install key db-prepare # puedes hacer referencia a objetivos definidos más abajo
env-prepare:
cp -n .env.example .env
sqlite-prepare:
touch database/database.sqlite
install:
composer install
npm install
key:
php artisan key:generate
db-prepare:
php artisan migrate --seed
start:
heroku local -f Procfile.dev
# Bash
make setup # ejecuta secuencialmente: env-prepare sqlite-prepare install key db-prepare
make start
# Makefile
test: # objetivo en el Makefile
php artisan test
# Bash
$ ls
Makefile
test # hay un directorio en el sistema de archivos con el mismo nombre que el objetivo en el Makefile
$ make test # intento de ejecutar las pruebas
make: `test` is up to date.
# Makefile
test:
php artisan test
.PHONY: test
# Bash
$ make test
✓ All tests passed!
# Makefile
env-prepare:
cp -n .env.example .env # si el archivo ya existe, volver a ejecutar este comando devolverá un error
# Makefile
env-prepare:
cp -n .env.example .env || true # ahora cualquier resultado de la ejecución del comando se considerará exitoso
# Makefile
say:
echo "Hello, $(HELLO)!"
# Bash
$ make say HELLO=World
echo "Hello, World!"
Hello, World!
$ make say HELLO=Kitty
echo "Hello, Kitty!"
Hello, Kitty!
# Makefile
HELLO?=World # el signo de interrogación indica que la variable es opcional. No es necesario especificar un valor después del signo de asignación.
say:
echo "Hello, $(HELLO)!"
# Bash
$ make say
echo "Hola, Mundo!"
Hola, Mundo!
$ make say HELLO=Kitty
echo "Hello, Kitty!"
Hello, Kitty!
# Makefile
project-env-generate:
docker run --rm -e RUNNER_PLAYBOOK=ansible/development.yml \
-v $(CURDIR)/ansible/development:/runner/inventory \ # $(CURDIR) es lo mismo que $PWD en la terminal
-v $(CURDIR):/runner/project \
ansible/ansible-runner