Я пытаюсь настроить puppet-dashboard, и у меня возникла проблема с Inventory / фактами:
Could not retrieve facts from inventory service: 403 "Forbidden request: puppetmasterhostname(ip.address.was.here) access to /facts/agenthostname.example.com [find] at line 99 "
В /etc/puppet/auth.conf на мастере марионеток:
path /facts
method find
auth any
allow *
Я перезапустил puppetmaster и puppet-dashboard, но по-прежнему получаю указанную выше ошибку. Есть идеи или советы по устранению неполадок?
ОБНОВИТЬ
Я использую марионетку v2.7.13. По запросу, вот мой полный /etc/puppet/auth.conf. Большинство из них - значения по умолчанию, которые уже были в конфигурации:
# allow nodes to retrieve their own catalog (ie their configuration)
path ~ ^/catalog/([^/]+)$
method find
allow $1
# allow nodes to retrieve their own node definition
path ~ ^/node/([^/]+)$
method find
allow $1
# allow all nodes to access the certificates services
path /certificate_revocation_list/ca
method find
allow *
# allow all nodes to store their reports
path /report
method save
allow *
# inconditionnally allow access to all files services
# which means in practice that fileserver.conf will
# still be used
path /file
allow *
### Unauthenticated ACL, for clients for which the current master doesn't
### have a valid certificate; we allow authenticated users, too, because
### there isn't a great harm in letting that request through.
# allow access to the master CA
path /certificate/ca
auth any
method find
allow *
path /certificate/
auth any
method find
allow *
path /certificate_request
auth any
method find, save
allow *
# this one is not stricly necessary, but it has the merit
# to show the default policy which is deny everything else
path /
auth any
# Inventory
path /facts
method find
auth any
allow *
/etc/puppet/puppet.conf
[main]
# The Puppet log directory.
# The default value is '$vardir/log'.
logdir = /var/log/puppet
# Where Puppet PID files are kept.
# The default value is '$vardir/run'.
rundir = /var/run/puppet
# Where SSL certificates are kept.
# The default value is '$confdir/ssl'.
ssldir = $vardir/ssl
[agent]
# The file in which puppetd stores a list of the classes
# associated with the retrieved configuratiion. Can be loaded in
# the separate ``puppet`` executable using the ``--loadclasses``
# option.
# The default value is '$confdir/classes.txt'.
classfile = $vardir/classes.txt
# Where puppetd caches the local configuration. An
# extension indicating the cache format is added automatically.
# The default value is '$confdir/localconfig'.
localconfig = $vardir/localconfig
[master]
reports = store, http
reporturl = http://puppetmasterhostname.example.com:3000/reports/upload
facts_terminus = yaml
storeconfigs = true
storeconfigs_backend = puppetdb
node_terminus = exec
external_nodes = /usr/bin/env PUPPET_DASHBOARD_URL=http://localhost:3000 /opt/puppet-dashboard/bin/external_node
У меня была такая же проблема, и я нашел эту строку 99 в /etc/puppet/auth.conf
соответствует следующему:
# this one is not stricly necessary, but it has the merit
# to show the default policy which is deny everything else
path /
auth any
Комментируя path /
и auth any
разрешил Dashboard доступ к инвентарю, используя следующую конфигурацию:
path /facts
auth yes
method find, search
allow dashboard
... как взято из http://docs.puppetlabs.com/dashboard/manual/1.2/configuring.html.
namespace.conf
а другие пути мне были не нужны.
Это проблема с заказом - убедитесь, что раздел:
path /facts
method find
auth any
allow *
находится ДО раздела по умолчанию:
# this one is not stricly necessary, but it has the merit
# to show the default policy which is deny everything else
path /
auth any
Это сработало + решило проблему для меня. Или, как указано выше, вы можете просто прокомментировать это!
мой конфиг имеет следующее ...
path /facts
auth any
allow *
path /fact
auth any
allow *
path /facts_search
allow *
Я также думаю, что мне пришлось создать пустой файл с именем namespaceauth.conf
вот так;
touch /etc/puppet/namespaceauth.conf
Проблема, с которой вы столкнулись, двоякая. Во-первых, ваш файл auth.conf должен иметь правильный доступ. Многие из упомянутых здесь решений достигают этого, но с большим риском! Используя следующее:
path /facts
auth any
allow *
path /fact
auth any
allow *
path /facts_search
allow *
... вы разрешаете * доступ
"звездочка" означает ВСЕ !!!
Чтобы решить эту проблему, вам понадобится auth.conf:
path /facts
auth yes
method find, search
allow dashboard
Затем вам нужно создать сертификаты для пользователя «приборной панели», как вы это делаете для узлов. В CentOS 6 с puppet-dashboard-1.2.23-1.el6.noarch выполните следующие действия:
1) убедитесь, что config / settings.yml имеет правильное имя хоста и порт для вашего puppetmaster
2) сгенерируйте свою пару ключей для приборной панели:
sudo -u puppet-dashboard rake cert:create_key_pair
3) сгенерируйте запрос сертификата для панели инструментов:
sudo -u puppet-dashboard rake cert:request
4) на кукловода подписать сертификат:
puppet cert sign dashboard
5) получить сертификат кукловода
sudo -u puppet-dashboard rake cert:retrieve
6) перезапустите приборную панель
Все это позволит панели управления получить доступ к фактам о марионеточном мастере с аутентификацией сертификата.
Наслаждайтесь!