pgbouncer recipe fails when consul is enabled and postgresql is in watchers
I think it happens when consul
service is enabled we change databases_json
to a path with a non-existent directory (because consul hasn't run yet).
Related gitlab.rb config:
pgbouncer['enable'] = true
consul['enable'] = true
consul['watchers'] = ["postgresql"]
Partial log:
Recipe: gitlab-ee::pgbouncer
* directory[/var/log/gitlab/pgbouncer] action create (up to date)
* directory[/var/opt/gitlab/pgbouncer] action create (up to date)
* template[/var/opt/gitlab/pgbouncer/pg_auth] action create (up to date)
* directory[/opt/gitlab/sv/pgbouncer] action create (up to date)
* directory[/opt/gitlab/sv/pgbouncer/log] action create (up to date)
* directory[/opt/gitlab/sv/pgbouncer/log/main] action create (up to date)
* template[/opt/gitlab/sv/pgbouncer/run] action create (up to date)
* template[/opt/gitlab/sv/pgbouncer/log/run] action create (up to date)
* template[/var/log/gitlab/pgbouncer/config] action create (up to date)
* ruby_block[reload pgbouncer svlogd configuration] action nothing (skipped due to action :nothing)
* file[/opt/gitlab/sv/pgbouncer/down] action delete (up to date)
* link[/opt/gitlab/init/pgbouncer] action create (up to date)
* link[/opt/gitlab/service/pgbouncer] action create (up to date)
* ruby_block[supervise_pgbouncer_sleep] action run (skipped due to not_if)
* directory[/opt/gitlab/sv/pgbouncer/supervise] action create (up to date)
* directory[/opt/gitlab/sv/pgbouncer/log/supervise] action create (up to date)
* file[/opt/gitlab/sv/pgbouncer/supervise/ok] action touch (skipped due to only_if)
* file[/opt/gitlab/sv/pgbouncer/log/supervise/ok] action touch (skipped due to only_if)
* file[/opt/gitlab/sv/pgbouncer/supervise/control] action touch (skipped due to only_if)
* file[/opt/gitlab/sv/pgbouncer/log/supervise/control] action touch (skipped due to only_if)
* service[pgbouncer] action nothing (skipped due to action :nothing)
* template[/var/opt/gitlab/pgbouncer/pgbouncer.ini] action create (up to date)
* file[databases.json] action create
* Parent directory /var/opt/gitlab/consul does not exist.
================================================================================
Error executing action `create` on resource 'file[databases.json]'
================================================================================
Chef::Exceptions::EnclosingDirectoryDoesNotExist
------------------------------------------------
Parent directory /var/opt/gitlab/consul does not exist.
Resource Declaration:
---------------------
# In /opt/gitlab/embedded/cookbooks/cache/cookbooks/gitlab-ee/recipes/pgbouncer.rb
52: file 'databases.json' do
53: path lazy { node['gitlab']['pgbouncer']['databases_json'] }
54: user lazy { node['gitlab']['pgbouncer']['databases_ini_user'] }
55: group lazy { node['gitlab']['pgbouncer']['databases_ini_user'] }
56: content node['gitlab']['pgbouncer']['databases'].to_json
57: notifies :run, 'execute[generate databases.ini]', :immediately
58: end
59:
Compiled Resource:
------------------
# Declared in /opt/gitlab/embedded/cookbooks/cache/cookbooks/gitlab-ee/recipes/pgbouncer.rb:52:in `from_file'
file("databases.json") do
action [:create]
retries 0
retry_delay 2
default_guard_interpreter :default
declared_type :file
cookbook_name "gitlab-ee"
recipe_name "pgbouncer"
content "{\"gitlabhq_production\":{},\"gitlabhq_production_sidekiq\":{\"dbname\":\"gitlabhq_production\",\"pool_size\":\"150\"}}"
owner #<Chef::DelayedEvaluator:0x00000000043717f8@/opt/gitlab/embedded/cookbooks/cache/cookbooks/gitlab-ee/recipes/pgbouncer.rb:54>
group #<Chef::DelayedEvaluator:0x0000000004371500@/opt/gitlab/embedded/cookbooks/cache/cookbooks/gitlab-ee/recipes/pgbouncer.rb:55>
path #<Chef::DelayedEvaluator:0x0000000004371898@/opt/gitlab/embedded/cookbooks/cache/cookbooks/gitlab-ee/recipes/pgbouncer.rb:53>
end
Platform:
---------
x86_64-linux
cc/ @ibaum
Edited by Ahmad Sherif