git pre-commit
In my ansible inventory I have files with passwords them, and I use ansible-vault to protect it.
The issue is when I accidentally commit a non-vaulted file.
The solution is to add pre-commit hooks in git. There are two solutions; one is to have a separate repo for hooks, and the other is to have is a part of the repo to use pre-commit. We go for the second solution.
In this example, we use the directory .git-hooks under version control. The dvelopper will need to issue git config core.hooksPath .git-hooks or create symlinks after cloning.
Quick guide
Assumptions
- We only look at password files
- Password files are called
passwords.yml -
Vault secret is located in a file called
vault-password.Which is either in
.gitignorefile or in a different directory, so we don’t accidentally add it to the repo.
The process
- Create a file called
.git-hooks/pre-commit, with the following content
-
make it executable:
chmod +x .git-hooks/pre-commit. -
set the repo to use hooks from the new location:
git config core.hooksPath .git-hooks
Updates 2020-07-01: pre-commit hook updates for speed.