Tive um problema bem chato durante um teste de ambiente enquanto trabalhava com recursos exportados do Puppet, que foi causado por uma única violação de constante.
$ puppet agent -t ... Error: Could not retrieve catalog from remote server: Error 400 on SERVER: Failed to submit 'replace facts' command for $::fqdn to PuppetDB at $::puppetmaster:8081: [404 Not Found] Problem accessing /v3/commands. Reason: Not Found ... Warning: Not using cache on failed catalog Error: Could not retrieve catalog; skipping run
Nos logs do PuppetDB, era possível ver sinais de violação no banco de dados.
... org.hsqldb.HsqlException: error in script file line: 9621 org.hsqldb.HsqlException: integrity constraint violation: unique constraint or index violation; SYS_PK_10029 table: RESOURCE_PARAMS ...
Como era um ambiente de testes e eu não queria debugar tudo isso, considerei mais fácil apenas remover todos os dados do armazenamento built-in do PuppetDB e começar tudo de novo, pensando que isso fosse provavelmente causado por um user-error no meu lado.
Para limpar todos os dados do seu PuppetDB, siga os passos abaixo. Isso vai fazer o PuppetDB parar, remover o diretório de dados e reiniciar o PuppetDB para que ele possa reconstruir a estrutura de dados.
$ service puppetdb stop $ cd /var/lib/puppetdb $ mv db db.old $ service puppetdb start
Depois de reiniciar, os logs do seu PuppetDB vão conter os seguintes tipos de entrada
INFO [c.p.p.s.migrate] Applying database migration version 1 INFO [c.p.p.s.migrate] Applying database migration version 2 INFO [c.p.p.s.migrate] Applying database migration version 3 ... INFO [c.p.p.c.services] Starting broker
Ao final, as estruturas do seu diretório ficarão similar a isto.
$ ls -alh /var/lib/puppetdb/ drwxr-xr-x 6 puppetdb puppetdb 4.0K Jan 29 09:01 . drwxr-xr-x. 30 root root 4.0K Jul 2 2014 .. lrwxrwxrwx 1 puppetdb puppetdb 20 Jan 14 13:05 config -> /etc/puppetdb/conf.d drwxr-xr-x 3 puppetdb puppetdb 4.0K Jan 29 09:03 db drwxr-xr-x 3 puppetdb puppetdb 4.0K Jan 29 09:01 db.old drwxr-xr-x 3 puppetdb puppetdb 4.0K Oct 21 20:38 mq drwxr-xr-x 2 puppetdb puppetdb 4.0K Oct 21 20:38 state
O db.old pode ser removido se você não precisar dele, ou colocá-lo de volta no lugar para debugar qualquer problema que você teve no início.
***
Mattias Geniar faz parte do time de colunistas internacionais do iMasters. A tradução do artigo é feita pela redação iMasters, com autorização do autor, e você pode acompanhar o artigo em inglês no link: http://ma.ttias.be/clearing-data-puppetdb-exported-resources/