αααα»αα
ααααααΆααα’αααα’αααΈα§ααααα CLI ααααΈααααααα»αααΆααααααααΎααααΈαααααααΆααααα αΆα
αΆααα
αααα αΆ
Terraform ααΊααΆαααααααΆαααΆααΌαααα αΎααα
αααα»ααα αααα Devops/Cloud/IT α ααΏααααααΊααΆαααΆαααΆααααα½α αα·αααΆααααααααααααααΆααααΆααααααααΆαααΆαα½αααΉαα αααααΆαα
ααΆααααααααααΆααΌαα ααΆαααΆαααΈαααΆαααΆα
αααΎααα
αααα»α Terraform ααααΌα
ααΆααααΆα
αααΎα ααΆααα·ααα»ααααα½α
αα·ααα»ααα½α
α
ααΆαα½α Terraform ααΆααΆααααα½αααΆαααααα»αααΆααααααΎαααααααααΈ α αΎααααααΆααααααααααααα ααααΆααααααΌα α¬αα»ααα½αααΆα ααΎα’ααααααααΆαα αααααΆαα
ααΆαααααααααααααα
αααα»αααα αα·ααα·αααααΌαααΆααααααΎαααΆαααα Terraform αα½αααααΎα’αααΈ? ααΆααααααα‘αΎααα·α αα·ααααααΎααααααΆααααΌαα‘αΎααα·αααΊααΆαααααααααα αα·αααααΆααα»ααααα·ααΆαα
αααα»αααΆααα½αααααααααα αΆααααα
2 ααΆαααΆα α§ααΆα αααααΆαααααααα»αααΊαα
ααααααα’αααα
ααα±ααα’αααΈαααΆααα’αααα
αααα»α Git αααα»αααααααααΆα―αααΆα terraform ααα»ααααα’αααααΆα 250+ ααΆαααα»αα αΎαααΆα
αααΎαααΆαααααα»αααΆααααααααΆαα
αααα»α terraform αααααα
ααΆα
ααΆααΌαα
α’αααΈααααααααΆαααΊααΌα
αα
αααα»αααΌαααΆαααααΈααααΆααα
αααααααα»αααααα
ααΆααααααΆα: α’ααααα·αααααα·αααααα αααα»ααααααααα»αααααΈαααααΆααααΆαααααααΆαααΈαα·αααααααΆααα αΎαααααααα·α αα½α ααΆααΆααΆαα»ααααΈα ααααααααα ααααααα α»αα’αααααΆαα·αα»αααα
αααααααααΆα
1. ααΆααααααααααΆααααααααααα½α
ααΆααααα
αα·αα
αΆαααααααΆαα AWS
ααααααα terraforming ααααΎαααΆαα ααΆαααα·ααααααααΈ AWS SDK α αΎααααααΎα tf αα·α tfstate ααΆααααααααΌαα½αα
ααΆααααα αΆ 3 αα
ααΈαααα
1. αααααααΆαααΆαααΊααααΆααααα»αααΆαααααΎαα
αα
α»ααααααααΆα
2. α―αααΆα tf αααααααα
ααααααΌα
3. tfstate ααααΌαααΆααααααΌααααα‘ααααΈ tf α αΎααα·αααααααααα
αΌαααααΆααα
ααΆααΌαα
ααΆαα·ααΆααααα»αααΆαααα½αααΆαααααααααα 'αααααΆααααααααααΈ' αα·ααΆαααΆαα·αααΆαααΆαααααΆααααααΌαααα
2. `terraform import` ααΊααΆααΆααααααααΆαααααααΆααααααΆαα½ααα
αααα»α terraformα ααΎβααΆβααααΎαααΆαβαααΆαβααΌα
ααααα
?
α’ααααααααα―αααΆα TF ααααααααΆαααααα αα·αααααααααααααΆα αααααΆααααααααΎαααΆα `terraform import` α αΎαααααααΆααααααααααΆααααααΆαα terraform ααΆααααα’ααααααααααααΆ ααα½ααα·αααααα αα·ααααααΎαα―αααΆα tfstate α
ααΆααααα αΆ 3 αα
ααΈαααα
1. ααΎαααα½αααΆαααα―αααΆα tfstate α αΎα tf ααΊααα α’αααααααΌααααααααΆααααα α¬αααααααααΆααΈ tfstate
2. α’αΆα
ααααΎααΆαααΆαα½αααααΆααα½ααααα»αααααααα½α αα·ααα·αααΆααααααααΆαααΆααα’ααα α αΎαααΎαααα»ααα½αααααΎα’αααΈαααααααααΆαα½α 250+ αα»α?
3. α’αααααααΌαααΉαααΈ ID ααααααΆα - αααααΊα’αααααααΌααα»αααΆαα
αααα»αααΌααααααα½αααΆααααααΈααααΆαα
ααΆααΌαα
ααααααααΊααααααααα αα·ααα·αααΆαααΆαααααααΆαααα’ααα
ααΆααααααα
α
α·ααααααααααα»α
αααααΌαααΆαα
1. αααααααΆααααα»αααΆααααααΎαα―αααΆα tf αα·α tfstate αααααΆααααααΆαα α§ααΆα ααα ααΆααααα»α/αααα»ααα»ααααα·ααΆα/α§ααααααααα»ααα»αααααΆαααΆααα’αα α αΎα 'αααααΆααααααααααΈ' ααΆααααα‘αααααα·αααΆαα·αααΆαααΆαααααΆααααααΌαααα
2. α’αααααααΌαααΆαααα 2 GCP + AWS
3. αααααααααΆαααααααααΆααααα½αααααΎαα
αα
α»ααααααααΆαααΆααααα αα·ααα·αααααααααΆααααααααΆααΎααααΆαααΈαα½αααααααΆαααααααα 3 ααααααααΆαααΆα
4. ααααΎα±ααααΆααααΆαααΆαααααααΎαα
αα - ααα»ααααααααααααΆααΆααααα αΆααΌα
ααααΆα
ααΆααΆ Go ααΊααΆααΌαα ααα»ααααααα»αα αΌαα α·αααααΆ α αΎαααΆααΆααααααΆααααααααΆαααααααΎαα―αααΆα HCL αααααααΎαααα»α terraform + ααΌαααΆα αααΎααα αααα»α terraform αααα’αΆα ααΆααααααααα
ααααΌα
ααΆαααα»ααααααααΌα
αααα»αα
αΆααααααΎαααΆαα½αααααααΆααααα ααΆαααααααααΆαααα SDK αααααΆααααααΆααααααααΌαααΆα α αΎααααααααααΆαα
ααΆααΆααααααΆαα terraform α ααΆαααα»αααααααααΆαααααΆααααααΆααα
αααααααα»αααααα·αα»α αααααΆααααααα»ααα·αα
αΌαα
α·ααααααααα 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. spec - hash of size 1 and key, value in it
αα·ααΆαα±ααααααΈ αααααααααααΆα α’αααΈααααααααΆαα’αΆα
αααα
αααααααα·αααΆα
αααΎαα
"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",
ααΆααΌαα
ααααα·αααΎα’αααααΆααααΆααα
ααααΆααααα αΆααααααααααα·ααΈαααααΆααααΆααααααΆααα ααααΆαααααα»αα±αααα½αααααααα parser αααααΆαααα·α
αα
ααΆαααα :)
αααααΆααααΈααΆαααααΆααΆαααΆα
αααΎαααΎααααΈααααα parser αααααααΆαααα α»α αααα»αααΆαααααΎααααααααααααΆαα
αααα»αααΌα terraform αα·αααΆαααααααααΆαααααα»αα α αΎαα’αααΈαα αΆααααΌα
ααΆααααΎαααΆαααα’α
ααααΆααΆαααΈ
α’αααααααα terraform ααΊααΆαααααααααααααΈααααααΆαααΌαααΆαα½αααΉαααααΆα αα·ααααααα·ααααΆααΆααα’αααααααΆααααααΎααΆαααΆαα½α cloud API α αααααΈαα½ααααΆαα’ααααααααααααΆααααΆαααααα½α α αΎα terraform αααα½αααΆααααΆααααα α
αα½αααααΆαααααα·ααΈααΆα RPC ααααααΆαααΆαααααΎαααΆαααΈαα
α₯α‘αΌαααααααα»αααΆααααααα
α
α·αααααΆααααα’αααααααα terraform αααααααΆααααΆααααααΆαα α
RPC α ααΆααααα
αααααΆααααααααα’αΆα αα·αααααΎα±ααααΆα’αΆα
ααααΆααααααΌαα’ααααααααααααΆ terraform αα
ααΆααα’αααααααΈααΆαααα αα·αααα½αααΆααα»αααΆαααααΈαααααα·αα
αΆαααΆα
αααααΆααααααΌααααααΌαα ααΆαααααα αΆααααααααΆαα·αααααααααααΆαααΆααα’αααα
αααα»α tfstate αα½ααααααα·ααα
αααα»α tf ααααα ααα»ααααααΎα’αααα’αΆα
ααααΎααααααααααΆ? ααααΆαααααα½αα’ααααααααααααΆααααα’αααα’αααΈαααα αΆαααα αααααΆααααααΌαααΆαα’αΆαα’αΆααΆααααααΎαα‘αΎααααααααααΆααααααΌααααα»αααααααααααααΆααΆαα
αΆααααααΎα ααααααααααααΆααα
ααΆααααα»α tfstate αα
αααααααααα·ααααΆααααΈααααα
α
αα
ααΈαααα
αα ααΎαααα½αααΆαα§ααααα CLI ααααΆααααααααααααααΆαα αααααΆαα
ααΆααααααααααΌαα
αααααΆααα’ααααααααααααΆ terraform ααΆααα’αα α αΎαα’αααα’αΆα
ααααααα§αααααααααΈαα½ααααΆαααΆααααα½αα ααααα ααΆαααααααααααΆαααααΌαααΆααααααΌααα·α
αα½α
α ααΌαβαα½αβααΆααβααααααβααβααΆαβααα’βααΌα
βααΆβααΆαβαααααΆααβαααΆαβααααΆαβα ααΆααΆααα·αααΆαα ααΆααααα αΆααααααααααΆααΆα
αααΎα ααααα·αα’αΆα
αα·αααααΆααΆαααΆααα’ααα
αααα»αααΆαααΆαααααααααααααΆ Terrafomer α
α α»αααααα
αααααααΎ Terrafomer ααΎαααΆααααααΎα 500-700 ααΆαααααααΆααααααΌα tf + tfstate ααΈαααααΈαα ααΎαβα’αΆα βααβααααα»βαααβααΆαβααααααααβααβα αΎαβα αΆααβααααΎαβαααβααΆβααΆαβααβααΆαβαααβααΆαβααααΎβααααβααΈ ααΌα βααΆβαα βαααα»αβα αααααΆαα ααΆααααααααβααα’βαααα»αβααΆβαααα·αβααΌαα ααΆααααΆααααααΆααααααα αα ααααααα’αααααααααααααα½α α αΎαααα½αααΆααΆαααααααα»ααααα»αααααααααΆα―αααΆααα»ααααα·α terraformα α αΎααααααΆαααα grep/replace/git ααΆααΎαα
αααα»αβαα·αβααΆβα
ααβα αΎαβααΆααβααΆαβααααΆααβαααβααα½αβααΆαβααΆαβα’αα»ααααΆαα ααΆαα
ααααααΆααα
ααΎ GitHub αααααΆααα’αααααΆααααααΆαα
αααααααα ααααα·α (02.05.19/XNUMX/XNUMX) α
ααΆαααα½αααααΆα 600 αα½α
α αΎα ααααΎααΆα 2 αααααΆααααααααααΆαααΆαααααααααΆαα openstack αα·α kubernetes α ααα·αααααα’ααα’α ααΆααΌαα
αααααααααααΆααααααααααααααΆααααα»ααα
αααα»αααααΆαα’ααααααααααααΆαααα
ααα
αΆααααααΎαααααΎααΆαααΆαα½α Terraform α αΎααα»ααααααα‘αΎααα·αααΌαα’αααΈααααααααΆααααααΆααααΏααααα
αααα»αααΉαααΈαααΆααααα»αααΆαααΆαααααΎαααα αΆααααΆαα
ααΆααααα αΆα
ααααα: www.habr.com