I see in the pillar documentation that there are two ways to reference pillar data in an SLS.
{{ pillar['foo'] }}
and
{{ salt['pillar.get']('foo') }}
The pillar.get method handles nested pillar data better and allows to specify a default if the data isn't found in the pillar. But it's a bit more typing and I find the first method easier to read.
So, is it considered best practice to always use the pillar.get method or is using the pillar['foo'] acceptable, especially when dealing with non-nested pillar data.
I suspect always using the pillar.get method is best since it make sense to use it when dealing with nested pillar data or you want to set a default. And it's best to just you one method consistently. But I wanted to get other people's thoughts.
I agree that the shorter syntax looks nicer.
In states that I build, I tend to use the {{ pillar['foo'] }}
syntax when I'm referencing a value that ABSOLUTELY must be there for my state to work correctly. In that case, I do want a failure to happen.
Then with other values where I need to traverse nested data, or if I want to use a default value, I use the longer syntax.
In the end, it's mostly personal preference. None of them is more correct than another.