Um Charme é mais parecido com um Módulo de Marionete ou uma Receita Chefe. Charms, Modules e Recipes são mecanismos de orquestração que são diferentes do gerenciamento de pacotes. A orquestração envolve a instalação e o gerenciamento dos recursos instalados. O software de orquestração pode configurar dinamicamente o software instalado personalizado para o usuário. Pode gerenciar essa configuração ao longo do tempo também. Tomemos por exemplo um certificado da web. Certificados expiram depois de algum tempo. O software de orquestração pode instalar o certificado. Quando o certificado precisa ser substituído, o software de orquestração pode gerenciar a atualização (automaticamente).
É minha opinião pessoal que o Puppet é o melhor software de orquestração. É o mais antigo, tem o maior apoio, é o Free Source, tem uma grande comunidade, tem uma enorme quantidade de documentação, tem sua própria linguagem de programação, está ativamente desenvolvendo e evoluindo. A última versão do fantoche tem tipos definidos !!!
Eu sei que se pode escrever um código de marionetes para criar um charme, mas você está perdendo os outros benefícios de administrar um sistema de fantoches. Ao usar o fantoche, é melhor aproveitar o servidor fantoche para gerenciar todo o ciclo de vida do software e dos sistemas.
Eu não estou muito familiarizado com os charms, mas acho que eles não gerenciam recursos do sistema como o Puppet. O importante é o gerenciamento de mudanças. Ou seja, o fantoche garante que os recursos que ele conhece estejam no estado correto. Ou seja, se um admin ssh estiver na caixa e alterar manualmente um arquivo de configuração (talvez ele esteja depurando), o fantoche irá reverter as alterações de volta para o que está especificado no código do fantoche. Eu não acho que os charms tenham essa capacidade. Por favor, corrija-me se estiver errado.