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

Как временно отключить обещание cfengine на одном клиенте

Мне интересно, каков наилучший, самый быстрый и самый простой способ временно остановить в экстренной ситуации один клиент cfengine от выполнения определенного обещания без необходимости что-либо менять на сервере (хабе) cfengine.

Моим решением было отредактировать /var/cfengine/inputs/promises.cf и закомментируйте службы, которые я хочу остановить (в этом случае я хочу, чтобы cfengine прекратил попытки перезапустить mysqld). Затем я перезапустил cfengine. Я не уверен, что это лучший способ (или даже если он что-то не сломает). Пока вроде ничего не загорелось, но мне просто интересно, есть ли более «приемлемый» способ.

Любое изменение input / будет отменено при следующем запуске cf-agent update.cf (получение новых мастер-файлов с сервера политик и перезапись вашего редактирования). Так что, я думаю, ваш быстрый хакер работает лишь временно. Это также означает (если я не ошибаюсь, а я вполне могу ошибаться), что любое временное исправление обязательно включает в себя редактирование политики на его сервере (хабе).

Редактирование (общей) политики тогда обусловит соответствующее обещание отрицанием некоторого класса, установленного только на конкретном хосте, например добавив к обещанию атрибут ifvarclass => "! ipv4_10_20_30_40", если хост - 10.20.30.40. (Обратите внимание, что вы также можете сделать то же самое с class :: condition в обещании, но это может повлиять на последующие обещания или запутаться с любым class :: condition, уже применимым к нему.)

Я считаю, что метод, который вы использовали, является лучшим, хотя перезапуск CFEngine не требуется. Обратите внимание, что это будет только временная мера. Как только на сервере политик изменится какая-либо политика, это вызовет повторную загрузку политик, которая перезапишет изменения, внесенные в /var/cfengine/inputs.

Поэтому не забудьте внести изменения с обеих сторон. Внесение изменений в клиенте внутри /var/cfengine/inputs вносит изменения немедленно, делая их на сервере внутри /var/cfengine/masterfiles делает его постоянным. Я сам много раз использовал этот метод.