Well hi there! This repository holds the code and script for the Animated Deployment with Ansistrano course on KnpUniversity.
If you've just downloaded the code, congratulations!
To get it working, follow these steps:
Setup parameters.yml
First, make sure you have an app/config/parameters.yml
file (you should). If you don't, copy app/config/parameters.yml.dist
to get it:
cp app/config/parameters.yml.dist app/config/parameters.yml
Next, look at the configuration and make any adjustments you
need (like database_password
).
Download Composer dependencies
Make sure you have Composer installed and then run:
composer install
You may alternatively need to run php composer.phar install
, depending
on how you installed Composer.
Setup the Database
Again, make sure app/config/parameters.yml
is setup
for your computer. Then, create the database and the
schema!
php bin/console doctrine:database:create
php bin/console doctrine:migrations:migrate
php bin/console hautelook_alice:doctrine:fixtures:load
If you get an error that the database exists, that should
be ok. But if you have problems, completely drop the
database (doctrine:database:drop --force
) and try again.
Build Assets
The assets are built with Webpack Encore. First, make sure you have yarn installed. Then:
yarn
yarn encore dev
Start the built-in web server
You can use Nginx or Apache, but the built-in web server works great:
php bin/console server:run
Now check out the site at http://localhost:8000
For convenience
If you are using PhpStorm you may install and enable the Symfony Plugin via the preferences which provides more auto-completion for Symfony projects.
Have fun!
Ansible dependencies
To manage third-party Ansible roles which are dependencies of our project we use the requirements file. To install all the dependencies use:
$ ansible-galaxy install -r ansible/requirements.yml
Ansible Vault
We use Ansible Vault to hold all the sensitive data private. To edit the vault, execute:
$ ansible-vault edit ./ansible/vars/vault.yml
And enter the correct password. The password from our vault is beefpass
.
For your own vaults you would probably use much stronger passwords and keep them secret.
Create EC2 instance
You can create a new AWS EC2 instance manually in Amazon dashboard or execute our
aws.yml
playbook:
$ ansible-playbook ./ansible/aws.yml -i ./ansible/hosts.ini --ask-vault-pass
You also need to set up your own Amazon credentials in Ansible Vault. See above how to edit the Vault.
Provision the server
To provision your servers with Ansible, execute:
$ ansible-playbook ./ansible/playbook.yml -i ./ansible/hosts.ini -l aws --ask-vault-pass
Where aws
is the host name which you want to provision. Also, you need to set up your
server's public IP address in ansible/hosts.ini
.
Deploy to production
To deploy the project to production with Ansistrano, execute:
$ ansible-playbook ./ansible/deploy.yml -i ./ansible/hosts.ini --ask-vault-pass
And as always, thanks so much for your support and letting us do what we love!
If you have suggestions or questions, please feel free to open an issue or message us.
<3 Your friends at KnpUniversity