2013-12-19 2 views
1

У меня было несколько узлов на моем сервере шеф-повара, у которых была проблема при загрузке, и пропустили автоматические атрибуты FQDN и домена, из-за которых они не были проиндексированы SOLR и не были доступны для поиска ножом , Я не мог перезагрузить эти машины, но хотел исправить это, и мне потребовалось некоторое время, чтобы сделать это. Поэтому я публикую это в надежде, что это спасет других в определенное время.Обновление автоматических атрибутов в Opscode Chef (serialized_object)

ответ

2

Автоматические атрибуты хранятся шеф-поваром в базе данных и не редактируются ножом (см. Обзор атрибутов шеф-повара). Они хранятся в базе данных шеф-повара как столбец с именем serialized_object в таблице узлов в шестнадцатеричном виде и на самом деле представляют собой строку JSON с gzipped.

Чтобы получить строку JSON:

  • Использование клиента PostgreSQL для подключения к повару PostgreSQL (вы можете найти учетные данные на сервере повара в/и т.д./повар-сервер/Шеф-сервер-секреты. JSON)
  • Сохранить содержимое serialized_object в файл сказать serialized_object.hex (он должен выглядеть как '\ x1f8b08000 ...')
  • Run: XXD -p -r serialized_object.hex> serialized_object.gz
  • Run: gunzip serialized_object.gz

Теперь файл serialized_object содержит атрибуты в формате JSON, которые вы можете редактировать. После редактирования вы можете сохранить его содержимое обратно в сервер повара следуя:

  • Run: GZIP serialized_object
  • Run: XXD -p serialized_object.gz> serialized_object.hex
  • Теперь вы должны использовать PostgreSQL и вставьте данные Hex (обязательно удалите обратные сляки префикса и x из шестнадцатеричной строки) со следующим запросом:

    набор узлов обновления serialized_object = decode ('1f8b08000 ...', 'hex'), где name = ''

Надеется, что это помогает кто-то :)

+0

Это весело, что они хранят его как с gzip'нутой JSON, учитывая, что PostgreSQL автоматически сжимает значение столбцов. –

Смежные вопросы