Задача. Управляемый узел, на котором Хаб пишет конфигурацию, проверяет её, вводит в действие, читает состояние и выполняет команды, — сегодня через два транспорта с двумя доступами, а можно через один.
Из чего складывается:
Области у составляющих разные. Уровень узла; схема закрывает всё, кроме установки MTA, — для неё нужна оболочка. Порт монитора должен быть доступен Хабу, а ключ — храниться там, где Хаб им пользуется.
Как они взаимодействуют. Вся схема — в порядке действий, потому что запись не проверяет и не вводит в действие: прочитать, записать, проверить, перечитать, а при неудаче вернуть прочитанное. Ровно эту последовательность Хаб выполняет и сегодня, только запись идёт по SSH, — так что схема про смену транспорта. Размен настоящий: путей доступа становится меньше, но один ключ достаёт и до конфигурации, и до любой команды узла.
Порядок:
| Шаг | Вызов | Зачем |
|---|---|---|
| прочитать | GET /configFile?op=read | увидеть расхождение с тем, что писал Хаб |
| записать | POST /configFile с op=commit | положить файлы |
| проверить | POST /command с test config | синтаксис до перечитывания |
| перечитать | POST /command с reload | ввести в действие |
| откатить | POST /configFile с прочитанным | если перечитывание не прошло |
# записать файл, проверить и перечитать — всё по ключу curl -s -X POST -H 'X-API-Key: KEY' 'http://127.0.0.1:8080/configFile' -F op=commit -F format=json -F file.1.name=/etc/pmta/config -F file.1.op=write -F file.1.content='@/tmp/config.new' curl -s -H 'X-API-Key: KEY' 'http://127.0.0.1:8080/command' -F command='test config' -F format=json curl -s -H 'X-API-Key: KEY' 'http://127.0.0.1:8080/command' -F command='reload' -F format=json
curl -s -H 'X-API-Key: KEY' 'http://127.0.0.1:8080/configFile?format=json-text&op=read&filename=/etc/pmta/config' | head -5