.aeriscloud.yml =============== ``.aeriscloud.yml`` contains the definition of your project, it is a `YAML`_ file that can be generated by using :ref:`aeris-init`. It contains the following nodes: .. _YAML: http://yaml.org/ .. highlight:: yaml ``project_name`` ---------------- The name of your project, it should match your github repository name. :: project_name: test ``organization`` ---------------- The organization this project belongs to, tells AerisCloud where to get roles/services from. :: organization: my-org ``id`` ------ A unique ID for your project, **you should make sure that you do not have IDs overlapping between projects on the same computer!** :: id: 12 This id is used to generate the IP used by the box, ips are statically generated by ``aeriscloud`` so that NFS file-sharing can be used. ``services`` ------------ This is the list of services that are enabled for your project. You can find the list of services available for your project in the :ref:`env-production` file of your :doc:`../organization`. :: services: - redis - mongodb - nodejs ``boxes`` --------- This is the list of vagrant VMs, with their configuration, most of the time you shouldn't need more than one box per project but it can be useful to test the same project on different environments. :: boxes: - name: centos basebox: "chef/centos-7.0" cpu: 1 ram: 1024 - name: debian basebox: "chef/debian-8.0" cpu: 1 ram: 1024 The ``basebox`` field should either be a basebox from your organization if you have your own boxes, or one from `Atlas`_. .. _Atlas: https://atlas.hashicorp.com/boxes/search?provider=virtualbox ``mounts`` ---------- This can be used to mount additional folders from your local system to the vagrant VM. This is a quite experimental feature and is prone to breaking when trying to share folders between boxes or sharing folders that contain each other (like sharing ``/home`` and ``/home/user``). Folders will be mounted under ``/home/vagrant/{name}``. :: mounts: mylib: ../mylib # becomes /home/vagrant/mylib .vim: ~/.vim ``watch`` --------- The ``watch`` directive affects which files :ref:`aeris-watch` should watch and the command to run on the remote server when they change. :: watch: directories: - lib - src # patterns and ignores are matched on the absolute # file name and as such relative patterns such as # ./www/* will not work patterns: - '*.js' ignores: - '*.sock' - '*/dist/*' - '*/www/*' # the command here will receive a SIGINT on changes # then will be restarted once stopped run: node . ``browse`` ---------- Allows you to defined endpoints that can be used with the :ref:`aeris-browse` command. Running ``aeris browse foo`` will open a browser pointing to the proper path. :: browse: cms: /cms admin: /admin .. _aeriscloud-yml-use_rsync: ``use_rsync`` ------------- **rsync** mode is a special flag that replaces the NFS based filesystem with rsync calls, those synchronization happens only when running commands such as :ref:`aeris-make` or :ref:`aeris-git`. It is incredibly unstable as a feature and should only be used if you own magic charms or a box of four leaved clovers that might help you appease the rsync-gods. :: use_rsync: true See :doc:`../features/rsync` for more details about this feature. .. _aeriscloud-yml-rsync_ignores: ``rsync_ignores`` ----------------- When :ref:`aeriscloud-yml-use_rsync` is enabled, most of the aeris commands will sync your project folder to the running VM, this directive allows you to set folders to be ignored on sync. :: rsync_ignores: - build - data Extra Variables --------------- Any extra variable that is not part of the list above will be passed to as is to your ansible roles, allowing you to manipulate how some of those roles work. :: # have the nodejs role installs the latest version of io.js node_version: iojs