Puppet для управления и автоматизации Linux часть 4.

Введение.

В этой части рассмотрим практические действия при решении проблем, возникающих при создании ключей сертификатов puppet agent. Предыдущая часть была посвящена базовым вопросам установки puppet agent на клиентских станциях. Теперь мы постараемся более расширенно взглянуть на вопросы создания сертификатов, проверки их работы и нахождения путей решения проблем связанных с ошибками.

Установка puppet agent.

  • Стенд
    • Cервер ALT Linux , имя lin-pup; ip-10.0.2.33
      • CPU Intel Core 5
      • HDD >50Gb
      • ОЗУ > 8Gb
      • ALT Simply Linux, имя lin-sl; ip-10.0.2.32

Как установить puppet agent см. часть 3. Для понимания технологии взаимодействия цепочки сертификатов между мастер-сервером и агентом клиентского устройства ниже приводится пошаговая инструкция.

Договоримся, мастер-сервер установлен и проверен. Запись DNS на клиентском устройстве и сервере присутствует, всё готово для работы. Контролировать наши действия будем с двух консолей — сервера и клиента.

Puppet agent Шаг 1.

После установки на «чистой» клиентской станции агента, выполняем действия по инициализации сертификата.

Под «чистой» понимают, что никаких действий с агентом до этого не проводилось…

Генерируем пару ключей: private1 и public, формат pem2.

# puppet ssl bootstrap …: csr_attributes file loading from /etc/puppet/csr_attributes.yaml …: Creating a new SSL certificate request for lin-sl …: Certificate Request fingerprint (SHA256): A0:45:71:65:C8:BE:75:A0:70:F9:3B:9A:DE:E5:69:CD:7E:36:EC:01:1F:BA:4F:4F:4E:88:10:6F:96:4A:BA:E7 …: Certificate for lin-sl has not been signed yet Couldn’t fetch certificate from CA server; you might still need to sign this agent’s certificate (lin-sl). …: Will try again in 120 seconds.

На консоли сервера наблюдаем такую картину.

# puppetserver ca list --all Requested Certificates: lin-sl (SHA256) A0:45:71:65:C8:BE:75:A0:70:F9:3B:9A:DE:E5:69:CD:7E:36:EC:01:1F:BA:4F:4F:4E:88:10:6F:96:4A:BA:E7 Signed Certificates: lin-pup (SHA256) 2A:3E:66:AD:3F:35:05:60:45:3A:C1:3A:37:58:5C:72:32:57:E8:D2:82:54:76:A6:95:43:10:C9:BC:93:6A:1A alt names: ["DNS:puppet", "DNS:lin-pup"] authorization extensions: [pp_cli_auth: true]

Из приведённого листинга видно, что ключ сертификата агента клиентского устройства «встал» в очередь для подписи CA мастер-сервера.

Puppet agent Шаг 2.

Теперь нам необходимо подписать полученный сертификат на сервере.

# puppetserver ca sign --certname lin-sl
Successfully signed certificate request for lin-pup

Смотрим общею картину показную CA мастер-сервера.

# puppetserver ca list --all ... Signed Certificates: lin-sl (SHA256) 82:F7:8D:05:0C:72:FA:5F:3A:2B:11:34:9C:2C:CB:A8:3B:64:86:2D:70:7C:D1:E7:E1:0C:89:D3:1E:53:6A:A3 lin-pup (SHA256) C5:C4:11:4A:2D:EC:C8:2F:22:31:A3:F5:8C:91:BD:B6:E9:05:FB:AF:FD:80:63:48:31:31:2C:8B:5A:55:BA:E0 alt names: ["DNS:puppet", "DNS:lin-pup"] authorization extensions: [pp_cli_auth: true]

Из предыдущей текста видно — все сертификаты имеют подпись.

Puppet agent Шаг 3.

На агенте клиентской станции проверяем работу сертификата.

# puppet ssl bootstrap Notice: Completed SSL initialization
# puppet agent —test … Using environment ‘production’ …: Retrieving pluginfacts …: Retrieving plugin …: Caching catalog for lin-sl …: Applying configuration version ‘1702707510’ Notice: Applied catalog in 0.02 seconds

Выводимая информация указывает на доверительные отношения между клиент-сервер с помощью SSL шифрования.

Troubleshooting Puppet agent.

Такая сложная система как SSL сопровождается проблемами и неполадками. Иногда приходится долго искать причину отказа, а вопрос решался в неправильных сертификатах или сроках их выпуска. Ниже перечислены некоторые основные особенности использования сертификат SSL для работы с Puppet.

Замена ключей SSL агента.

Мы установили ключи на рабочей станции, у нас всё работает можно двигаться дальше. Но вот нам потребовалось пересоздать сертификат, причин может быть много, изменилось имя ПК, IP… Для новой генерации ключей, сначала необходимо удалить старые сертификаты на клиенте, предварительно остановив агент.

# systemctl stop puppet
# rm -rf /etc/puppet/ssl/ ‘/etc/puppet/ssl/’? y rm: спуститься в каталог ‘/etc/puppet/ssl/private_keys’? y rm: удалить обычный файл ‘/etc/puppet/ssl/private_keys/sl.dom.pem’? y rm: удалить обычный файл ‘/etc/puppet/ssl/private_keys/sl.pem’? y rm: удалить каталог ‘/etc/puppet/ssl/private_keys’? y rm: спуститься в каталог ‘/etc/puppet/ssl/certs’? y rm: удалить обычный файл ‘/etc/puppet/ssl/certs/ca.pem’? y rm: удалить каталог ‘/etc/puppet/ssl/certs’? y rm: удалить каталог ‘/etc/puppet/ssl/public_keys’? y rm: удалить каталог ‘/etc/puppet/ssl/certificate_requests’? y rm: удалить каталог ‘/etc/puppet/ssl/private’? y rm: удалить обычный файл ‘/etc/puppet/ssl/crl.pem’? y rm: удалить каталог ‘/etc/puppet/ssl/’? y
# systemctl start puppet

Приведённый листинг показывает подробности удаления каталога ключей. В действительности при использовании дополнительного ключа "f" — всё удаляется без предупреждения.

Теперь необходимо проделать манипуляции как в шаге 1.

# puppet ssl bootstrap Info: csr_attributes file loading from /etc/puppet/csr_attributes.yaml Info: Creating a new SSL certificate request for lin-sl Info: Certificate Request fingerprint (SHA256): 74:78:39:FF:2B:E8:89:9C:31:27:11:55:5C:47:B9:27:8D:51:26:7D:EC:C9:AD:70:41:55:0A:CC:68:E0:54:FF Info: Downloaded certificate for sl.dom from https://lin-pup:8140/puppet-ca/v1 Error: The certificate for ‘CN=lin-sl’ does not match its private key Info: Will try again in 120 seconds.

Ошибка возникающая в листинге говорит о необходимости замены компрометирующего ключа на новый.

Удаляем старый сертификат на CA мастер-сервере.

# puppetserver ca list --all
Signed Certificates: lin-sl (SHA256) 82:F7:8D:05:0C:72:FA:5F:3A:2B:11:34:9C:2C:CB:A8:3B:64:86:2D:70:7C:D1:E7:E1:0C:89:D3:1E:53:6A:A3 lin-pup (SHA256) C5:C4:11:4A:2D:EC:C8:2F:22:31:A3:F5:8C:91:BD:B6:E9:05:FB:AF:FD:80:63:48:31:31:2C:8B:5A:55:BA:E0 alt names: ["DNS:puppet", "DNS:test"] authorization extensions: [pp_cli_auth: true]
# puppetserver ca clean --certname lin-sl ... Certificate for lin-sl has been revoked Cleaned files related to lin-sl
# puppetserver ca list --all ... Signed Certificates: test (SHA256) C5:C4:11:4A:2D:EC:C8:2F:22:31:A3:F5:8C:91:BD:B6:E9:05:FB:AF:FD:80:63:48:31:31:2C:8B:5A:55:BA:E0 alt names: ["DNS:puppet", "DNS:test"] authorization extensions: [pp_cli_auth: true]

Снова возвращаемся на консоль клиента и запускаем команду.

# puppet ssl bootstrap Info: csr_attributes file loading from /etc/puppet/csr_attributes.yaml Info: Creating a new SSL certificate request for lin-sl Info: Certificate Request fingerprint (SHA256): 74:78:39:FF:2B:E8:89:9C:31:27:11:55:5C:47:B9:27:8D:51:26:7D:EC:C9:AD:70:41:55:0A:CC:68:E0:54:FF Info: Certificate for lin-sl has not been signed yet Couldn’t fetch certificate from CA server; you might still need to sign this agent’s certificate (lin-sl). Info: Will try again in 120 seconds.

Контролируем свои действия.

# puppetserver ca list --all ... Requested Certificates: lin-sl (SHA256) 74:78:39:FF:2B:E8:89:9C:31:27:11:55:5C:47:B9:27:8D:51:26:7D:EC:C9:AD:70:41:55:0A:CC:68:E0:54:FF Signed Certificates: lin-pup (SHA256) C5:C4:11:4A:2D:EC:C8:2F:22:31:A3:F5:8C:91:BD:B6:E9:05:FB:AF:FD:80:63:48:31:31:2C:8B:5A:55:BA:E0 alt names: ["DNS:puppet", "DNS:lin-pup"] authorization extensions: [pp_cli_auth: true] [root@test ~]# puppetserver ca sign --certname lin-sl ... Successfully signed certificate request for lin-sl # puppetserver ca list --all ... lin-sl (SHA256) 6E:2F:EA:93:61:39:40:7F:E2:9B:96:4A:2D:5F:16:10:47:50:67:20:1B:ED:17:BC:49:AC:A5:DF:7C:CF:F4:AD lin-pup (SHA256) C5:C4:11:4A:2D:EC:C8:2F:22:31:A3:F5:8C:91:BD:B6:E9:05:FB:AF:FD:80:63:48:31:31:2C:8B:5A:55:BA:E0 alt names: ["DNS:puppet", "DNS:lin-pup"] authorization extensions: [pp_cli_auth: true]

Приведённые выше отрывки листингов наглядно показывают технологический процесс замены сертификата на клиентском устройстве.

У мастер-сервера существует режим автоматизации подписи клиентских устройств, но он не рекомендован по соображениям безопасности.

Error 500.

Ошибка типа Error 500 on SERVER звучащая как…

# Error: Could not retrieve catalog from remote server: Error 500 on SERVER: Server Error: Could not find node statement with name 'default' or 'lin-sl' on node lin-pup Warning: Not using cache on failed catalog Error: Could not retrieve catalog; skipping run

…лечится редактированием файла манифеста site.pp3 в каталоге /etc/puppet/code/environments/production/manifests. Необходимо указать имя клиента на котором производится задача установки4 программы, после чего перезапустить мастер-сервер.

node 'lin-sl' {
       Package { ensure => installed }
       package { 'notepadqq': }
 } 

Полезные команды

Печатать цифровой отпечаток подписи агента.

# puppet agent —fingerprint (SHA256) 6E:2F:EA:93:61:39:40:7F:E2:9B:96:4A:2D:5F:16:10:47:50:67:20:1B:ED:17:BC:49:AC:A5:DF:7C:CF:F4:AD

Включить режим отладки работы агента.

# puppet agent —debug

Проверка соединения клиента с портом мастер-сервера.

# puppet agent —test —serverport 8140

Подробный журнал работы агента.

# journalctl -u puppet

Заключение.

Рассмотрев некоторые особенности работы агента, пользователь получает более широкое представление об установке доверительных SSL отношений клиен-сервер. К этой части мы будем возвращаться ещё не раз, по мере продвижения обучения методики работы с Puppet. В пятой части мы переёдём к основной теме — практическое использования платфы в среде Linux.

Полезные ссылки.

Сноски.

  1. используется два ключа: один для шифрования (передается по открытому каналу public), другой для расшифровки хранится у владельца (закрытый ключ private): ↩︎
  2. метод кодирования двоичных данных ↩︎
  3. site.pp — стендовое название файла манифеста ↩︎
  4. Подробности работы манифеста site.pp смотри часть 6. ↩︎

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Copyright © 2011-2024
Все права защищены.
При перепечатке указать источник: kabtim.ru
Контакты