Назад | Перейти на главную страницу

Не удалось позывной: не удалось найти запрос сертификата для марионетки

Я начинаю работать с марионеткой на ec2, используя следующее руководство.

https://help.ubuntu.com/12.04/serverguide/puppet.html

На самом последнем этапе, когда я пытаюсь подписать клиента марионетки от мастера марионетки, я получаю следующую ошибку

root@ip-10-248-27-66:/home/ubuntu# puppetca --sign ec2-54-245-56-210.us-west-2.compute.amazonaws.com
err: Could not call sign: Could not find certificate request for ec2-54-245-56-210.us-west-2.compute.amazonaws.com

Вот результат /etc/hosts на кукловода

127.0.0.1 localhost puppetmaster
10.248.34.162 ec2-54-245-56-210.us-west-2.compute.amazonaws.com puppet

# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

Вот результат /etc/hosts на марионеточном клиенте

127.0.0.1 localhost
10.248.27.66 ec2-50-112-220-110.us-west-2.compute.amazonaws.com puppetmaster

# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

Я следовал советам по устранению неполадок здесь https://serverfault.com/a/388973/85577

Мастер работает?

root@ip-10-248-27-66:/home/ubuntu# service puppetmaster status
 * master is running

Разрешается ли имя хоста puppet или puppet.abc.com от агента?

Как мне это проверить? Я просто телнет puppetmaster на порт 8140 (команда host не разрешает его, а команда telnet разрешает)?

root@ip-10-248-34-162:/home/ubuntu# host puppetmaster
Host puppetmaster not found: 3(NXDOMAIN)

Доступен ли TCP-порт 8140 на главном устройстве для агента (попробуйте: telnet puppet 8140)?

root@ip-10-248-34-162:/home/ubuntu# telnet puppetmaster 8140
Trying 10.248.27.66...
Connected to ec2-50-112-220-110.us-west-2.compute.amazonaws.com.
Escape character is '^]'.

Что говорит системный журнал агента?

Apr 11 17:57:41 ip-10-248-34-162 puppet-agent[3897]: Could not request certificate: getaddrinfo: Name or service not known

Попробуйте puppet agent --test на агенте, который попытается подключиться к мастеру и останется на переднем плане, чтобы показать результат.

root@ip-10-248-34-162:/home/ubuntu# puppet agent --test
err: Could not request certificate: getaddrinfo: Name or service not known
Exiting; failed to retrieve certificate and waitforcert is disabled

РЕДАКТИРОВАТЬ

Спасибо, дауд, так что записи в /etc/hosts верны для этой команды

$ getent hosts puppetmaster
10.248.27.66 ec2-50-112-220-110.us-west-2.compute.amazonaws.com puppetmaster

однако когда я пытаюсь это сделать, я получаю сообщение об ошибке

$ puppet agent --test --waitforcert 5
err: Could not request certificate: Connection refused - connect(2)
err: Could not request certificate: Connection refused - connect(2)

Убедитесь, что и puppetmaster, и клиентский компьютер могут разрешить полное доменное имя puppetmaster. Чтобы это работало, вам нужно добавить IP-адрес puppetmaster в свой /etc/hosts на обеих машинах, затем проверьте это, используя:

$ ping puppetmaster или $ getent hosts puppetmaster

Убедитесь, что вы можете связаться с мастером марионеток с клиентской машины.

$ telnet puppetmaster 8140

Если сервер отказывает вам в соединении, убедитесь, что порт открыт в Puppetmaster.

# iptables -L -n -v

Или добавьте правило, разрешающее входящий трафик на этот порт (это зависит от того, как iptables уже настроено)

# iptables -A INPUT -p tcp --dport 8140 -m state --state NEW -j ACCEPT

И запустить от клиента

# puppet agent --test --waitforcert 5

Потом от кукловода

# puppet cert list

покажет вам сертификат, готовый к подписи, вы можете проверить, принадлежит ли он клиентскому компьютеру, сравнив отпечаток пальца. Подписать его:

# puppet cert sign $client

Puppetmaster составляет каталог для клиента, и вы можете следить за его применением в клиентской консоли.

Чтобы регенерировать сертификаты на Puppetmaster, остановите ppuppetmaster и

# find $(puppet master --configprint ssldir) -name "$(puppet master --configprint certname).pem" -delete

Когда вы снова запустите Puppetmaster, он восстановит сертификат для вас.

На стороне клиента достаточно удалить содержимое ssldir, обычно /var/lib/puppet/ssl, но проверьте, как указано выше, при следующем вызове

# puppet agent --test --waitforcert 5

он будет воссоздан.

В конце концов, проверьте CN сертификата кукловода с

# puppet cert list --all

и сопоставьте любое из имен / ALT-имен с записью в вашем / etc / hosts.

Одна из вещей, отмеченных в обсуждении Вот и не упоминалось в предыдущем ответе, что иногда порты могут вести себя странно. В моем случае, несмотря на то, что порт 8140 был открыт в iptables, я получал ошибки о невозможности подключения. Мне помогли следующие команды:

iptables -F
service service iptables save

Конечно использовать sudo если вышеуказанная команда не работает с вашим пользователем. Я даже добавил две указанные выше команды в сценарий подготовки ящика, так что если я остановлю / воссоздаю ящики - iptables будет сброшен.

Я столкнулся с теми же проблемами и решил их с помощью других настроек.

Та же ошибка:

[root@puppetclient puppet]# puppet agent --server yogesh.puppet.com
--no-daemonize --verbose Error: Could not request certificate: Connection refused - connect(2) for "yogesh.puppet.com" port 8140 Error: Could not request certificate: Connection refused - connect(2) for "yogesh.puppet.com" port 8140 Error: Could not request certificate: Connection refused - connect(2) for "yogesh.puppet.com" port 8140 Error: Could not request certificate: Connection refused - connect(2) for "yogesh.puppet.com" port 8140

Я перепробовал все Iptables, порты, брандмауэры, переустановку агента (не мастер). Затем я начал искать больше и нашел в файлах журнала что-то вроде:

I, [2016-04-27T23:21:55.118997 #1745]  INFO -- : activemq.rb:139:in `on_ssl_connecting' Establishing SSL session with stomp+ssl://mcollective@yogesh.puppet.com:61613
E, [2016-04-27T23:21:55.131678 #1745] ERROR -- : activemq.rb:149:in `on_ssl_connectfail' SSL session creation with stomp+ssl://mcollective@yogesh.puppet.com:61613 failed: SSL_CTX_use_PrivateKey: key values mismatch
I, [2016-04-27T23:21:55.132438 #1745]  INFO -- : activemq.rb:129:in `on_connectfail' TCP Connection to stomp+ssl://mcollective@yogesh.puppet.com:61613 failed on attempt 36
I, [2016-04-27T23:22:25.141892 #1745]  INFO -- : activemq.rb:139:in `on_ssl_connecting' Establishing SSL session with stomp+ssl://mcollective@yogesh.puppet.com:61613
E, [2016-04-27T23:22:25.144644 #1745] ERROR -- : activemq.rb:149:in `on_ssl_connectfail' SSL session creation with stomp+ssl://mcollective@yogesh.puppet.com:61613 failed: SSL_CTX_use_PrivateKey: key values mismatch
I, [2016-04-27T23:22:25.144836 #1745]  INFO -- : activemq.rb:129:in `on_connectfail' TCP Connection to stomp+ssl://mcollective@yogesh.puppet.com:61613 failed on attempt 37

Это дало мне указание на сертификаты, присутствующие на главном сервере. Я воссоздал мастер-ключ, и он у меня сработал.

Внимание: это была единственная тестовая среда для меня, не играйте с ней прямо в производственной среде.

[root@YogeshRaheja init.d]# puppet cert clean "yogesh.puppet.com"
Notice: Revoked certificate with serial 11
Notice: Removing file Puppet::SSL::Certificate yogesh.puppet.com at '/etc/puppetlabs/puppet/ssl/ca/signed/yogesh.puppet.com.pem'
Notice: Removing file Puppet::SSL::Certificate yogesh.puppet.com at '/etc/puppetlabs/puppet/ssl/certs/yogesh.puppet.com.pem'
Notice: Removing file Puppet::SSL::CertificateRequest yogesh.puppet.com at '/etc/puppetlabs/puppet/ssl/certificate_requests/yogesh.puppet.com.pem'
Notice: Removing file Puppet::SSL::Key yogesh.puppet.com at '/etc/puppetlabs/puppet/ssl/private_keys/yogesh.puppet.com.pem'


[root@YogeshRaheja init.d]# puppet cert generate yogesh.puppet.com
Notice: yogesh.puppet.com has a waiting certificate request
Notice: Signed certificate request for yogesh.puppet.com
Notice: Removing file Puppet::SSL::CertificateRequest yogesh.puppet.com at '/etc/puppetlabs/puppet/ssl/ca/requests/yogesh.puppet.com.pem'
Notice: Removing file Puppet::SSL::CertificateRequest yogesh.puppet.com at '/etc/puppetlabs/puppet/ssl/certificate_requests/yogesh.puppet.com.pem'


[root@YogeshRaheja init.d]# ./pe-puppetserver start
Starting pe-puppetserver:                                  [  OK  ]
[root@YogeshRaheja init.d]#
[root@YogeshRaheja init.d]#
[root@YogeshRaheja init.d]# netstat -an | grep -i listen
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN
tcp        0      0 127.0.0.1:631               0.0.0.0:*                   LISTEN
tcp        0      0 0.0.0.0:5432                0.0.0.0:*                   LISTEN
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN
tcp        0      0 :::4433                     :::*                        LISTEN
tcp        0      0 :::8081                     :::*                        LISTEN
tcp        0      0 :::22                       :::*                        LISTEN
tcp        0      0 ::1:631                     :::*                        LISTEN
tcp        0      0 :::5432                     :::*                        LISTEN
tcp        0      0 ::1:25                      :::*                        LISTEN
tcp        0      0 :::42632                    :::*                        LISTEN
tcp        0      0 :::8140                     :::*                        LISTEN
tcp        0      0 :::61613                    :::*                        LISTEN

и это решило проблему подключения клиента.