Importação e exportação em massa de Google Cloud recursos existentes
Esta página descreve o comando config-connector bulk-export
e como usá-lo para
exportar Google Cloud recursos para ficheiros YAML do Config Connector
que pode importar posteriormente para o Config Connector.
config-connector bulk-export
usa a funcionalidade Export do Cloud Asset Inventory
para descobrir recursos Google Cloud existentes. Pode fornecer uma exportação do Cloud Asset Inventory ou config-connector
pode realizar a exportação em seu nome.
O Cloud Asset Inventory exporta estruturas JSON. Cada estrutura tem o nome do recurso, o respetivo tipo de inventário de recursos e os recursos antecessores: projetos, pastas e organização. Para descobrir os tipos suportados pelo inventário de recursos, consulte Tipos de recursos suportados.
Limitações
Nem todos os recursos suportam o comando bulk-export
. Para obter uma lista dos recursos
compatíveis, execute config-connector print-resources
.
Antes de começar
Se quiser usar a ferramenta
config-connector
para exportar diretamente do Cloud Asset Inventory, ative a API Cloud Asset Inventory no projeto da sua Google Cloud identidade comgcloud
.gcloud services enable cloudasset.googleapis.com
Exemplo de exportação em massa
Neste exemplo, cria um PubSubTopic com a CLI do Google Cloud e, em seguida, importa-o para o Config Connector.
Crie um tópico com o nome
sample-topic
com a CLI Google Cloud:gcloud pubsub topics create sample-topic
Recebe uma confirmação de que o tópico foi criado.
Created topic [projects/PROJECT_ID/topics/sample-topic].
Na saída,
PROJECT_ID
é substituído pelo seu Google Cloud projeto.Obtenha o Google Cloud nome do recurso do tópico e guarde-o numa variável de ambiente com o seguinte comando:
TOPIC_RESOURCE_NAME=$(gcloud pubsub topics describe sample-topic --format "value(name)")
Para identificar objetos, a ferramenta
config-connector
usa estruturas JSON do Cloud Asset Inventory. Guarde a estrutura JSON do recurso de tópico numa variável de ambiente:TOPIC_ASSET='{"name":"//pubsub.googleapis.com/'"${TOPIC_RESOURCE_NAME}"'","asset_type":"pubsub.googleapis.com/Topic"}'
Passe o recurso para
config-connector bulk-export
executando o seguinte comando:echo ${TOPIC_ASSET} | config-connector bulk-export
A saída é um recurso do Config Connector no formato YAML.
--- apiVersion: pubsub.cnrm.cloud.google.com/v1beta1 kind: PubSubTopic metadata: annotations: cnrm.cloud.google.com/project-id: PROJECT_ID name: sample-topic ...
Na saída,
PROJECT_ID
é substituído pelo seu Google Cloud projeto.Pode transmitir este recurso para o Config Connector com
kubectl apply -f -
. Para transmitir o recurso diretamente, execute o seguinte comando:echo ${TOPIC_ASSET} | config-connector bulk-export | kubectl apply -f - --namespace CC_NAMESPACE
Substitua CC_NAMESPACE pelo espaço de nomes a partir do qual o Config Connector gere os recursos.
O Config Connector adquire o recurso.
Confirme que o Config Connector está a gerir o recurso com
kubectl describe
:kubectl describe pubsubtopic sample-topic --namespace CC_NAMESPACE
Substitua
CC_NAMESPACE
pelo espaço de nomes a partir do qual o Config Connector gere os recursos.
Limpar
Pode eliminar o seu PubSubTopic com config-connector bulk-export
e
kubectl delete
.
echo ${TOPIC_ASSET} | config-connector bulk-export | kubectl delete -f - --namespace CC_NAMESPACE
Substitua CC_NAMESPACE
pelo espaço de nomes a partir do qual o Config Connector gere os recursos.
Descobrir recursos a importar
Quando importa recursos, pode fazer uma exportação do Cloud Asset Inventory e fornecer os resultados à config-connector bulk-export
ou pedir à config-connector bulk-export
que faça uma em seu nome.
Importar a partir de uma exportação do Cloud Asset Inventory
Pode fornecer uma exportação do inventário de recursos indicando um caminho para um ficheiro local
que contenha a exportação ou encaminhando os resultados de uma exportação para config-connector
no STDIN.
Importar a partir de um ficheiro local
Pode fornecer uma
exportação do inventário de recursos
à config-connector bulk-export
através de um ficheiro local com o parâmetro --input
.
config-connector bulk-export --input ASSET_INVENTORY_EXPORT
Substitua ASSET_INVENTORY_EXPORT
pelo nome do ficheiro da exportação do Cloud Asset Inventory.
A importar do STDIN
Para fornecer uma exportação do inventário de recursos no STDIN, encaminhe os resultados de uma exportação para
config-connector bulk-export
. Por exemplo, se a exportação estiver num ficheiro local denominado export.json
, canalize o conteúdo do ficheiro para config-connector bulk-export
sem fornecer nenhum dos parâmetros de exportação.
cat export.json | config-connector bulk-export
Filtrar uma exportação do inventário de recursos no STDIN
Para filtrar uma exportação do inventário de recursos, pode usar a ferramenta jq
e canalizar para introduzir os resultados em config-connector bulk-export
. Por exemplo, se quiser importar apenas recursos
PubSubTopic do ficheiro EXPORT_FILE, execute o seguinte
comando:
cat EXPORT_FILE | jq '. | select( .asset_type == "pubsub.googleapis.com/Topic" )' | config-connector bulk-export
Exportar um inventário com o Config Connector
A ferramenta config-connector bulk-export
pode exportar recursos de uma Google Cloud
hierarquia de recursos.
Exportar o projeto
Para exportar todos os recursos do seu projeto, use o parâmetro --project
.
config-connector bulk-export --project PROJECT_ID
Substitua PROJECT_ID
pelo seu Google Cloud projeto.
Exportar a sua pasta
Para exportar todos os recursos de uma pasta, use o parâmetro --folder
.
config-connector bulk-export --folder FOLDER_NUMBER
Substitua FOLDER_NUMBER
pelo Google Cloud número da pasta.
Exportar a sua organização
Para exportar todos os recursos da sua organização, use o parâmetro --organization
.
config-connector bulk-export --organization ORGANIZATION_ID
Substitua ORGANIZATION_ID
pelo ID da sua Google Cloud organização.
Localização do Cloud Storage
A localização de saída da exportação do inventário de recursos é um URI do Cloud Storage. Quando
config-connector bulk-export
faz uma exportação, usa um contentor do
Cloud Storage. Por predefinição, config-connector bulk-export
cria um contentor temporário. Também pode especificar o nome do contentor.
Contentor temporário do Cloud Storage
Se não fornecer o parâmetro --storage-key
, o config-connector
bulk-export
cria um contentor do Cloud Storage temporário em seu nome. O contentor é criado na localização predefinida para contentores de armazenamento: a US
multirregião. O contentor é eliminado quando a exportação estiver concluída.
Especificar um segmento temporário
Para especificar um contentor, use um URI do Cloud Storage com o parâmetro storage-key
. Se o URI for apenas o nome do contentor, é gerado um nome para o objeto de armazenamento de exportação. Se o URI for um caminho completo para um objeto de armazenamento,
é usado o caminho completo.
config-connector bulk-export --storage-key gs://BUCKET_NAME
Resultado
O resultado do comando config-connector bulk-export
são recursos do Config Connector no formato YAML. Por predefinição, o ficheiro YAML é escrito em STDOUT. Pode direcionar o resultado dos recursos para ficheiros com a opção output
.
Produção num único ficheiro
Quando define o parâmetro --output
, config-connector bulk-export
escreve os respetivos resultados num único ficheiro se uma das seguintes condições for verdadeira:
- O ficheiro especificado por
output
existe e é um ficheiroregular
. - O ficheiro especificado por
output
não existe, mas o diretório principal representado poroutput
existe.
Produza um ficheiro num diretório
config-connector
escreve os respetivos resultados em vários ficheiros quando o parâmetro --output
é um diretório que termina com um /
. config-connector bulk-export
cria um ficheiro por recurso e os nomes dos ficheiros correspondem aos nomes dos recursos.
config-connector bulk-export --project PROJECT_ID --on-error continue --output OUTPUT_DIRECTORY/
Substitua PROJECT_ID
pelo seu Google Cloud projeto.
Por exemplo, para gerar recursos do projeto my-project
para o diretório sample
, execute o seguinte comando:
config-connector bulk-export --project my-project --on-error continue --output sample/
Opções da linha de comandos
O comando config-connector bulk-export
tem as seguintes opções:
config-connector bulk-export
--input FILENAME \
--output FILENAME \
--storage-key gs://BUCKET_NAME \
--project PROJECT_ID \
--folder FOLDER_NUMBER \
--organization ORGANIZATION_ID \
--oauth2-token TOKEN \
--on-error [halt | continue | ignore] \
--iam-format [policy | policymember | none] \
--filter-deleted-iam-members [true | false] \
--verbose
--input
: ficheiro de entrada do Cloud Asset Inventory.--output
: um caminho de ficheiro de saída opcional que desativa a saída padrão. Quando é um ficheiro, o resultado contém toda a saída do comando; quando é um diretório, o diretório contém um novo ficheiro para cada recurso na saída.--storage-key
: contentor do Cloud Storage temporário de destino para exportação.--project
: Google Cloud ID do projeto a exportar--folder
: Google Cloud ID da pasta a exportar--organization
: Google Cloud ID da organização a exportar.--oauth2-token
: um token OAUTH2 como a Google Cloud identidade. Por predefinição, oconfig-connector
usa as credenciais predefinidas da CLI Google Cloud.--on-error
: controla o comportamento quando ocorre um erro recuperável. As opções são "continue", "halt" ou "ignore".halt
: parar a execução em caso de erro (predefinição)continue
: continuar a processar recursos, imprimir o erro para STDERRignore
: continue a processar recursos e não imprima o erro
--iam-format
: especifica o tipo de recursos do IAM gerados com a sua exportação. As opções sãopolicy
(predefinição),policymember
ounone
.--filter-deleted-iam-members
: especifica se os diretores do IAM eliminados devem ser filtrados. As opções sãotrue
oufalse
. O valor predefinido éfalse
.--verbose
: ativa o registo verboso.
O que se segue?
- Leia sobre como o Config Connector adquire recursos Google Cloud existentes
- Saiba mais sobre o Cloud Asset Inventory e a exportação de recursos para o Cloud Storage.
- Saiba mais sobre os recursos que o Config Connector suporta.