You've installed [Puppet, CFEngine, or any new technology] but your co-workers don't "get it". They continue to do things the old way. They resist. You can't figure out why because obviously [new technology] is better.
Three things: 1. Be a success. People want to copy success. 2. Make it extremely easy for people to get started. Document the "getting started" guide. Work through a really easy example from beginning (set up your PATH, etc) to end (testing). Keep it simple so it is clear. Write another document that covers advanced features, the ones you left out of the first doc because you were keeping it simple. 3. Expose good starter projects. You have a list of new features you'd like to add in your head where nobody can see them. Put each idea into a bug database, and mark which ones are easy "starter projects". If you do all the easy projects, there won't be any starter projects for others. Instead, create bugids instead of code. Blaze the trail by writing the major skeleton but leave behind a trail of easy projects for others to pick up.
People don't give good feedback in front of each other. Sit down one-on-one with someone and ask them what's wrong. Deal with their concerns. "Seek to understand before you seek to be understood."
We often don't want to micromanage others or think it is rude to tell them what to do. However, when someone is new at something they want to be told what to do. Imagine if on your first day at work nobody told you what your job was. You would be wondering, "hey? why isn't anyone talking with me? Why are they so unfriendly?!" The truth is that when we are just learning something we need to be told what to do. It is comforting to be told what to do. Once we get the hang of things we don't want to be told what to do, but that could be hours, days, or months into the project.
How do we tell people what to do? We write "getting started" docs, we offer to sit with the person through their first time doing something. We let them do the typing, but tell them what to type.