Por que um caminho do F5OS parece estranho
Quem conhece bem o BIG-IP lê /mgmt/tm/ltm/virtual/~Common~vs_web num relance.
A mesma pessoa esbarra neste e para:
/restconf/data/f5-tenants:tenants/tenant=tenant1/config/running-state
A dificuldade não é a profundidade. É que as duas APIs vêm de tradições diferentes. O iControl REST expõe o modelo de objetos do TMOS, que é da própria F5. O F5OS — a camada de plataforma sob os tenants no VELOS e no rSeries — é operado por RESTCONF, um protocolo padronizado na RFC 8040 para endereçar dados modelados em YANG. O caminho não é uma invenção da F5; o vocabulário é o do padrão.
As partes
A raiz da API. /restconf/data endereça o datastore: configuração e estado.
/restconf/operations invoca uma RPC — uma ação, e não um nó.
O prefixo de módulo. f5-tenants:tenants significa o nó tenants dentro do
módulo YANG f5-tenants. O F5OS usa tanto módulos OpenConfig, neutros em
relação a fabricante — openconfig-system, openconfig-interfaces,
openconfig-vlan — quanto os próprios módulos da F5, prefixados com f5-. O
prefixo informa quem definiu o modelo que você está endereçando e, portanto,
onde está a documentação dele.
A convenção de prefixação. Apenas o primeiro nó de um módulo leva o
prefixo. Tudo abaixo dele é escrito sem prefixo, porque herda o módulo do nó
pai. No exemplo acima, tenants é qualificado e config e running-state não
são. Um prefixo que reaparece no meio do caminho significa que o caminho
atravessou para outro módulo — é esse o sinal a observar.
A porta que confunde
O F5OS originalmente expunha o RESTCONF na porta 8888, sob /restconf. A
partir do F5OS 1.8, a mesma API também é alcançável na porta HTTPS padrão,
sob /api. Dois caminhos com aparência diferente podem, portanto, endereçar
exatamente o mesmo recurso:
https://host:8888/restconf/data/openconfig-system:system
https://host:443/api/data/openconfig-system:system
Nenhum é mais correto que o outro. Documentação, scripts e respostas de fórum escritos em épocas diferentes usam formas diferentes, e um script que falha contra um host e funciona contra outro muitas vezes esbarrou nisso e em mais nada.
A autenticação usa o cabeçalho X-Auth-Token. Esse token é, ele próprio, um
, portanto carrega uma expiração — um script de longa duração que funcionou
por vinte minutos e passou a responder 401 não perdeu as credenciais; ele
passou da expiração e precisaria ter renovado o token.
O que fazer com um caminho que você não reconhece
Leia nesta ordem: a raiz diz se é datastore ou RPC; o primeiro prefixo de módulo diz de quem é o modelo; as chaves dizem qual instância; e os nós sem prefixo ao final são os contêineres e as folhas dentro daquele modelo.
Se o módulo for um que você nunca viu, isso é uma consulta à documentação, não um palpite. A estrutura do caminho continua legível — dá para distinguir uma entrada de lista de um contêiner sem saber o que qualquer um deles contém — e saber exatamente onde está a sua incerteza já é a maior parte do trabalho.
O explicador de caminhos RESTCONF do F5OS neste site faz exatamente essa decomposição, offline, e nomeia os módulos que conhece dizendo claramente quando um módulo não está na sua tabela.