Eu estou no host OSX 10.13.6 executando o VirtualBox 5.2.16 e o vagrant 2.1.2
Estou tentando configurar uma VM com bento/ubuntu-18.04
usando dois provedores:
1) shell inline, para obter fantoche e os módulos necessários no sistema
apt-get install puppet
puppet module install puppetlabs-postgresql
que me dá
/etc/puppet/code/modules
└─┬ puppetlabs-postgresql (v5.7.0)
├── puppetlabs-apt (v4.5.1)
├── puppetlabs-concat (v4.2.1)
└── puppetlabs-stdlib (v4.25.1)
2) o provisionamento de fantoches
config.vm.provision "puppet" do |puppet|
puppet.manifests_path = "vagrant/puppet/manifests/"
puppet.options = ['--verbose', '--hiera_config /vagrant/vagrant/hiera.yaml']
puppet.manifest_file = "test.pp"
end
E, além dos arquivos, este é o meu manifesto mais minimalista que produz o problema:
class testproject {
class { 'postgresql::globals':
version => '9.6',
manage_package_repo => true,
encoding => 'UTF8',
} ->
class { 'postgresql::server':
package_ensure => latest,
ip_mask_allow_all_users => '0.0.0.0/0',
listen_addresses => '*',
} ->
postgresql::server::config_entry { 'max_parallel_workers_per_gather':
value => '2',
}
class { 'postgresql::server::contrib':
package_ensure => latest,
}
postgresql::server::db { 'testdb':
user => 'testdb',
password => postgresql_password('testdb', 'testdb'),
encoding => 'UTF8',
}
apt::source { 'elasticsearch':
location => 'https://artifacts.elastic.co/packages/5.x/apt',
release => 'stable',
repos => 'main',
key => {
id => '46095ACC8548582C1A2699A9D27D666CD88E42B4',
source => '/vagrant/vagrant/puppet/keys/elasticsearch.gpg',
},
include => {
src => false,
},
}
package { 'elasticsearch':
ensure => '5.3.0',
require => Apt::Source['elasticsearch'],
notify => Service['elasticsearch'],
}
service { 'elasticsearch':
ensure => running,
enable => true,
hasstatus => true,
hasrestart => true,
require => Package['elasticsearch'],
}
file { '/etc/elasticsearch/jvm.options':
source => '/vagrant/vagrant/conf/etc-elasticsearch-jvm.options',
owner => root,
group => elasticsearch,
mode => '0660',
require => [
Package['elasticsearch'],
],
notify => Service['elasticsearch'],
}
}
class { testproject: }
Ele instala o postgres e configura um usuário e instala o ElasticSearch 5.3. A questão:
- instale somente postgres = > trabalha
- instale apenas ES = > trabalha
- instale os dois, como no exemplo = > postgres falha, ES funciona
Para mim, parece que o postgres não atualiza o cache do apt-get e, portanto, não "vê" o pacote e falha.
Eu executei um provisionamento completo com --debug
(achtung: ~ 1.1k lines)
= > link
O primeiro erro está na linha 1008 :
Error: /Stage[main]/Testproject/Postgresql::Server::Db[testdb]/Postgresql::Server::Role[testdb]/Postgresql_psql[CREATE ROLE testdb ENCRYPTED PASSWORD ****]: Could not evaluate: Error evaluating 'unless' clause, returned pid 14088 exit 1: 'Error: Could not execute posix command: Invalid group: postgres
Invalid group: postgres
Como nenhum dos pacotes postgres necessários foram instalados, os usuários não foram criados, etc.
Mas eu posso ver isso:
- lista de fontes é adicionada
- A chave GPG é importada
- mas de alguma forma a atualização não é propagada para atualizar os pacotes
Tentei encontrar problemas relacionados à atualização do pacote em falta e encontrei o link
apt::source does not force an 'apt-get update' and fails on first run
E, de fato, consegui que funcionasse:
- executando manualmente
apt-get update
na VM
- executar o provisionamento novamente
No final, esse problema está vinculado ao link
Eu tentei modificar a instalação do postgres para depender da atualização como essa, mas nada mudou:
class { 'postgresql::server':
package_ensure => latest,
ip_mask_allow_all_users => '0.0.0.0/0',
listen_addresses => '*',
require => Class['apt::update']
} ->
Eu também tentei adicionar o exemplo dos documentos, sem efeito:
class testproject {
Class['apt::update'] -> Package <| provider == 'apt' |>
class { 'postgresql::globals':
Eu também me pergunto se estou com falta de dependências de recursos mais explícitas aqui. A parte postgres é de uma instalação de fantoches mais antiga onde funcionava, mas ainda não descobri se fiz algo errado aqui. Verificado com link já algumas vezes.