ืืื ืืืึธืื ืืื ืฆื ืืขืจืฆืืืื ืืืจ ืืืขืื ืื ื ืืึทืข CLI ืืขืฆืืึทื ืืืึธืก ืืื ืืขืฉืจืืื ืฆื ืกืึธืืืืข ืึทื ืึทืื ืคึผืจืึธืืืขื.
ืคึผืจืึธืืืขื
Terraform ืืื ืืึทื ื ืฉืืื ืึท ื ืึธืจืืึทื ืืื ืื ืืขืืืึธืคึผืก / ืงืืึธืื / ืขืก ืงืื. ืื ืืึทื ืืื ืืืืขืจ ืืึทืงืืืขื ืืื ื ืืฆืืง ืคึฟืึทืจ ืืืืื ื ืืื ืื ืคืจืึทืกืืจืึทืงืืฉืขืจ ืืื ืงืึธื. ืขืก ืืขื ืขื ืคืืืข ืืืืืืฅ ืืื ืืขืจืจืึทืคืึธืจื ืืื ืคืืืข ืคืึธืจืงืก, ืฉืึทืจืฃ ื ืืืืื ืืื ืจืืืงืขืก.
ืืื Terraform ืขืก ืืื ืืืืขืจ ืืึทืงืืืขื ืฆื ืฉืึทืคึฟื ื ืืึทืข ืืื ืื ืืื ืืขืจื ืึธื ืคืืจื, ืืืืฉื ืึธืืขืจ ืืืกืืขืงื ืืื. ืืืึธืก ืืึธื ืื ืืืืก ืืึธืื ืึท ืจืืืืง ืื ืคืจืึทืกืืจืึทืงืืฉืขืจ ืืื ืื ืืืึธืืงื ืืื ื ืืฉื ืืืฉืืคื ืืืจื Terraform ืืึธื? ืจืืจืืืืื ื ืืื ืฉืืึทืขื-ืฉืืคื ืื ืืื ืฆืข ืืืึธืืงื ืืื ืขืคืขืก ืืืึทืขืจ ืืื ืึทื ืกืืืฃ.
ืืื ืืขืคึผืืึธื ืืขืจื ืืขื ืคึผืจืึธืืืขื ืืื 2 ืืืฉืึธืืก, ืื ืกืืืคึผืืึทืกื ืืืืฉืคึผืื ืืื ืืืขื ืืืจ ืืืืื ืึทืืฅ ืฆื ืืืื ืืื ืืื ืืื ืื ืคืึธืจืขื ืคืื ืืขืจืจืึทืคืึธืจื ืืขืงืขืก, ืึธืืขืจ ืืืจ ืืึธืื 250 + ืืึทืงืึทืฅ ืืื ืขืก ืืื ืคืื ืฆื ืฉืจืืึทืื ืืื ืืื ืืขืจืคืึธืจื ืืื ืืึทื ื.
ืขืก ืื ืคืึทืจืึทื
ืืื ืึทืืืขืืืื, ืึทืืฅ ืืื ืืื ืืื ืื ืืืื ื ืึธืจ ืคึฟืื ืจืขืื ืฆื ืืื ืงืก
ืืืึธืจื ืื ืื: ืืขืจ ืืืืจ ืืขืื ื ืื ืืื ืจืืกืืึทื ื ืึท ืืึทืื ืืขืื ืืื ืฉืจืฒึทืื ืืืืื ืืง ืืืืฃ ืจืืกืืฉ. ืืื ืืืื ืคืื ืืืืกืืืื ืขืจืจืึธืจืก.
ืกืึทืืืฉืึทื ื
1. ืขืก ืืขื ืขื ืคืึทืจืืืง ืืื ืึทืื ืกืึทืืืฉืึทื ื ืคึฟืึทืจ AWS
ืืื ืืขืจืจืึทืคืึธืจืืื ื ืึทืจืืขื: ืขืก ื ืขืื ืืึทืื ืคืื ืื AWS SDK ืืื ืืืฉืขื ืขืจืืืฅ tf ืืื tfstate ืืืจื ืึท ืืืกืืขืจ.
ืขืก ืืขื ืขื 3 ืคึผืจืึธืืืขืืก ืืึธ:
1. ืขืก ืืืขื ืฉืืขื ืืืง ืืืื ืึท ืึธืคึผืฉืืื ืืื ืืขืจืืืึทื ืืืงืื ืืขื
2. ืืฃ ืืขืงืขืก ืืื ืงืืืขื ืืืืก ืฆืขืืจืืื
3. tfstate ืืื ืืขืืืืื ืกืขืคึผืขืจืึทืืื ืคืื tf ืืื ืืื ื ืืฉื ืฉืืขื ืืืง ืงืึทื ืืืขืจืืืฉ
ืืื ืึทืืืขืืืื, ืขืก ืืื ืฉืืืขืจ ืฆื ืืึทืงืืืขื ืึท ืจืขืืืืืึทื ืืื ืืืึธืก `ืืขืจืคืึธืจื ืคึผืืึทื` ืืืื ืึทื ืขืก ืืขื ืขื ืงืืื ืขื ืืขืจืื ืืขื
2. 'ืืขืจืจืึทืคืึธืจื ืืืคึผืึธืจื' ืืื ืึท ืืขืืืื-ืืื ืืึทืคึฟืขื ืืื ืืขืจืจืึทืคืึธืจื. ืืืืืืื ืืจืืืื ืขืก?
ืืืจ ืฉืจืืึทืื ืึท ืืืืืืง ืืฃ ืืขืงืข ืืื ืื ื ืึธืืขื ืืื ืืืคึผ ืคืื ืืืื, ืืึทื ืืืืคื 'terraform ืืืคึผืึธืจื' ืืื ืคืึธืจื ืื ืืืื ืฉืืึทื. ืืขืจืจืึทืคืึธืจื ืงืึธื ืืึทืงื ืื ืฉืคึผืืึทืืขืจ, ื ืขืื ืื ืืึทืื ืืื ืืืื ืึท tfstate ืืขืงืข.
ืขืก ืืขื ืขื 3 ืคึผืจืึธืืืขืืก ืืึธ:
1. ืืืจ ืืึทืงืืืขื ืืืืื ืึท tfstate ืืขืงืข, ืืื ืื tf ืืื ืืืืืืง, ืืืจ ืืึทืจืคึฟื ืฆื ืฉืจืืึทืื ืขืก ืืึทื ืืืึทืื ืึธืืขืจ ืืขืจ ืขืก ืคึฟืื tfstate
2. ืงืขื ืขื ื ืึธืจ ืึทืจืืขืื ืืื ืืืื ืืืื ืืื ืึท ืฆืืึทื ืืื ืืื ื ืืฉื ืฉืืืฆื ืึทืืข ืจืขืกืืจืกื. ืืื ืืืึธืก ืืึธื ืืื ืืึธื ืืืืืขืจ ืืื 250 + ืืึทืงืึทืฅ?
3. ืืืจ ืืึทืจืคึฟื ืฆื ืืืืกื ืื ืฉืืึทื ืคืื ืื ืจืขืกืืจืกื - ืืึธืก ืืื, ืืืจ ืืึทืจืคึฟื ืฆื ืืึทื ืืืืงืืขื ืขืก ืืื ืงืึธื ืืืึธืก ืืึทืงืืืขื ืื ืจืฉืืื ืคืื ืจืขืกืืจืกื
ืืื ืึทืืืขืืืื, ืืขืจ ืจืขืืืืืึทื ืืื ืคึผืึทืจืืืืืฉ ืืื ืืื ื ืืฉื ืืืึธื ืืขืืื ื
ืืืื ืืึทืฉืืืก
ืจืขืงืืืืจืขืืขื ืฅ:
1. ืคืืืืงืืึทื ืฆื ืฉืึทืคึฟื TF ืืื tfstate ืืขืงืขืก ืคึฟืึทืจ ืจืขืกืืจืกื. ืคึฟืึทืจ ืืืึทืฉืคึผืื, ืืจืืคืงืืคืืข ืึทืืข ืื ืืึทืงืึทืฅ / ืืืืขืจืืืื ืืจืืคึผืข / ืืึทืกืข ืืึทืืึทื ืกืขืจ ืืื ืึทื 'ืืขืจืจืึทืคืึธืจื ืคึผืืึทื' ืืึธื ืืืืืขืงืขืจื ืึทื ืขืก ืืขื ืขื ืงืืื ืขื ืืขืจืื ืืขื
2. ืืืจ ืืึทืจืคึฟื 2 GCP + AWS ืืืืืงื ืก
3. ืืืืืืืข ืืืืืื ื ืืืึธืก ืืื ืืจืื ื ืฆื ืืขืจืืืึทื ืืืงื ืืขืืขืจ ืืึธื ืืื ืืื ื ืืฉื ืืืืกื ืฆืืื ืืืืฃ ืืขืืขืจ ืืืื ืคึฟืึทืจ 3 ืืขื ืคืื ืึทืจืืขื
4. ืืึทืื ืขืก ืขืคึฟื ืืงืืจ - ืึทืืขืืขื ืืื ืื ืืขืืืข ืคึผืจืึธืืืขื
ืื Go ืฉืคึผืจืึทื ืืื ืืืึธืก ืืื ืืืืข ืขืก, ืืื ืขืก ืืื ืึท ืืืืืืึธืืขืง ืคึฟืึทืจ ืงืจืืืืืื ื HCL ืืขืงืขืก ืืืึธืก ืืื ืืขื ืืฆื ืืื ืืขืจืจืึทืคืึธืจื + ืึท ืคึผืืึทืฅ ืคืื ืงืึธื ืืื ืืขืจืจืึทืคืึธืจื ืืืึธืก ืงืขื ืขื ืืืื ื ืืฆืืง
ืืืขื
ืขืจืฉืืขืจ ืคึผืจืืืื
ืืื ืื ืืขืืืืื ืืื ืึท ืคึผืฉืื ืืืขืจืกืืข. ืงืึธื ืืึทืงื ืื ืืืึธืืงื ืืืจื ืื SDK ืคึฟืึทืจ ืื ืคืืจืืื ืื ืืืื ืืื ืงืึทื ืืืขืจืืื ื ืขืก ืืื ืคืขืืืขืจ ืคึฟืึทืจ ืืขืจืจืึทืคืึธืจื. ืืขืจ ืคึผืจืืืื ืืื ืืขืฉืืึธืจืื ืืืืื ืืืืฃ ืื ืืืืขืจืืืื ืืจืืคึผืข ืืืืึทื ืืื ืืึธื ื ืืฉื ืืื ืื 1.5 ืืขื ืฆื ืืืึทืื ืืืืื ืื ืืืืขืจืืืื ืืจืืคึผืข (ืืื ืขืก ืืขื ืขื ืึท ืคึผืืึทืฅ ืคืื ืจืขืกืืจืกื). ืคึฟืึทืจ ืึท ืืึทื ื ืฆืืึทื ืืื ืืขืืึธืื ืคืขืืืขืจ ืงืขื ืขื ืืืื ืืขืืืื / ืฆืืืขืืขืื
ืฆืืืืืืข ืคึผืจืืืื
ืืึทืืืจื ืืืืฃ ืืขื ืืขืืึทื ืง ืืืกืงืจืืืื
ืืืฆื ืืึธืืืจ ืืึธื ืื ืจืขืงืืจืกืืืืข ืคึผืึธืจื ืึธืืจืึทืคื ืคืื ืฉืจืืืื ืึท ืงืึทื ืืืขืจืืขืจ ืคึฟืึทืจ tfstate ืฆื tf. ืคึฟืึทืจ ืื ืืืืก ืืึธืื ืงืืื ืืึธื ืืืืขื ืขื tfstate, ืขืก ืืื JSON, ืึธืืขืจ ืกืคึผืขืฆืืขื.
ืืึธ ืืื ืืืึทื ืืืืืืืง ืืืื ืึทืืจืืืืืฅ
"attributes": {
"id": "default/backend-logging-load-deployment",
"metadata.#": "1",
"metadata.0.annotations.%": "0",
"metadata.0.generate_name": "",
"metadata.0.generation": "24",
"metadata.0.labels.%": "1",
"metadata.0.labels.app": "backend-logging",
"metadata.0.name": "backend-logging-load-deployment",
"metadata.0.namespace": "default",
"metadata.0.resource_version": "109317427",
"metadata.0.self_link": "/apis/apps/v1/namespaces/default/deployments/backend-logging-load-deployment",
"metadata.0.uid": "300ecda1-4138-11e9-9d5d-42010a8400b5",
"spec.#": "1",
"spec.0.min_ready_seconds": "0",
"spec.0.paused": "false",
"spec.0.progress_deadline_seconds": "600",
"spec.0.replicas": "1",
"spec.0.revision_history_limit": "10",
"spec.0.selector.#": "1",
ืขืก ืืื:
1. ืฉืืจืืงื
2. ืืขืืึทืืึทืืึท - ืึท ืืขื ืืข ืคืื โโืืจืืืก 1 ืืื ืืื ืขืก ืึท ืืืืคืขืฅ ืืื ืคืขืืืขืจ ืืืึธืก ืืื ืืืกืงืจืืืื ืืื ืื
3. ืกืคึผืขืง - ืืึทืฉ ืคืื ืืจืืืก 1 ืืื ืฉืืืกื, ืืืขืจื ืืื ืขืก
ืืื ืงืืจืฅ, ืึท ืฉืคึผืึทืก ืคึฟืึธืจืืึทื, ืึทืืฅ ืงืขื ืขื ืืืื ืขืืืขืืข ืืขืืืขืืก ืืืฃ
"spec.#": "1",
"spec.0.min_ready_seconds": "0",
"spec.0.paused": "false",
"spec.0.progress_deadline_seconds": "600",
"spec.0.replicas": "1",
"spec.0.revision_history_limit": "10",
"spec.0.selector.#": "1",
"spec.0.selector.0.match_expressions.#": "0",
"spec.0.selector.0.match_labels.%": "1",
"spec.0.selector.0.match_labels.app": "backend-logging-load",
"spec.0.strategy.#": "0",
"spec.0.template.#": "1",
"spec.0.template.0.metadata.#": "1",
"spec.0.template.0.metadata.0.annotations.%": "0",
"spec.0.template.0.metadata.0.generate_name": "",
"spec.0.template.0.metadata.0.generation": "0",
"spec.0.template.0.metadata.0.labels.%": "1",
"spec.0.template.0.metadata.0.labels.app": "backend-logging-load",
"spec.0.template.0.metadata.0.name": "",
"spec.0.template.0.metadata.0.namespace": "",
"spec.0.template.0.metadata.0.resource_version": "",
"spec.0.template.0.metadata.0.self_link": "",
"spec.0.template.0.metadata.0.uid": "",
"spec.0.template.0.spec.#": "1",
"spec.0.template.0.spec.0.active_deadline_seconds": "0",
"spec.0.template.0.spec.0.container.#": "1",
"spec.0.template.0.spec.0.container.0.args.#": "3",
ืืื ืึทืืืขืืืื, ืืืื ืืืขืจ ืขืก ืื ืืืื ืึท ืคึผืจืึธืืจืึทืืืื ื ืคึผืจืึธืืืขื ืคึฟืึทืจ ืึทื ืืื ืืขืจืืืื, ื ืึธืจ ืคืจืขืื ืืื ืฆื ืฉืจืืึทืื ืึท ืคึผืึทืจืกืขืจ ืคึฟืึทืจ ืืขื ืึทืจืืขื :)
ื ืึธื ืคืืืข ืคืจืืืื ืฆื ืฉืจืืึทืื ืึท ืคึผืึทืจืกืขืจ ืึธื ืืึทืื, ืืื ืืขืคึฟืื ืขื ืืืื ืคืื ืขืก ืืื ืื ืืขืจืจืึทืคืึธืจื ืงืึธื, ืืื ืื ืืขืจืกื ืืืืืืืง ืืืื. ืืื ืึทืืฅ ืกืืื ืฆื ืึทืจืืขืื ืคืืึทื
ืคึผืจืืืื ืืจืื
ืืขืจืจืึทืคืึธืจื ืคึผืจืึทืืืืืืขืจื ืืขื ืขื ืืื ืึทืจืืขืก ืืืึธืก ืึทื ืืืึทืืื ืงืึธื ืืื ืึทืืข ืื ืจืขืกืืจืกื ืืื ืืึธืืืง ืคึฟืึทืจ ืืจืืขืื ืืื ืื ืืืึธืืงื ืึทืคึผื. ืืขืืขืจ ืืืึธืืงื ืืื ืืืื ืืืืืขื ืข ืฉืคึผืืึทืืขืจ ืืื ืืขืจืจืึทืคืึธืจื ืืื ืืืืื ืจืืคื ืืื ืืืจื ืืืื RPC ืคึผืจืึธืืึธืงืึธื ืฆืืืืฉื ืฆืืืื ืคึผืจืึทืกืขืกืึทื.
ืืืฆื ืืื ืืึทืฉืืึธืกื ืฆื ืงืึธื ืืึทืงื ืืขืจืจืึทืคืึธืจื ืคึผืจืึทืืืืืืขืจื ืืืืึทื ืืืจื RPC ืจืืคื. ืขืก ืคืืจืงืขืจื ืืืืก ืืืืืึทืคืื ืืื ืืขืืืื ืขืก ืืขืืืขื ืฆื ืืืืฉื ืืขืจืจืึทืคืึธืจื ืคึผืจืึทืืืืืืขืจื ืฆื ื ืืึทืขืจ ืึธื ืขืก ืืื ืืึทืงืืืขื ื ืืึท ืคึฟืขืึดืงืืืื ืึธื ืืฉืึทื ืืื ื ืื ืงืึธื. ืขืก ืงืืื ืืืื ืืืืก ืื ื ืืฉื ืืืข ืคืขืืืขืจ ืืื tfstate ืืืื ืืืื ืืื tf, ืืืขืจ ืืืืืืื ืงืขื ืืขื ืขืก ืืขืจืืืืกื? ื ืึธืจ ืคืจืขืื ืืืื ืฉืคึผืืึทืืขืจ ืืืขืื ืืขื. ืืขืจื ืึธื ืืึธื ืืื ืึธื ืืขืืืืื ืึทื ืึทื ืืขืจ ืจืขืงืืจืกืืืืข ืคึผืึธืจื ืึธืืจืึทืคืืข ืคึฟืื ืฆืื ืืืคึฟืฉืืขืื ืจืขืืืืขืจืข ืืืืกืืจืืงื, ืืืื ืคึฟืขืืืขืจ ืืื ืืขืจ ืืคึฟืกืืึทืืข ืืื ืึทืืข ืฉืืึทืคึผื ืืื ืืืฃ.
ืืื ืื ืกืืฃ, ืืืจ ืืึธืื ืึท ื ืืฆืืง CLI ืืขืฆืืึทื ืืืึธืก ืืื ืึท ืคึผืจืึธืกื ืื ืคืจืึทืกืืจืึทืงืืฉืขืจ ืคึฟืึทืจ ืึทืืข ืืขืจืจืึทืคืึธืจื ืคึผืจืึทืืืืืืขืจื ืืื ืืืจ ืงืขื ืขื ืืืืื ืืืืื ืึท ื ืืึทืข. ืืืื, ืึทืืื ื ืจืขืกืืจืกื ื ืขืื ืงืืืื ืงืึธื. ืคึผืืืก ืึทืืข ืกืึธืจืฅ ืคืื ืืืืื ืึทืืึท ืืื ืงืึทื ืขืงืฉืึทื ื ืฆืืืืฉื ืจืขืกืืจืกื. ืคืื ืงืืจืก, ืขืก ืืขื ืขื ืืขืืืขื ืคืืืข ืคืึทืจืฉืืืขื ืข ืคืจืืืืขืืขื ืืืึธืก ืงืขื ืขื ื ืื ืืืื ืืืกืงืจืืืื ืึทืืข.
ืืื ืืขืืืืกื ืื ืืืึทืข ืืขืจืจืึทืคืึทืืขืจ.
ืคืื ืึทืืข
ืืื Terrafomer, ืืืจ ืืืฉืขื ืขืจืืืืึทื 500-700 ืืืืื ื ืฉืืจืืช ืคืื tf + tfstate ืงืึธื ืคึฟืื ืฆืืืื ืืืืืงื ืก. ืืืจ ืืขื ืขื ืืืืืืช ืฆื ื ืขืืขื ืืขืืึทื ืืื ืื ืืื ืึธื ืืืืื ืจืืจื ืืืง ืืื ืืืืื ืืืจื ืืขืจืจืึทืคืึธืจื, ืืื ืืื ืืขืจ ืืขืกืืขืจ ืื ืคืจืึทืกืืจืึทืงืืฉืขืจ ืืื ืงืึธื ืืขืืื ืงืขื. ืขืก ืืื ื ืึธืจ ืืึทืืืฉ ืืืขื ืืืจ ื ืขืืขื ืึท ืจืืืืง ืืืึธืืงื ืืื ืืึทืงืืืขื ืขืก ืืืจื ืึท ืืึทื ืฉืึทืคึฟื ืืื ืื ืคืึธืจืขื ืคืื ืืขืจืจืึทืคืึธืจื ืึทืจืืขื ืืขืงืขืก. ืืื ืืขืืึธืื grep/replace/git ืืื ืึทืืื ืืืืฃ.
ืืื ืืื ืขืก ืืจืืืกืืขืงืขืื ืืื ืขืก ืฆืืืขืฉืืขืื, ืืืงืืืขื ืจืฉืืช. ืคืจืื ืืืืฃ GitHub ืคึฟืึทืจ ืึทืืขืืขื ืืืืฃ ืืื ืขืจืฉืืื (02.05.19/XNUMX/XNUMX).
ืฉืืื ืืืงืืืขื 600 ืฉืืขืจื, 2 ืฆืืขื ืจืืงืืืขืก ืคึฟืึทืจ ืึทืืื ื ืฉืืืฆื ืคึฟืึทืจ ืึธืคึผืขื ืกืืึทืง ืืื ืงืืืขืจื ืขืืขืก. ืืื ืืึทืืขืจืงืื ืืขื. ืืื ืึทืืืขืืืื, ืื ืคึผืจืืืขืงื ืืื ื ืืฆืืง ืคึฟืึทืจ ืืขื ืืฉื
ืืื ืจืขืงืึธืืขื ืืืจื ืึทืืขืืขื ืืืืก ืืืื ืฆื ืึธื ืืืืื ืืจืืขืื ืืื Terraform ืืื ื ืืฉื ืจืืจืืื ืึทืืฅ ืคึฟืึทืจ ืืขื.
ืืื ืืืขื ืืืื ืฆืืคืจืืื ืฆื ืฆืืขื ืจืืงืืืขืก, ืืฉืื, ืฉืืขืจื.
ืืขืืึธ
ืืงืืจ: www.habr.com