TINA Is Not Arif: A tool for tagging chef cookbooks and their dependencies.

pip install tina==0.6



TINA (TINA Is Not Arif) is a tool for automatically tagging Chef cookbooks and their dependencies. It features proper dependency resolution, checks for clashing version constraints, and offers configurability when tagging.


TINA relies on Berkshelf and the GitPython library. To install Berkshelf:

$ gem install berkshelf

To install GitPython:

$ sudo easy_install gitpython

Using TINA

TINA is only works with Python 2.6 and 2.7. To install TINA:

$ sudo easy_install tina

To use TINA to tag a cookbook, navigate to the cookbook's directory and run tina.

$ tina
Running Berkshelf...
Discovering dependent cookbooks...
Checking for version conflicts...
Resolving dependencies...
1. foo: v2.0.3 => v2.0.4
2. bar: unchanged
3. community_cookbook_1 will be pinned at 1.2.3
4. community_cookbook_2 will be pinned at 3.2.1
To commit these changes, re-run with --commit

TINA gives an overview of how the cookbook, and its dependendent cookbooks, will be tagged. A temporary .tina directory is created in which each repository is cloned. The .tina directory also contains a Tinafile which keeps track of repository metadata between a dry-run and a commit. If the above overview generated by TINA is acceptable, simply run tina --commit to commit the changes. Each repository will be tagged and pushed without making modifications to the master branch.

To have more options during a dry-run (e.g., bumping the major build for a repo, or changing how a community cookbook is pinned), run tina -i and follow the instructions. To see all options, run tina -h.


To run the tests:

$ sudo easy_install nosetests
$ sudo easy_install coverage
$ nosetests --with-coverage


If you get the following when running tina:

ValueError: No JSON object could be decoded

Try downgrading your version of solve:

gem install solve --version 0.8.2
gem uninstall solve (remove version 1.2.0 or anything > 0.8.2)