ప్రోహోస్టర్ > బ్లాగ్ > పరిపాలన > భవిష్యత్తు కోసం టెర్రాఫార్మ్లో మౌలిక సదుపాయాల వివరణ. అంటోన్ బాబెంకో (2018)
భవిష్యత్తు కోసం టెర్రాఫార్మ్లో మౌలిక సదుపాయాల వివరణ. అంటోన్ బాబెంకో (2018)
చాలా మంది వ్యక్తులు తమ రోజువారీ పనిలో టెర్రాఫార్మ్ను తెలుసుకుంటారు మరియు ఉపయోగిస్తున్నారు, కానీ దాని కోసం ఉత్తమ పద్ధతులు ఇంకా రూపొందించబడలేదు. ప్రతి బృందం దాని స్వంత విధానాలు మరియు పద్ధతులను కనిపెట్టాలి.
మీ ఇన్ఫ్రాస్ట్రక్చర్ దాదాపు సరళంగా ప్రారంభమవుతుంది: కొన్ని వనరులు + కొంతమంది డెవలపర్లు. కాలక్రమేణా, ఇది అన్ని రకాల దిశలలో పెరుగుతుంది. మీరు టెర్రాఫార్మ్ మాడ్యూల్స్లో వనరులను సమూహపరచడానికి, కోడ్ను ఫోల్డర్లుగా నిర్వహించడానికి మార్గాలను కనుగొన్నారా మరియు ఇంకా ఏమి తప్పు కావచ్చు? (ప్రసిద్ధ చివరి మాటలు)
సమయం గడిచిపోతుంది మరియు మీ మౌలిక సదుపాయాలు మీ కొత్త పెంపుడు జంతువుగా మీకు అనిపిస్తాయి, కానీ ఎందుకు? మీరు అవస్థాపనలో వివరించలేని మార్పుల గురించి ఆందోళన చెందుతున్నారు, మీరు అవస్థాపన మరియు కోడ్ను తాకడానికి భయపడుతున్నారు - ఫలితంగా, మీరు కొత్త కార్యాచరణను ఆలస్యం చేస్తారు లేదా నాణ్యతను తగ్గిస్తారు...
గితుబ్లో AWS కోసం టెర్రాఫార్మ్ కమ్యూనిటీ మాడ్యూళ్ల సేకరణను నిర్వహించడం మరియు ఉత్పత్తిలో టెర్రాఫార్మ్ను దీర్ఘకాలికంగా నిర్వహించడం వంటి మూడు సంవత్సరాల తర్వాత, అంటోన్ బాబెంకో తన అనుభవాన్ని పంచుకోవడానికి సిద్ధంగా ఉన్నాడు: TF మాడ్యూల్లను ఎలా వ్రాయాలి, తద్వారా భవిష్యత్తులో ఇది హాని కలిగించదు.
చర్చ ముగిసే సమయానికి, టెర్రాఫార్మ్లోని వనరుల నిర్వహణ సూత్రాలు, టెర్రాఫార్మ్లోని మాడ్యూల్స్తో అనుబంధించబడిన ఉత్తమ అభ్యాసాలు మరియు ఇన్ఫ్రాస్ట్రక్చర్ మేనేజ్మెంట్తో అనుబంధించబడిన కొన్ని నిరంతర ఏకీకరణ సూత్రాలు పాల్గొనేవారికి బాగా తెలుసు.
తనది కాదను వ్యక్తి:ఈ నివేదిక నవంబర్ 2018 నాటిదని నేను గమనించాను—ఇప్పటికే 2 సంవత్సరాలు గడిచిపోయాయి. నివేదికలో చర్చించబడిన Terraform 0.11 సంస్కరణకు మద్దతు లేదు. గత 2 సంవత్సరాలలో, 2 కొత్త విడుదలలు విడుదల చేయబడ్డాయి, ఇందులో చాలా ఆవిష్కరణలు, మెరుగుదలలు మరియు మార్పులు ఉన్నాయి. దయచేసి దీనిపై శ్రద్ధ వహించండి మరియు డాక్యుమెంటేషన్ను తనిఖీ చేయండి.
@antonbabenko - ట్విట్టర్ మరియు విభిన్న స్లాక్స్ల సమూహం
నా పేరు అంటోన్ బాబెంకో. మీలో కొందరు బహుశా నేను వ్రాసిన కోడ్ని ఉపయోగించారు. నేను ఇప్పుడు దీని గురించి గతంలో కంటే ఎక్కువ విశ్వాసంతో మాట్లాడతాను, ఎందుకంటే నాకు గణాంకాలకు ప్రాప్యత ఉంది.
నేను Terraformలో పని చేస్తున్నాను మరియు 2015 నుండి Terraform మరియు Amazonకు సంబంధించిన పెద్ద సంఖ్యలో ఓపెన్ సోర్స్ ప్రాజెక్ట్లలో యాక్టివ్ పార్టిసిపెంట్ మరియు కంట్రిబ్యూటర్గా ఉన్నాను.
అప్పటి నుండి నేను దానిని ఆసక్తికరమైన రీతిలో ఉంచడానికి తగినంత కోడ్ వ్రాసాను. మరియు నేను ఇప్పుడు దీని గురించి మీకు చెప్పడానికి ప్రయత్నిస్తాను.
నేను Terraformతో పని చేసే చిక్కులు మరియు ప్రత్యేకతల గురించి మాట్లాడతాను. కానీ అది నిజంగా హైలోడ్కు సంబంధించిన అంశం కాదు. మరియు ఇప్పుడు మీరు ఎందుకు అర్థం చేసుకుంటారు.
కాలక్రమేణా, నేను టెర్రాఫార్మ్ మాడ్యూల్స్ రాయడం ప్రారంభించాను. వినియోగదారులు ప్రశ్నలు వ్రాసారు, నేను వాటిని తిరిగి వ్రాసాను. అప్పుడు నేను ప్రీ-కమిట్ హుక్ మొదలైనవాటిని ఉపయోగించి కోడ్ను ఫార్మాట్ చేయడానికి వివిధ యుటిలిటీలను వ్రాసాను.
చాలా ఆసక్తికరమైన ప్రాజెక్టులు ఉన్నాయి. నాకు మరియు ప్రోగ్రామర్ కోసం కంప్యూటర్ మరింత ఎక్కువ పని చేయడం నాకు ఇష్టం కాబట్టి నేను కోడ్ జనరేషన్ను ఇష్టపడుతున్నాను, కాబట్టి నేను ప్రస్తుతం విజువల్ రేఖాచిత్రాల నుండి టెర్రాఫార్మ్ కోడ్ జెనరేటర్పై పని చేస్తున్నాను. బహుశా మీలో కొందరు వాటిని చూసి ఉండవచ్చు. ఇవి బాణాలతో అందమైన పెట్టెలు. మరియు మీరు "ఎగుమతి" బటన్ను క్లిక్ చేసి, అన్నింటినీ కోడ్గా పొందగలిగితే అది గొప్పదని నేను భావిస్తున్నాను.
నేను ఉక్రెయిన్ నుండి వచ్చాను. నేను చాలా సంవత్సరాలు నార్వేలో నివసిస్తున్నాను.
అలాగే, నా పేరు తెలిసిన మరియు సోషల్ నెట్వర్క్లలో నన్ను కనుగొనే వ్యక్తుల నుండి ఈ నివేదిక కోసం సమాచారం సేకరించబడింది. నాకు దాదాపు ఎల్లప్పుడూ ఒకే మారుపేరు ఉంటుంది.
నేను చెప్పినట్లుగా, నేను టెర్రాఫార్మ్ AWS మాడ్యూల్స్ యొక్క ప్రధాన నిర్వహణదారుని, ఇది GitHubలో అతిపెద్ద రిపోజిటరీలలో ఒకటి, ఇక్కడ మేము అత్యంత సాధారణ పనుల కోసం మాడ్యూల్లను హోస్ట్ చేస్తాము: VPC, ఆటోస్కేలింగ్, RDS.
మరియు మీరు ఇప్పుడు విన్నది అత్యంత ప్రాథమికమైనది. టెర్రాఫార్మ్ అంటే ఏమిటో మీరు అర్థం చేసుకున్నారని మీకు అనుమానం ఉంటే, మీ సమయాన్ని వేరే చోట గడపడం మంచిది. ఇక్కడ చాలా సాంకేతిక పదాలు ఉంటాయి. మరియు నివేదిక యొక్క స్థాయిని అత్యున్నతమైనదిగా ప్రకటించడానికి నేను వెనుకాడలేదు. దీని అర్థం నేను ఎక్కువ వివరణ లేకుండా సాధ్యమయ్యే అన్ని నిబంధనలను ఉపయోగించి మాట్లాడగలను.
టెర్రాఫార్మ్ 2014లో ఒక యుటిలిటీగా కనిపించింది, ఇది కోడ్గా మౌలిక సదుపాయాలను వ్రాయడానికి, ప్లాన్ చేయడానికి మరియు నిర్వహించడానికి మిమ్మల్ని అనుమతించింది. ఇక్కడ ముఖ్య భావన "కోడ్ వలె మౌలిక సదుపాయాలు."
అన్ని డాక్యుమెంటేషన్, నేను చెప్పినట్లుగా, వ్రాయబడింది terraform.io. చాలా మందికి ఈ సైట్ గురించి తెలుసునని మరియు డాక్యుమెంటేషన్ చదివారని నేను ఆశిస్తున్నాను. అలా అయితే, మీరు సరైన స్థలంలో ఉన్నారు.
సాధారణ టెర్రాఫార్మ్ కాన్ఫిగరేషన్ ఫైల్ ఇలా కనిపిస్తుంది, ఇక్కడ మనం మొదట కొన్ని వేరియబుల్స్ని నిర్వచించాము.
ఈ సందర్భంలో మేము "aws_region"ని నిర్వచించాము.
అప్పుడు మనం ఏ వనరులను సృష్టించాలనుకుంటున్నామో వివరిస్తాము.
డిపెండెన్సీలు మరియు ప్రొవైడర్లను లోడ్ చేయడానికి మేము కొన్ని ఆదేశాలను అమలు చేస్తాము, ప్రత్యేకించి “టెర్రాఫార్మ్ init”.
మరియు పేర్కొన్న కాన్ఫిగరేషన్ మేము సృష్టించిన వనరులతో సరిపోలుతుందో లేదో తనిఖీ చేయడానికి మేము “టెర్రాఫార్మ్ అప్లై” ఆదేశాన్ని అమలు చేస్తాము. మేము ఇంతకు ముందు ఏదీ సృష్టించనందున, ఈ వనరులను సృష్టించమని Terraform మమ్మల్ని అడుగుతుంది.
మేము దీనిని ధృవీకరిస్తున్నాము. ఈ విధంగా మనం సీస్నెయిల్ అనే బకెట్ను సృష్టిస్తాము.
అనేక సారూప్య యుటిలిటీలు కూడా ఉన్నాయి. Amazonని ఉపయోగించే మీలో చాలా మందికి AWS CloudFormation లేదా Google Cloud Deployment Manager లేదా Azure Resource Manager గురించి తెలుసు. వాటిలో ప్రతి ఒక్కటి ఈ పబ్లిక్ క్లౌడ్ ప్రొవైడర్లలోని వనరులను నిర్వహించడానికి దాని స్వంత అమలును కలిగి ఉంటుంది. టెర్రాఫార్మ్ ముఖ్యంగా ఉపయోగకరంగా ఉంటుంది ఎందుకంటే ఇది 100 కంటే ఎక్కువ ప్రొవైడర్లను నిర్వహించడానికి మిమ్మల్ని అనుమతిస్తుంది. (మరిన్ని వివరాలు ఇక్కడ)
టెర్రాఫార్మ్ మొదటి నుండి అనుసరించిన లక్ష్యాలు:
టెర్రాఫార్మ్ వనరుల యొక్క ఒకే వీక్షణను అందిస్తుంది.
అన్ని ఆధునిక ప్లాట్ఫారమ్లకు మద్దతు ఇవ్వడానికి మిమ్మల్ని అనుమతిస్తుంది.
మరియు Terraform మీరు సురక్షితంగా మరియు ఊహాజనితంగా మౌలిక సదుపాయాలను మార్చడానికి అనుమతించే యుటిలిటీగా మొదటి నుండి రూపొందించబడింది.
2014 లో, "ఊహించదగినది" అనే పదం ఈ సందర్భంలో చాలా అసాధారణంగా అనిపించింది.
టెర్రాఫార్మ్ అనేది యూనివర్సల్ యుటిలిటీ. మీకు API ఉంటే, మీరు ఖచ్చితంగా అన్నింటినీ నియంత్రించవచ్చు:
మీకు కావలసిన ప్రతిదాన్ని నిర్వహించడానికి మీరు 120 కంటే ఎక్కువ ప్రొవైడర్లను ఉపయోగించవచ్చు.
ఉదాహరణకు, మీరు GitHub రిపోజిటరీలకు యాక్సెస్ను వివరించడానికి Terraformని ఉపయోగించవచ్చు.
మీరు జిరాలో బగ్లను కూడా సృష్టించవచ్చు మరియు మూసివేయవచ్చు.
మీరు కొత్త రెలిక్ మెట్రిక్లను నిర్వహించవచ్చు.
మీరు నిజంగా కావాలనుకుంటే డ్రాప్బాక్స్లో ఫైల్లను కూడా సృష్టించవచ్చు.
Goలో వివరించగలిగే ఓపెన్ APIని కలిగి ఉన్న Terraform ప్రొవైడర్లను ఉపయోగించి ఇదంతా సాధించబడింది.
నేను మునుపటి స్లయిడ్లలో చూపిన విధంగా మేము Terraformను ఉపయోగించడం ప్రారంభించాము, సైట్లో కొంత డాక్యుమెంటేషన్ని చదవడం ప్రారంభించాము, కొంత వీడియోను చూశాము మరియు main.tf వ్రాయడం ప్రారంభించాము.
మరియు ప్రతిదీ చాలా బాగుంది, మీకు VPCని సృష్టించే ఫైల్ ఉంది.
మీరు VPCని సృష్టించాలనుకుంటే, మీరు సుమారుగా ఈ 12 లైన్లను పేర్కొనండి. మీరు ఏ ప్రాంతంలో సృష్టించాలనుకుంటున్నారో, ఏ cidr_block IP చిరునామాలను ఉపయోగించాలో వివరించండి. అంతే.
సహజంగానే, ప్రాజెక్ట్ క్రమంగా పెరుగుతుంది.
మరియు మీరు అక్కడ కొత్త అంశాల సమూహాన్ని జోడిస్తారు: వనరులు, డేటా మూలాధారాలు, మీరు కొత్త ప్రొవైడర్లతో కలిసిపోతారు, అకస్మాత్తుగా మీరు మీ GitHub ఖాతాలోని వినియోగదారులను నిర్వహించడానికి టెర్రాఫార్మ్ని ఉపయోగించాలనుకుంటున్నారు, మొదలైనవి. మీరు వేరే వాటిని ఉపయోగించాలనుకోవచ్చు DNS ప్రొవైడర్లు, ప్రతిదీ దాటండి. టెర్రాఫార్మ్ దీన్ని సులభతరం చేస్తుంది.
కింది ఉదాహరణను చూద్దాం.
మీరు ఇంటర్నెట్ సదుపాయాన్ని కలిగి ఉండాలని మీ VPC నుండి వనరులను కోరుకుంటున్నందున మీరు క్రమంగా internet_gatewayని జోడిస్తారు. ఇది మంచి ఆలోచన.
ఫలితం ఈ main.tf:
ఇది main.tf యొక్క అగ్ర భాగం.
ఇది main.tf దిగువ భాగం.
అప్పుడు మీరు సబ్నెట్ని జోడించండి. మీరు NAT గేట్వేలు, మార్గాలు, రూటింగ్ టేబుల్లు మరియు ఇతర సబ్నెట్ల సమూహాన్ని జోడించాలనుకున్న సమయానికి, మీకు 38 లైన్లు ఉండవు, కానీ దాదాపు 200-300 లైన్లు ఉంటాయి.
అంటే, మీ main.tf ఫైల్ క్రమంగా పెరుగుతోంది. మరియు చాలా తరచుగా ప్రజలు ప్రతిదీ ఒకే ఫైల్లో ఉంచుతారు. main.tfలో 10-20 Kb కనిపిస్తుంది. 10-20 Kb వచన కంటెంట్ అని ఊహించండి. మరియు ప్రతిదీ ప్రతిదానికీ కనెక్ట్ చేయబడింది. దీంతో క్రమంగా పని చేయడం కష్టంగా మారుతోంది. 10-20 Kb మంచి వినియోగదారు సందర్భం, కొన్నిసార్లు ఎక్కువ. మరియు ఇది చెడ్డదని ప్రజలు ఎల్లప్పుడూ భావించరు.
సాధారణ ప్రోగ్రామింగ్లో వలె, అంటే కోడ్గా మౌలిక సదుపాయాలు కాదు, మేము వివిధ తరగతులు, ప్యాకేజీలు, మాడ్యూల్స్, సమూహాలను ఉపయోగించడం అలవాటు చేసుకున్నాము. Terraform మీరు చాలా అదే పని చేయడానికి అనుమతిస్తుంది.
కోడ్ పెరుగుతోంది.
వనరుల మధ్య ఆధారపడటం కూడా పెరుగుతోంది.
మరియు మనకు గొప్ప, గొప్ప అవసరం ఉంది. మేము ఇకపై ఇలా జీవించలేమని మేము అర్థం చేసుకున్నాము. మా కోడ్ విపరీతంగా మారుతోంది. 10-20 Kb, వాస్తవానికి, చాలా పెద్దది కాదు, కానీ మేము నెట్వర్క్ స్టాక్ గురించి మాత్రమే మాట్లాడుతున్నాము, అంటే మీరు నెట్వర్క్ వనరులను మాత్రమే జోడించారు. మేము అప్లికేషన్ లోడ్ బ్యాలెన్సర్, విస్తరణ ES క్లస్టర్, కుబెర్నెట్స్ మొదలైన వాటి గురించి మాట్లాడటం లేదు, ఇక్కడ 100 Kb సులభంగా నేయవచ్చు. మీరు ఇవన్నీ వ్రాస్తే, టెర్రాఫార్మ్ టెర్రాఫార్మ్ మాడ్యూళ్ళను అందిస్తుందని మీరు అతి త్వరలో తెలుసుకుంటారు.
టెర్రాఫార్మ్ మాడ్యూల్స్ అనేది సమూహంగా నిర్వహించబడే స్వీయ-నియంత్రణ టెర్రాఫార్మ్ కాన్ఫిగరేషన్. టెర్రాఫార్మ్ మాడ్యూల్స్ గురించి మీరు తెలుసుకోవలసినది అంతే. వారు అస్సలు తెలివైనవారు కాదు, ఏదో ఒకదానిపై ఆధారపడి సంక్లిష్టమైన కనెక్షన్లను చేయడానికి వారు మిమ్మల్ని అనుమతించరు. ఇదంతా డెవలపర్ల భుజాలపై పడుతుంది. అంటే, ఇది మీరు ఇప్పటికే వ్రాసిన ఒక రకమైన టెర్రాఫార్మ్ కాన్ఫిగరేషన్ మాత్రమే. మరియు మీరు దానిని సమూహంగా పిలవవచ్చు.
కాబట్టి మేము మా 10-20-30 Kb కోడ్ను ఎలా ఆప్టిమైజ్ చేయాలో అర్థం చేసుకోవడానికి ప్రయత్నిస్తున్నాము. మేము కొన్ని మాడ్యూల్స్ ఉపయోగించాల్సిన అవసరం ఉందని మేము క్రమంగా గ్రహించాము.
మీరు ఎదుర్కొనే మొదటి రకం మాడ్యూల్స్ రిసోర్స్ మాడ్యూల్స్. మీ ఇన్ఫ్రాస్ట్రక్చర్ దేనికి సంబంధించినది, మీ వ్యాపారం దేనికి సంబంధించినది, ఎక్కడ మరియు పరిస్థితులు ఏమిటో వారికి అర్థం కాలేదు. ఇవి ఖచ్చితంగా నేను, ఓపెన్ సోర్స్ కమ్యూనిటీతో కలిసి నిర్వహించే మాడ్యూల్లు మరియు మీ ఇన్ఫ్రాస్ట్రక్చర్ కోసం చాలా ప్రారంభ బిల్డింగ్ బ్లాక్లుగా మేము ముందుకు తెచ్చాము.
రిసోర్స్ మాడ్యూల్ యొక్క ఉదాహరణ.
మేము రిసోర్స్ మాడ్యూల్కి కాల్ చేసినప్పుడు, మేము దాని కంటెంట్లను ఏ మార్గం నుండి లోడ్ చేయాలో నిర్దేశిస్తాము.
మేము ఏ సంస్కరణను డౌన్లోడ్ చేయాలనుకుంటున్నాము అని మేము సూచిస్తాము.
మేము అక్కడ వాదనల సమూహాన్ని పాస్ చేస్తాము. అంతే. మనం ఈ మాడ్యూల్ని ఉపయోగించినప్పుడు మనం తెలుసుకోవలసినది అంతే.
లేటెస్ట్ వెర్షన్ వాడితే అంతా స్టెబుల్ అవుతుందని చాలా మంది అనుకుంటారు. కానీ కాదు. ఇన్ఫ్రాస్ట్రక్చర్ తప్పనిసరిగా వెర్షన్ చేయబడాలి; ఈ లేదా ఆ భాగం ఏ వెర్షన్కు అమలు చేయబడిందో మేము స్పష్టంగా సమాధానం ఇవ్వాలి.
ఈ మాడ్యూల్ లోపల ఉన్న కోడ్ ఇక్కడ ఉంది. సెక్యూరిటీ-గ్రూప్ మాడ్యూల్. ఇక్కడ స్క్రోల్ 640 వ పంక్తికి వెళుతుంది. సాధ్యమయ్యే ప్రతి కాన్ఫిగరేషన్లో అమెజాన్లో సెక్యూరిటీ-క్రూప్ రిసోర్స్ను సృష్టించడం చాలా చిన్నవిషయం కాని పని. కేవలం సెక్యూరిటీ గ్రూప్ని క్రియేట్ చేసి, దానికి ఎలాంటి రూల్స్ పాస్ చేయాలో చెప్పడం సరిపోదు. ఇది చాలా సరళంగా ఉంటుంది. అమెజాన్లో మిలియన్ విభిన్న పరిమితులు ఉన్నాయి. ఉదాహరణకు, మీరు ఉపయోగిస్తే VPC ముగింపు స్థానం, ఉపసర్గ జాబితా, వివిధ APIలు మరియు వీటన్నింటిని అన్నిటితో కలపడానికి ప్రయత్నిస్తుంది, అప్పుడు టెర్రాఫార్మ్ దీన్ని చేయడానికి మిమ్మల్ని అనుమతించదు. మరియు Amazon API దీన్ని కూడా అనుమతించదు. కాబట్టి, మనం ఈ భయంకరమైన లాజిక్లన్నింటినీ మాడ్యూల్లో దాచిపెట్టి, వినియోగదారు కోడ్ని ఇలా కనిపించేలా ఇవ్వాలి.
ఇది లోపల ఎలా తయారు చేయబడిందో వినియోగదారు తెలుసుకోవలసిన అవసరం లేదు.
రిసోర్స్ మాడ్యూల్లను కలిగి ఉన్న రెండవ రకం మాడ్యూల్లు ఇప్పటికే మీ వ్యాపారానికి మరింత వర్తించే సమస్యలను పరిష్కరిస్తాయి. తరచుగా ఇది టెర్రాఫార్మ్ కోసం పొడిగింపు మరియు కంపెనీ ప్రమాణాల కోసం ట్యాగ్ల కోసం కొన్ని దృఢమైన విలువలను సెట్ చేస్తుంది. టెర్రాఫార్మ్ ప్రస్తుతం మిమ్మల్ని ఉపయోగించడానికి అనుమతించని కార్యాచరణను కూడా మీరు జోడించవచ్చు. ఇది ప్రస్తుతం ఉంది. ఇప్పుడు వెర్షన్ 0.11, ఇది గతానికి సంబంధించిన అంశంగా మారబోతోంది. అయినప్పటికీ, ప్రీప్రాసెసర్లు, jsonnet, కుకీకట్టర్ మరియు ఇతర విషయాల సమూహం పూర్తి స్థాయి పని కోసం తప్పనిసరిగా ఉపయోగించాల్సిన సహాయక యంత్రాంగం.
తదుపరి నేను దీనికి కొన్ని ఉదాహరణలు చూపుతాను.
ఇన్ఫ్రాస్ట్రక్చర్ మాడ్యూల్ సరిగ్గా అదే విధంగా పిలువబడుతుంది.
కంటెంట్ను ఎక్కడ నుండి డౌన్లోడ్ చేయాలో మూలం సూచించబడింది.
విలువల సమూహం ఈ మాడ్యూల్లోకి పంపబడుతుంది మరియు పంపబడుతుంది.
తర్వాత, ఈ మాడ్యూల్ లోపల, ఒక VPC లేదా అప్లికేషన్ లోడ్ బ్యాలెన్సర్ని సృష్టించడానికి లేదా సెక్యూరిటీ-గ్రూప్ని సృష్టించడానికి లేదా సాగే కంటైనర్ సర్వీస్ క్లస్టర్ కోసం రిసోర్స్ మాడ్యూల్ల సమూహాన్ని పిలుస్తారు.
రెండు రకాల మాడ్యూల్స్ ఉన్నాయి. నేను ఈ నివేదికలో సమూహపరచిన చాలా సమాచారం డాక్యుమెంటేషన్లో వ్రాయబడలేదు కాబట్టి ఇది అర్థం చేసుకోవడం ముఖ్యం.
మరియు ప్రస్తుతం టెర్రాఫార్మ్లోని డాక్యుమెంటేషన్ చాలా సమస్యాత్మకంగా ఉంది ఎందుకంటే ఈ ఫీచర్లు ఉన్నాయి, మీరు వాటిని ఉపయోగించవచ్చు. కానీ ఈ లక్షణాలను ఎలా ఉపయోగించాలో, వాటిని ఎందుకు ఉపయోగించడం మంచిది అని ఆమె చెప్పలేదు. అందువల్ల, చాలా పెద్ద సంఖ్యలో ప్రజలు తాము జీవించలేని వాటిని వ్రాస్తారు.
ఈ మాడ్యూళ్ళను ఎలా వ్రాయాలో తర్వాత చూద్దాం. అప్పుడు మేము వాటిని ఎలా కాల్ చేయాలో మరియు కోడ్తో ఎలా పని చేయాలో చూద్దాం.
చిట్కా #0 అనేది రిసోర్స్ మాడ్యూల్లను వ్రాయకూడదు. ఈ మాడ్యూళ్ళలో చాలా వరకు మీ కోసం ఇప్పటికే వ్రాయబడ్డాయి. నేను చెప్పినట్లుగా, అవి ఓపెన్ సోర్స్, వాటిలో మీ వ్యాపార తర్కం ఏదీ లేదు, వాటికి IP చిరునామాలు, పాస్వర్డ్లు మొదలైన వాటి కోసం హార్డ్కోడ్ విలువలు లేవు. మాడ్యూల్ చాలా సరళమైనది. మరియు ఇది చాలా మటుకు ఇప్పటికే వ్రాయబడింది. Amazon నుండి వనరుల కోసం అనేక మాడ్యూల్స్ ఉన్నాయి. దాదాపు 650. మరియు వాటిలో చాలా మంచి నాణ్యత కలిగి ఉంటాయి.
ఈ ఉదాహరణలో, ఒకరు మీ వద్దకు వచ్చి, “నేను డేటాబేస్ను నిర్వహించగలగాలి. మాడ్యూల్ని సృష్టించండి, తద్వారా నేను డేటాబేస్ని సృష్టించగలను." వ్యక్తికి Amazon లేదా Terraform అమలు వివరాలు తెలియవు. అతను కేవలం ఇలా అన్నాడు: "నేను MSSQLని నిర్వహించాలనుకుంటున్నాను." అంటే, అది మా మాడ్యూల్కి కాల్ చేసి, ఇంజిన్ రకాన్ని అక్కడ పాస్ చేస్తుంది మరియు టైమ్ జోన్ను సూచిస్తుంది.
మరియు ఈ మాడ్యూల్ లోపల మేము రెండు విభిన్న వనరులను సృష్టిస్తామని ఒక వ్యక్తికి తెలియకూడదు: ఒకటి MSSQL కోసం, రెండవది అన్నిటికీ, టెర్రాఫార్మ్ 0.11లో మీరు టైమ్ జోన్ విలువలను ఐచ్ఛికంగా పేర్కొనలేరు.
మరియు ఈ మాడ్యూల్ నుండి నిష్క్రమణ వద్ద, ఒక వ్యక్తి కేవలం చిరునామాను స్వీకరించగలరు. ఏ డేటాబేస్ నుండి, ఏ వనరు నుండి మనం ఇవన్నీ అంతర్గతంగా సృష్టిస్తున్నామో అతనికి తెలియదు. ఇది దాచడానికి చాలా ముఖ్యమైన అంశం. మరియు ఇది ఓపెన్ సోర్స్లో పబ్లిక్గా ఉన్న మాడ్యూల్లకు మాత్రమే కాకుండా, మీ ప్రాజెక్ట్లు మరియు టీమ్లలో మీరు వ్రాసే మాడ్యూల్లకు కూడా వర్తిస్తుంది.
ఇది రెండవ వాదన, మీరు కొంతకాలంగా Terraformని ఉపయోగిస్తుంటే ఇది చాలా ముఖ్యమైనది. మీరు మీ కంపెనీ కోసం మీ అన్ని టెర్రాఫార్మ్ మాడ్యూళ్లను ఉంచే రిపోజిటరీని కలిగి ఉన్నారు. మరియు కాలక్రమేణా ఈ ప్రాజెక్ట్ ఒకటి లేదా రెండు మెగాబైట్ల పరిమాణానికి పెరగడం చాలా సాధారణం. ఇది బాగానే ఉంది.
అయితే టెర్రాఫార్మ్ ఈ మాడ్యూళ్లను ఎలా పిలుస్తుంది అనేది సమస్య. ఉదాహరణకు, మీరు ఒక్కొక్క వినియోగదారుని సృష్టించడానికి మాడ్యూల్కు కాల్ చేస్తే, Terraform ముందుగా మొత్తం రిపోజిటరీని లోడ్ చేస్తుంది మరియు ఆ నిర్దిష్ట మాడ్యూల్ ఉన్న ఫోల్డర్కు నావిగేట్ చేస్తుంది. ఈ విధంగా మీరు ప్రతిసారీ ఒక మెగాబైట్ డౌన్లోడ్ చేస్తారు. మీరు 100 లేదా 200 మంది వినియోగదారులను నిర్వహిస్తే, మీరు 100 లేదా 200 మెగాబైట్లను డౌన్లోడ్ చేసి, ఆపై ఆ ఫోల్డర్కి వెళ్లండి. కాబట్టి సహజంగా మీరు "Terraform init"ని నొక్కిన ప్రతిసారీ కొన్ని అంశాలను డౌన్లోడ్ చేయకూడదు.
ఈ సమస్యకు రెండు పరిష్కారాలు ఉన్నాయి. మొదటిది సాపేక్ష మార్గాలను ఉపయోగించడం. ఈ విధంగా మీరు ఫోల్డర్ స్థానికం (./) అని కోడ్లో సూచిస్తారు. మరియు మీరు ఏదైనా ప్రారంభించే ముందు, మీరు స్థానికంగా ఈ రిపోజిటరీ యొక్క Git క్లోన్ చేయండి. ఈ విధంగా మీరు ఒకసారి చేయండి.
వాస్తవానికి, చాలా ప్రతికూలతలు ఉన్నాయి. ఉదాహరణకు, మీరు సంస్కరణను ఉపయోగించలేరు. మరియు దీనితో జీవించడం కొన్నిసార్లు కష్టం.
రెండవ పరిష్కారం. మీరు చాలా సబ్మాడ్యూల్లను కలిగి ఉంటే మరియు మీరు ఇప్పటికే ఒక రకమైన ఏర్పాటు పైప్లైన్ని కలిగి ఉంటే, MBT ప్రాజెక్ట్ ఉంది, ఇది మోనోర్పోజిటరీ నుండి అనేక విభిన్న ప్యాకేజీలను సేకరించి వాటిని S3కి అప్లోడ్ చేయడానికి మిమ్మల్ని అనుమతిస్తుంది. ఇది చాలా మంచి మార్గం. అందువలన, iam-user-1.0.0.zip ఫైల్ కేవలం 1 Kb బరువు ఉంటుంది, ఎందుకంటే ఈ వనరుని సృష్టించే కోడ్ చాలా చిన్నది. మరియు ఇది చాలా వేగంగా పని చేస్తుంది.
మాడ్యూల్స్లో ఉపయోగించలేని వాటి గురించి మాట్లాడుదాం.
మాడ్యూల్స్లో ఇది ఎందుకు చెడుగా ఉంది? చెత్త విషయం ఏమిటంటే వినియోగదారుని ఊహించడం. వినియోగదారుని వివిధ వ్యక్తులు ఉపయోగించగల ప్రొవైడర్ ప్రామాణీకరణ ఎంపికగా భావించండి. ఉదాహరణకు, మనమందరం పాత్రను సమీకరించుకుంటాము. అంటే టెర్రాఫార్మ్ ఈ పాత్రను పోషిస్తుంది. ఆపై ఈ పాత్రతో అది ఇతర చర్యలను చేస్తుంది.
మరియు చెడు ఏమిటంటే, వాస్యా ఒక విధంగా అమెజాన్కు కనెక్ట్ అవ్వడానికి ఇష్టపడితే, ఉదాహరణకు, డిఫాల్ట్ ఎన్విరాన్మెంట్ వేరియబుల్ని ఉపయోగించి, మరియు పెట్యా తన షేర్డ్ కీని ఉపయోగించడానికి ఇష్టపడితే, అది రహస్య ప్రదేశంలో ఉంది, అప్పుడు మీరు రెండింటినీ పేర్కొనలేరు టెర్రాఫారం. మరియు వారు బాధలను అనుభవించకుండా ఉండటానికి, మాడ్యూల్లో ఈ బ్లాక్ను సూచించాల్సిన అవసరం లేదు. ఇది తప్పనిసరిగా ఉన్నత స్థాయిలో సూచించబడాలి. అంటే, మనకు రిసోర్స్ మాడ్యూల్, ఇన్ఫ్రాస్ట్రక్చర్ మాడ్యూల్ మరియు పైన కంపోజిషన్ ఉన్నాయి. మరియు ఇది ఎక్కడో ఎక్కువగా సూచించబడాలి.
రెండవ దుర్మార్గుడు ప్రొవిజనర్. ఇక్కడ చెడు చాలా చిన్నవిషయం కాదు, ఎందుకంటే మీరు కోడ్ వ్రాసి అది మీ కోసం పనిచేస్తే, అది పనిచేస్తే, దాన్ని ఎందుకు మార్చాలి అని మీరు అనుకోవచ్చు.
చెడు ఏమిటంటే, ఈ ప్రొవిజనర్ ఎప్పుడు ప్రారంభించబడుతుందో మీరు ఎల్లప్పుడూ నియంత్రించలేరు. మరియు రెండవది, మీరు aws ec2 అంటే ఏమిటో నియంత్రించలేరు, అంటే మనం ఇప్పుడు Linux లేదా Windows గురించి మాట్లాడుతున్నాము. కాబట్టి మీరు వేర్వేరు ఆపరేటింగ్ సిస్టమ్లలో లేదా విభిన్న వినియోగదారు సందర్భాలలో ఒకే విధంగా పని చేసేదాన్ని వ్రాయలేరు.
అధికారిక డాక్యుమెంటేషన్లో కూడా సూచించబడిన అత్యంత సాధారణ ఉదాహరణ ఏమిటంటే, మీరు aws_instanceని వ్రాసి, ఆర్గ్యుమెంట్ల సమూహాన్ని పేర్కొన్నట్లయితే, మీరు అక్కడ ప్రొవిజనర్ “లోకల్-ఎగ్జిక్యూటివ్”ని పేర్కొని, మీ ఆంసిబుల్ని అమలు చేస్తే దానిలో తప్పు ఏమీ లేదు- ప్లేబుక్.
నిజానికి, అవును, అందులో తప్పు ఏమీ లేదు. అయితే ఈ లోకల్-ఎగ్జిక్యూటివ్ థింగ్ ఉనికిలో లేదని, ఉదాహరణకు, లాంచ్_కాన్ఫిగరేషన్లో మీరు త్వరలో గ్రహించగలరు.
మరియు మీరు లాంచ్_కాన్ఫిగరేషన్ని ఉపయోగించినప్పుడు మరియు మీరు ఒక ఉదాహరణ నుండి ఆటోస్కేలింగ్ సమూహాన్ని సృష్టించాలనుకున్నప్పుడు, లాంచ్_కాన్ఫిగరేషన్లో “ప్రొవిజనర్” అనే భావన ఉండదు. "యూజర్ డేటా" అనే భావన ఉంది.
అందువల్ల, వినియోగదారు డేటాను ఉపయోగించడం మరింత సార్వత్రిక పరిష్కారం. మరియు ఇది ఇన్స్టాన్స్ ఆన్లో ఉన్నప్పుడు లేదా అదే యూజర్ డేటాలో ఆటోస్కేలింగ్ గ్రూప్ ఈ లాంచ్_కాన్ఫిగరేషన్ని ఉపయోగించినప్పుడు లాంచ్ చేయబడుతుంది.
మీరు ఇప్పటికీ ప్రొవిజనర్ని అమలు చేయాలనుకుంటే, అది గ్లూయింగ్ కాంపోనెంట్ అయినందున, ఒక వనరు సృష్టించబడినప్పుడు, ఆ సమయంలో మీరు మీ ప్రొవిజనర్ని, మీ ఆదేశాన్ని అమలు చేయాలి. ఇలాంటి పరిస్థితులు చాలా ఉన్నాయి.
మరియు దీనికి అత్యంత సరైన వనరును null_resource అంటారు. Null_resource అనేది డమ్మీ రిసోర్స్, ఇది వాస్తవంగా సృష్టించబడదు. ఇది దేనినీ తాకదు, API లేదు, ఆటోస్కేలింగ్ లేదు. కానీ ఆదేశాన్ని ఎప్పుడు అమలు చేయాలో నియంత్రించడానికి ఇది మిమ్మల్ని అనుమతిస్తుంది. ఈ సందర్భంలో, ఆదేశం సృష్టి సమయంలో అమలు చేయబడుతుంది.
అనేక సంకేతాలు ఉన్నాయి. నేను అన్ని సంకేతాలను చాలా వివరంగా చెప్పను. దీని గురించి ఒక వ్యాసం ఉంది. కానీ మీరు టెర్రాఫార్మ్తో పని చేసి ఉంటే లేదా ఇతరుల మాడ్యూల్లను ఉపయోగించినట్లయితే, ఓపెన్ సోర్స్లోని చాలా కోడ్ల వంటి అనేక మాడ్యూల్లు వ్యక్తులు వారి స్వంత అవసరాల కోసం వ్రాసినట్లు మీరు తరచుగా గమనించవచ్చు. ఒక వ్యక్తి దానిని వ్రాసి తన సమస్యను పరిష్కరించుకున్నాడు. నేను దానిని GitHubలో ఉంచాను, దానిని జీవించనివ్వండి. ఇది నివసిస్తుంది, కానీ అక్కడ డాక్యుమెంటేషన్ మరియు ఉదాహరణలు లేకపోతే, ఎవరూ దానిని ఉపయోగించరు. మరియు దాని నిర్దిష్ట పని కంటే కొంచెం ఎక్కువ పరిష్కరించడానికి మిమ్మల్ని అనుమతించే కార్యాచరణ లేకపోతే, ఎవరూ దానిని ఉపయోగించరు. వినియోగదారులను కోల్పోవడానికి చాలా మార్గాలు ఉన్నాయి.
మీరు ఏదైనా వ్రాయాలనుకుంటే, ప్రజలు దానిని ఉపయోగించుకునేలా, ఈ సంకేతాలను అనుసరించమని నేను సిఫార్సు చేస్తున్నాను.
ఇది:
డాక్యుమెంటేషన్ మరియు ఉదాహరణలు.
పూర్తి కార్యాచరణ.
సహేతుకమైన డిఫాల్ట్లు.
క్లీన్ కోడ్.
పరీక్షలు.
పరీక్షలు రాయడానికి చాలా కష్టంగా ఉన్నందున పరిస్థితి భిన్నంగా ఉంటుంది. నేను డాక్యుమెంటేషన్ మరియు ఉదాహరణలను ఎక్కువగా నమ్ముతాను.
కాబట్టి, మాడ్యూల్స్ ఎలా వ్రాయాలో మేము చూశాము. రెండు వాదనలు ఉన్నాయి. మొదటిది, చాలా ముఖ్యమైనది, మీకు వీలైతే వ్రాయడం కాదు, ఎందుకంటే కొంతమంది వ్యక్తులు మీ ముందు ఇప్పటికే ఈ పనులను చేసారు. మరియు రెండవది, మీరు ఇప్పటికీ నిర్ణయించుకుంటే, మాడ్యూల్స్ మరియు ప్రొవిజనర్లలో ప్రొవైడర్లను ఉపయోగించకూడదని ప్రయత్నించండి.
ఇది డాక్యుమెంటేషన్ యొక్క బూడిద భాగం. మీరు ఇప్పుడు ఇలా ఆలోచిస్తూ ఉండవచ్చు: “ఏదో అస్పష్టంగా ఉంది. ఒప్పించలేదు." అయితే ఆరు నెలల్లో చూద్దాం.
ఇప్పుడు ఈ మాడ్యూళ్ళను ఎలా పిలవాలి అనే దాని గురించి మాట్లాడుదాం.
మా కోడ్ కాలక్రమేణా పెరుగుతుందని మేము అర్థం చేసుకున్నాము. మా వద్ద ఒక ఫైల్ లేదు, మా వద్ద ఇప్పటికే 20 ఫైల్లు ఉన్నాయి. అవన్నీ ఒకే ఫోల్డర్లో ఉన్నాయి. లేదా ఐదు ఫోల్డర్లు ఉండవచ్చు. బహుశా మేము వాటిని ఏదో ఒకవిధంగా ప్రాంతాల వారీగా, కొన్ని భాగాల ద్వారా విచ్ఛిన్నం చేయడం ప్రారంభించాము. ఇప్పుడు మనకు సమకాలీకరణ మరియు ఆర్కెస్ట్రేషన్ యొక్క కొన్ని మూలాధారాలు ఉన్నాయని మేము అర్థం చేసుకున్నాము. అంటే, మనం నెట్వర్క్ వనరులను మార్చినట్లయితే మనం ఏమి చేయాలి, మా మిగిలిన వనరులతో మనం ఏమి చేయాలి, ఈ డిపెండెన్సీలను ఎలా కలిగించాలి మొదలైనవాటిని మనం అర్థం చేసుకోవాలి.
రెండు విపరీతాలు ఉన్నాయి. మొదటి విపరీతమైన అన్నింటికీ ఒకటి. మా వద్ద ఒక మాస్టర్ ఫైల్ ఉంది. ప్రస్తుతానికి, ఇది Terraform వెబ్సైట్లో అధికారిక ఉత్తమ అభ్యాసం.
కానీ ఇప్పుడు డిప్రికేటెడ్ అని రాసి తొలగించారు. కాలక్రమేణా, టెర్రాఫార్మ్ కమ్యూనిటీ ఇది ఉత్తమ అభ్యాసానికి దూరంగా ఉందని గ్రహించింది, ఎందుకంటే ప్రజలు ప్రాజెక్ట్ను వివిధ మార్గాల్లో ఉపయోగించడం ప్రారంభించారు. మరియు సమస్యలు ఉన్నాయి. ఉదాహరణకు, మేము అన్ని డిపెండెన్సీలను ఒకే చోట జాబితా చేసినప్పుడు. మేము "టెర్రాఫార్మ్ ప్లాన్" క్లిక్ చేసినప్పుడు పరిస్థితులు ఉన్నాయి మరియు Terraform అన్ని వనరుల స్థితిగతులను నవీకరించే వరకు, చాలా సమయం గడిచిపోతుంది.
చాలా సమయం, ఉదాహరణకు, 5 నిమిషాలు. కొందరికి ఇది చాలా సమయం. నేను 15 నిమిషాలు పట్టే సందర్భాలను చూశాను. AWS API ప్రతి వనరు యొక్క స్థితితో ఏమి జరుగుతుందో గుర్తించడానికి 15 నిమిషాలు గడిపింది. ఇది చాలా పెద్ద ప్రాంతం.
మరియు, సహజంగానే, మీరు ఒకే చోట ఏదైనా మార్చాలనుకున్నప్పుడు సంబంధిత సమస్య కనిపిస్తుంది, ఆపై మీరు 15 నిమిషాలు వేచి ఉండండి మరియు ఇది మీకు కొన్ని మార్పుల కాన్వాస్ను అందిస్తుంది. మీరు ఉమ్మివేసారు, "అవును" అని వ్రాసారు మరియు ఏదో తప్పు జరిగింది. ఇది చాలా నిజమైన ఉదాహరణ. టెర్రాఫార్మ్ మిమ్మల్ని సమస్యల నుండి రక్షించడానికి ప్రయత్నించదు. అంటే, మీకు కావలసినది వ్రాయండి. సమస్యలు ఉంటాయి - మీ సమస్యలు. టెర్రాఫార్మ్ 0.11 మీకు ఏ విధంగానూ సహాయం చేయడానికి ప్రయత్నించడం లేదు. 0.12లో కొన్ని ఆసక్తికరమైన ప్రదేశాలు ఉన్నాయి: “వాస్య, మీకు ఇది నిజంగా కావాలి, మీరు మీ స్పృహలోకి రాగలరా?”
రెండవ మార్గం ఈ ప్రాంతాన్ని తగ్గించడం, అంటే, ఒక ప్రదేశం నుండి కాల్లు మరొక ప్రదేశం నుండి తక్కువగా కనెక్ట్ చేయబడతాయి.
ఒకే సమస్య ఏమిటంటే, మీరు మరింత కోడ్ను వ్రాయవలసి ఉంటుంది, అనగా మీరు పెద్ద సంఖ్యలో ఫైల్లలో వేరియబుల్లను వివరించి, దీన్ని నవీకరించాలి. కొంతమందికి అది నచ్చదు. ఇది నాకు మామూలే. మరియు కొంతమంది ఇలా అనుకుంటారు: "దీనిని వేర్వేరు ప్రదేశాలలో ఎందుకు వ్రాయాలి, నేను అన్నింటినీ ఒకే చోట ఉంచుతాను." ఇది సాధ్యమే, కానీ ఇది రెండవ తీవ్రత.
ఇవన్నీ ఒకే చోట నివసించేది ఎవరు? ఒకరు, ఇద్దరు, ముగ్గురు వ్యక్తులు అంటే ఎవరో వాడుతున్నారు.
మరియు ఒక నిర్దిష్ట భాగం, ఒక బ్లాక్ లేదా ఒక ఇన్ఫ్రాస్ట్రక్చర్ మాడ్యూల్ని ఎవరు పిలుస్తారు? ఐదు నుండి ఏడు మంది వ్యక్తులు. ఇది బాగుంది.
అత్యంత సాధారణ సమాధానం మధ్యలో ఎక్కడో ఉంది. ప్రాజెక్ట్ పెద్దది అయినట్లయితే, మీరు తరచుగా ఎటువంటి పరిష్కారం సరిపోని పరిస్థితిని కలిగి ఉంటారు మరియు అక్కడ ప్రతిదీ పని చేయదు, కాబట్టి మీరు మిశ్రమంతో ముగుస్తుంది. రెండింటికీ ప్రయోజనాలు ఉన్నాయని మీరు అర్థం చేసుకున్నంత వరకు ఇందులో తప్పు లేదు.
స్టాక్ VPCలో ఏదైనా మార్పు జరిగి, మీరు ఈ మార్పులను EC2కి వర్తింపజేయాలనుకుంటే, అంటే మీకు కొత్త సబ్నెట్ ఉన్నందున మీరు ఆటోస్కేలింగ్ సమూహాన్ని అప్డేట్ చేయాలనుకుంటే, నేను ఈ రకమైన డిపెండెన్సీ ఆర్కెస్ట్రేషన్ అని పిలుస్తాను. కొన్ని పరిష్కారాలు ఉన్నాయి: ఎవరు ఏమి ఉపయోగిస్తారు?
పరిష్కారాలు ఏమిటో నేను సూచించగలను. మీరు మ్యాజిక్ చేయడానికి టెర్రాఫార్మ్ని ఉపయోగించవచ్చు లేదా టెర్రాఫార్మ్ని ఉపయోగించడానికి మీరు మేక్ఫైల్లను ఉపయోగించవచ్చు. మరియు అక్కడ ఏదైనా మార్పు జరిగిందో లేదో చూడండి, మీరు దాన్ని ఇక్కడ ప్రారంభించవచ్చు.
ఈ నిర్ణయం మీకు ఎలా నచ్చింది? ఇది చక్కని పరిష్కారమని ఎవరైనా నమ్ముతున్నారా? నేను చిరునవ్వును చూస్తున్నాను, స్పష్టంగా సందేహాలు లోపలికి వచ్చాయి.
అయితే, దీన్ని ఇంట్లో ప్రయత్నించవద్దు. టెర్రాఫాం టెర్రాఫార్మ్ నుండి అమలు చేయడానికి ఎప్పుడూ రూపొందించబడలేదు.
ఒక నివేదికలో వారు నాకు చెప్పారు: "లేదు, ఇది పని చేయదు." ఇది పని చేయకూడదనేది పాయింట్. మీరు టెర్రాఫార్మ్ నుండి టెర్రాఫార్మ్ని లాంచ్ చేయగలిగినప్పుడు, ఆపై టెర్రాఫార్మ్ను ప్రారంభించడం చాలా ఆకట్టుకునేలా కనిపిస్తున్నప్పటికీ, మీరు అలా చేయకూడదు. టెర్రాఫార్మ్ ఎల్లప్పుడూ చాలా సులభంగా ప్రారంభించాలి.
ఒకే చోట ఏదైనా మారినప్పుడు మీకు కాల్ ఆర్కెస్ట్రేషన్ అవసరమైతే, టెర్రాగ్రంట్ ఉంది.
Terragrunt అనేది ఒక యుటిలిటీ, ఇది టెర్రాఫార్మ్కి యాడ్-ఆన్, ఇది ఇన్ఫ్రాస్ట్రక్చర్ మాడ్యూల్లకు కాల్లను సమన్వయం చేయడానికి మరియు ఆర్కెస్ట్రేట్ చేయడానికి మిమ్మల్ని అనుమతిస్తుంది.
ఒక సాధారణ Terraform కాన్ఫిగరేషన్ ఫైల్ ఇలా కనిపిస్తుంది.
మీరు కాల్ చేయాలనుకుంటున్న నిర్దిష్ట మాడ్యూల్ని మీరు పేర్కొనండి.
మాడ్యూల్ ఏ డిపెండెన్సీలను కలిగి ఉంది?
మరియు ఈ మాడ్యూల్ ఏ వాదనలను అంగీకరిస్తుంది. Terragrunt గురించి తెలుసుకోవాలి అంతే.
డాక్యుమెంటేషన్ ఉంది మరియు GitHubలో 1 నక్షత్రాలు ఉన్నాయి. కానీ చాలా సందర్భాలలో మీరు తెలుసుకోవలసినది ఇదే. మరియు ఇది టెర్రాఫార్మ్తో పనిచేయడం ప్రారంభించిన కంపెనీలలో అమలు చేయడం చాలా సులభం.
కాబట్టి ఆర్కెస్ట్రేషన్ టెర్రాగ్రంట్. ఇతర ఎంపికలు ఉన్నాయి.
ఇప్పుడు కోడ్తో ఎలా పని చేయాలో గురించి మాట్లాడుదాం.
మీరు మీ కోడ్కి కొత్త ఫీచర్లను జోడించాలనుకుంటే, చాలా సందర్భాలలో ఇది సులభం. మీరు కొత్త వనరును వ్రాస్తున్నారు, ప్రతిదీ చాలా సులభం.
మీరు ముందుగానే సృష్టించిన ఏదైనా వనరు మీ వద్ద ఉంటే, ఉదాహరణకు, మీరు AWS ఖాతాను తెరిచిన తర్వాత మీరు Terraform గురించి తెలుసుకున్నారు మరియు మీరు ఇప్పటికే కలిగి ఉన్న వనరులను ఉపయోగించాలనుకుంటే, మీ మాడ్యూల్ను ఈ విధంగా విస్తరించడం సముచితంగా ఉంటుంది. ఇది ఇప్పటికే ఉన్న వనరుల వినియోగానికి మద్దతు ఇస్తుంది.
మరియు బ్లాక్ రిసోర్స్ని ఉపయోగించి కొత్త వనరుల సృష్టికి మద్దతు ఇచ్చింది.
అవుట్పుట్లో మేము ఉపయోగించిన దాన్ని బట్టి అవుట్పుట్ ఐడిని ఎల్లప్పుడూ తిరిగి ఇస్తాము.
Terraform 0.11లో రెండవ ముఖ్యమైన సమస్య జాబితాలతో పని చేస్తోంది.
ఇబ్బంది ఏమిటంటే, మనకు అలాంటి వినియోగదారుల జాబితా ఉంటే.
మరియు మేము బ్లాక్ రిసోర్స్ని ఉపయోగించి ఈ వినియోగదారులను సృష్టించినప్పుడు, ప్రతిదీ సరిగ్గా జరుగుతుంది. మేము మొత్తం జాబితా ద్వారా వెళ్తాము, ప్రతిదానికి ఒక ఫైల్ను సృష్టిస్తాము. అంతా బాగానే ఉంది. ఆపై, ఉదాహరణకు, మధ్యలో ఉన్న user3, ఇక్కడ నుండి తీసివేయబడాలి, అప్పుడు అతని తర్వాత సృష్టించబడిన అన్ని వనరులు మళ్లీ సృష్టించబడతాయి ఎందుకంటే ఇండెక్స్ మారుతుంది.
రాష్ట్రీయ వాతావరణంలో జాబితాలతో పని చేయడం. రాష్ట్రీయ వాతావరణం అంటే ఏమిటి? ఈ వనరు సృష్టించబడినప్పుడు కొత్త విలువ సృష్టించబడే పరిస్థితి ఇది. ఉదాహరణకు, AWS యాక్సెస్ కీ లేదా AWS సీక్రెట్ కీ, అంటే మనం వినియోగదారుని సృష్టించినప్పుడు, మేము కొత్త యాక్సెస్ లేదా సీక్రెట్ కీని అందుకుంటాము. మరియు మేము వినియోగదారుని తొలగించిన ప్రతిసారీ, ఈ వినియోగదారుకు కొత్త కీ ఉంటుంది. కానీ ఇది ఫెంగ్ షుయ్ కాదు, ఎందుకంటే ఎవరైనా జట్టును విడిచిపెట్టిన ప్రతిసారీ అతని కోసం కొత్త వినియోగదారుని సృష్టించినట్లయితే వినియోగదారు మనతో స్నేహం చేయకూడదు.
ఇదే పరిష్కారం. ఇది Jsonnetలో వ్రాసిన కోడ్. Jsonnet అనేది Google నుండి టెంప్లేటింగ్ భాష.
ఈ కమాండ్ ఈ టెంప్లేట్ని ఆమోదించడానికి మిమ్మల్ని అనుమతిస్తుంది మరియు అవుట్పుట్గా ఇది మీ టెంప్లేట్ ప్రకారం తయారు చేయబడిన json ఫైల్ను అందిస్తుంది.
టెంప్లేట్ ఇలా కనిపిస్తుంది.
టెర్రాఫార్మ్ మిమ్మల్ని HCL మరియు Json రెండింటితో ఒకే విధంగా పని చేయడానికి అనుమతిస్తుంది, కాబట్టి మీరు Jsonని రూపొందించగల సామర్థ్యాన్ని కలిగి ఉంటే, మీరు దానిని Terraformలోకి జారవచ్చు. .tf.json పొడిగింపుతో ఉన్న ఫైల్ విజయవంతంగా డౌన్లోడ్ చేయబడుతుంది.
ఆపై మేము దానితో ఎప్పటిలాగే పని చేస్తాము: టెర్రాఫార్మ్ ఇనిట్, టెర్రామార్మ్ వర్తిస్తాయి. మరియు మేము ఇద్దరు వినియోగదారులను సృష్టిస్తాము.
ఇప్పుడు జట్టు నుంచి ఎవరైనా వెళ్లిపోతే మాకు భయం లేదు. మేము json ఫైల్ని ఎడిట్ చేస్తాము. వాస్య పుప్కిన్ వదిలి, పెట్యా పయాటోచ్కిన్ మిగిలిపోయాడు. పెట్యా పయాటోచ్కిన్ కొత్త కీని అందుకోరు.
టెర్రాఫార్మ్ను ఇతర సాధనాలతో అనుసంధానించడం నిజంగా టెర్రాఫార్మ్ యొక్క పని కాదు. వనరులను సృష్టించే వేదికగా టెర్రాఫార్మ్ సృష్టించబడింది మరియు అంతే. మరియు తరువాత వచ్చే ప్రతిదీ Terraform యొక్క ఆందోళన కాదు. మరియు అక్కడ అది నేత అవసరం లేదు. మీకు అవసరమైన ప్రతిదాన్ని చేసే అన్సిబుల్ ఉంది.
కానీ మేము టెర్రాఫార్మ్ని పొడిగించాలనుకున్నప్పుడు మరియు ఏదైనా పూర్తయిన తర్వాత కొంత కమాండ్ని పిలవాలనుకున్నప్పుడు పరిస్థితులు తలెత్తుతాయి.
మొదటి మార్గం. మేము ఈ ఆదేశాన్ని వ్రాసే చోట అవుట్పుట్ను సృష్టిస్తాము.
ఆపై మనం షెల్ టెర్రాఫార్మ్ అవుట్పుట్ నుండి ఈ ఆదేశాన్ని పిలుస్తాము మరియు మనకు కావలసిన విలువను పేర్కొనండి. అందువలన, కమాండ్ అన్ని ప్రత్యామ్నాయ విలువలతో అమలు చేయబడుతుంది. ఇది చాలా సౌకర్యంగా ఉంటుంది.
రెండవ మార్గం. ఇది మా మౌలిక సదుపాయాలలో మార్పులపై ఆధారపడి null_resource యొక్క ఉపయోగం. కొన్ని వనరుల ID మారిన వెంటనే మనం అదే లోకల్-exeకి కాల్ చేయవచ్చు.
సహజంగానే, ఇదంతా కాగితంపై సున్నితంగా ఉంటుంది, ఎందుకంటే అమెజాన్, ఇతర పబ్లిక్ ప్రొవైడర్ల మాదిరిగానే, దాని స్వంత అంచు కేసులను కలిగి ఉంది.
అత్యంత సాధారణ అంచు కేసు ఏమిటంటే, మీరు AWS ఖాతాను తెరిచినప్పుడు, మీరు ఏ ప్రాంతాలను ఉపయోగిస్తున్నారనేది ముఖ్యం; ఈ ఫీచర్ అక్కడ ప్రారంభించబడిందా; మీరు దీన్ని డిసెంబర్ 2013 తర్వాత తెరిచి ఉండవచ్చు; మీరు VPC మొదలైన వాటిలో డిఫాల్ట్గా ఉపయోగిస్తున్నారు. చాలా పరిమితులు ఉన్నాయి. మరియు అమెజాన్ వాటిని డాక్యుమెంటేషన్ అంతటా చెల్లాచెదురు చేసింది.
నేను నివారించడానికి సిఫార్సు చేసిన కొన్ని విషయాలు ఉన్నాయి.
ప్రారంభించడానికి, Terraform ప్లాన్ లేదా Terraform CLI లోపల అన్ని రహస్య ఆర్గ్యుమెంట్లను నివారించండి. ఇవన్నీ tfvars ఫైల్లో లేదా ఎన్విరాన్మెంట్ వేరియబుల్లో పెట్టవచ్చు.
కానీ మీరు ఈ మొత్తం మేజిక్ ఆదేశాన్ని గుర్తుంచుకోవలసిన అవసరం లేదు. టెర్రాఫార్మ్ ప్లాన్ - var మరియు ఆఫ్ మేము వెళ్తాము. మొదటి వేరియబుల్ var, రెండవ వేరియబుల్ var, మూడవది, నాల్గవది. నేను తరచుగా ఉపయోగించే కోడ్గా మౌలిక సదుపాయాల యొక్క అతి ముఖ్యమైన సూత్రం ఏమిటంటే, కోడ్ని చూడటం ద్వారా, అక్కడ ఏమి అమలు చేయబడిందో, ఏ స్థితిలో మరియు ఏ విలువలతో నాకు స్పష్టమైన అవగాహన ఉండాలి. కాబట్టి నేను డాక్యుమెంటేషన్ చదవనవసరం లేదు లేదా మా క్లస్టర్ని రూపొందించడానికి వాస్య ఏ పారామితులను ఉపయోగించాడు అని అడగాల్సిన అవసరం లేదు. నేను tfvars పొడిగింపుతో ఫైల్ను తెరవాలి, ఇది తరచుగా పర్యావరణానికి సరిపోలుతుంది మరియు అక్కడ ఉన్న ప్రతిదాన్ని చూడాలి.
అలాగే, పరిధిని తగ్గించడానికి లక్ష్య వాదనలను ఉపయోగించవద్దు. దీని కోసం చిన్న ఇన్ఫ్రాస్ట్రక్చర్ మాడ్యూళ్లను ఉపయోగించడం చాలా సులభం.
అలాగే, సమాంతరతను పరిమితం చేయడం మరియు పెంచడం అవసరం లేదు. నేను 150 వనరులను కలిగి ఉంటే మరియు నేను అమెజాన్ సమాంతరతను డిఫాల్ట్ 10 నుండి 100కి పెంచాలనుకుంటే, చాలా మటుకు ఏదో తప్పు జరుగుతుంది. లేదా ఇప్పుడు బాగానే ఉండవచ్చు, కానీ మీరు చాలా ఎక్కువ కాల్స్ చేస్తున్నారని అమెజాన్ చెప్పినప్పుడు, మీరు ఇబ్బందుల్లో పడతారు.
Terraform ఈ సమస్యలను చాలా వరకు పునఃప్రారంభించడానికి ప్రయత్నిస్తుంది, కానీ మీరు దాదాపు ఏమీ సాధించలేరు. మీరు AWS API లోపల లేదా టెర్రాఫార్మ్ ప్రొవైడర్ లోపల ఏదైనా బగ్ను ఎదుర్కొంటే సమాంతరత=1 ఉపయోగించాల్సిన ముఖ్యమైన విషయం. ఆపై మీరు పేర్కొనాలి: parallelism=1 మరియు Terraform ఒక కాల్ పూర్తి చేసే వరకు వేచి ఉండండి, ఆపై రెండవది, ఆపై మూడవది. వాటిని ఒక్కొక్కటిగా ప్రయోగిస్తాడు.
ప్రజలు నన్ను తరచుగా అడుగుతారు, "టెర్రాఫార్మ్ వర్క్స్పేస్లు చెడ్డవి అని నేను ఎందుకు అనుకుంటున్నాను?" ఇన్ఫ్రాస్ట్రక్చర్ సూత్రం కోడ్గా ఏ మౌలిక సదుపాయాలు సృష్టించబడిందో మరియు ఏ విలువలతో రూపొందించబడిందో చూడడమే అని నేను నమ్ముతున్నాను.
వర్క్స్పేస్లు వినియోగదారులు సృష్టించబడలేదు. Terraform వర్క్స్పేస్లు లేకుండా మనం జీవించలేమని వినియోగదారులు GitHub సమస్యలలో వ్రాసారని దీని అర్థం కాదు. లేదు ఇలా కాదు. టెర్రాఫార్మ్ ఎంటర్ప్రైజ్ ఒక వాణిజ్య పరిష్కారం. HashiCorp నుండి Terraform మాకు వర్క్స్పేస్లు అవసరమని నిర్ణయించుకున్నాము, కాబట్టి మేము దానిని ఫైల్ చేసాము. దీన్ని ప్రత్యేక ఫోల్డర్లో ఉంచడం చాలా సులభం అని నేను భావిస్తున్నాను. అప్పుడు కొంచెం ఎక్కువ ఫైల్స్ ఉంటాయి, కానీ అది స్పష్టంగా ఉంటుంది.
కోడ్తో ఎలా పని చేయాలి? నిజానికి, జాబితాలతో పని చేయడం మాత్రమే నొప్పి. మరియు టెర్రాఫార్మ్ని సులభంగా తీసుకోండి. ఇది మీ కోసం ప్రతిదీ గొప్పగా చేసే విషయం కాదు. డాక్యుమెంటేషన్లో వ్రాసిన ప్రతిదాన్ని అక్కడ నెట్టాల్సిన అవసరం లేదు.
నివేదిక యొక్క అంశం "భవిష్యత్తు కోసం" వ్రాయబడింది. నేను దీని గురించి చాలా క్లుప్తంగా మాట్లాడతాను. భవిష్యత్తు కోసం, దీని అర్థం 0.12 త్వరలో విడుదల అవుతుంది.
0.12 ఒక టన్ను కొత్త అంశాలు. మీరు సాధారణ ప్రోగ్రామింగ్ నుండి వచ్చినట్లయితే, మీరు అన్ని రకాల డైనమిక్ బ్లాక్లు, లూప్లు, సరైన మరియు షరతులతో కూడిన పోలిక కార్యకలాపాలను కోల్పోతారు, ఇక్కడ ఎడమ మరియు కుడి వైపులా ఏకకాలంలో లెక్కించబడవు, కానీ పరిస్థితిని బట్టి. మీరు చాలా మిస్ అవుతున్నారు, కాబట్టి 0.12 మీ కోసం దాన్ని పరిష్కరిస్తుంది.
కానీ! మీరు రెడీమేడ్ మాడ్యూల్స్ మరియు థర్డ్-పార్టీ సొల్యూషన్లను ఉపయోగించి తక్కువ మరియు మరింత సరళంగా వ్రాస్తే, మీరు వేచి ఉండాల్సిన అవసరం లేదు మరియు 0.12 వచ్చి మీ కోసం ప్రతిదీ పరిష్కరిస్తుంది.
నివేదికకు ధన్యవాదాలు! మీరు ఇన్ఫ్రాస్ట్రక్చర్ గురించి కోడ్గా మాట్లాడారు మరియు పరీక్షల గురించి అక్షరాలా ఒక్క మాట చెప్పారు. మాడ్యూల్స్లో పరీక్షలు అవసరమా? ఇది ఎవరి బాధ్యత? నేను దానిని నేనే వ్రాయాలనుకుంటున్నానా లేదా మాడ్యూల్స్ యొక్క బాధ్యతా?
మేము ప్రతిదీ పరీక్షించాలని నిర్ణయించుకున్నట్లు వచ్చే ఏడాది నివేదికలతో నిండి ఉంటుంది. ఏమి పరీక్షించాలి అనేది అతిపెద్ద ప్రశ్న. విభిన్న ప్రొవైడర్ల నుండి చాలా డిపెండెన్సీలు, చాలా పరిమితులు ఉన్నాయి. మీరు మరియు నేను మాట్లాడుతున్నప్పుడు మరియు మీరు ఇలా చెప్పినప్పుడు: "నాకు పరీక్షలు కావాలి," అప్పుడు నేను అడుగుతాను: "మీరు ఏమి పరీక్షిస్తారు?" మీరు మీ ప్రాంతంలో పరీక్ష చేస్తారని చెప్పారు. అప్పుడు నా ప్రాంతంలో ఇది పని చేయదని నేను చెప్తున్నాను. అంటే, మేము దీనిని కూడా అంగీకరించలేము. సాంకేతిక సమస్యలు ఎక్కువగా ఉన్నాయని చెప్పక తప్పదు. అంటే సరిపోయేలా ఈ పరీక్షలు ఎలా రాయాలి.
నేను ఈ అంశంపై చురుకుగా పరిశోధన చేస్తున్నాను, అంటే మీరు వ్రాసిన మౌలిక సదుపాయాల ఆధారంగా పరీక్షలను స్వయంచాలకంగా ఎలా రూపొందించాలి. అంటే, మీరు ఈ కోడ్ వ్రాసినట్లయితే, నేను దీన్ని అమలు చేయాలి, దీని ఆధారంగా నేను పరీక్షలను సృష్టించగలను.
టెర్టెస్ట్ టెర్రాఫార్మ్ కోసం ఇంటిగ్రేషన్ పరీక్షలను వ్రాయడానికి మిమ్మల్ని అనుమతించే అత్యంత తరచుగా ప్రస్తావించబడిన లైబ్రరీలలో ఒకటి. ఇది యుటిలిటీలలో ఒకటి. నేను DSL రకాన్ని ఇష్టపడతాను, ఉదాహరణకు, rspec.
అంటోన్, నివేదికకు ధన్యవాదాలు! నా పేరు వాలెరీ. ఒక చిన్న తాత్విక ప్రశ్న అడుగుతాను. అక్కడ, షరతులతో, ప్రొవిజనింగ్, విస్తరణ ఉంది. ప్రొవిజనింగ్ నా ఇన్ఫ్రాస్ట్రక్చర్ని సృష్టిస్తుంది, విస్తరణలో మేము దానిని ఉపయోగకరమైన వాటితో నింపుతాము, ఉదాహరణకు, సర్వర్లు, అప్లికేషన్లు మొదలైనవి. మరియు టెర్రాఫార్మ్ ప్రొవిజనింగ్కు ఎక్కువ, మరియు అన్సిబుల్ విస్తరణకు ఎక్కువ అని నా తలపై ఉంది, ఎందుకంటే అన్సిబుల్ భౌతిక మౌలిక సదుపాయాల కోసం కూడా nginx, Postgresని ఇన్స్టాల్ చేయడానికి మిమ్మల్ని అనుమతిస్తుంది. కానీ అదే సమయంలో, Ansible కేటాయింపులను అనుమతించినట్లు కనిపిస్తోంది, ఉదాహరణకు, Amazon లేదా Google వనరుల. కానీ టెర్రాఫార్మ్ దాని మాడ్యూల్లను ఉపయోగించి కొన్ని సాఫ్ట్వేర్లను అమలు చేయడానికి మిమ్మల్ని అనుమతిస్తుంది. మీ దృక్కోణం నుండి, టెర్రాఫార్మ్ మరియు అన్సిబుల్ మధ్య నడిచే సరిహద్దు ఏదైనా ఉందా, ఎక్కడ మరియు ఏది ఉపయోగించడం మంచిది? లేదా, ఉదాహరణకు, Ansible ఇప్పటికే చెత్త అని మీరు అనుకుంటున్నారా, మీరు ప్రతిదానికీ Terraform ఉపయోగించడానికి ప్రయత్నించాలి?
మంచి ప్రశ్న, వాలెరీ. 2014 నుండి ప్రయోజనం పరంగా Terraform మారలేదని నేను నమ్ముతున్నాను. ఇది మౌలిక సదుపాయాల కోసం సృష్టించబడింది మరియు మౌలిక సదుపాయాల కోసం మరణించింది. కాన్ఫిగరేషన్ మేనేజ్మెంట్ అన్సిబుల్ కోసం మాకు ఇంకా అవసరం ఉంది మరియు ఉంటుంది. లాంచ్_కాన్ఫిగరేషన్ లోపల వినియోగదారు డేటా ఉండటం సవాలు. మరియు అక్కడ మీరు Ansible, మొదలైనవి లాగండి. ఇది నాకు బాగా నచ్చిన ప్రామాణిక వ్యత్యాసం.
మేము అందమైన మౌలిక సదుపాయాల గురించి మాట్లాడుతున్నట్లయితే, ఈ చిత్రాన్ని సేకరించే ప్యాకర్ వంటి యుటిలిటీలు ఉన్నాయి. ఆపై Terraform ఈ చిత్రాన్ని కనుగొనడానికి మరియు దాని launch_configurationని నవీకరించడానికి డేటా మూలాన్ని ఉపయోగిస్తుంది. అంటే, ఈ విధంగా పైప్లైన్ అంటే మనం మొదట ట్రాకర్ను లాగి, ఆపై టెర్రాఫార్మ్ను లాగండి. మరియు నిర్మాణం జరిగితే, కొత్త మార్పు సంభవిస్తుంది.
హలో! నివేదికకు ధన్యవాదాలు! నా పేరు మిషా, RBS కంపెనీ. మీరు రిసోర్స్ను క్రియేట్ చేస్తున్నప్పుడు ప్రొవిజనర్ ద్వారా Ansibleకి కాల్ చేయవచ్చు. అన్సిబుల్లో డైనమిక్ ఇన్వెంటరీ అనే అంశం కూడా ఉంది. మరియు మీరు మొదట Terraform కాల్ చేయవచ్చు, ఆపై Ansible కాల్ చేయవచ్చు, ఇది రాష్ట్రం నుండి వనరులను తీసుకొని దానిని అమలు చేస్తుంది. ఏది మంచిది?
ప్రజలు రెండింటినీ సమాన విజయంతో ఉపయోగిస్తున్నారు. మేము ఆటోస్కేలింగ్ సమూహం గురించి మాట్లాడకపోతే, అన్సిబుల్లోని డైనమిక్ ఇన్వెంటరీ అనుకూలమైన విషయం అని నాకు అనిపిస్తోంది. ఎందుకంటే ఆటోస్కేలింగ్ సమూహంలో మనకు ఇప్పటికే మా స్వంత టూల్కిట్ ఉంది, దీనిని లాంచ్_కాన్ఫిగరేషన్ అంటారు. లాంచ్_కాన్ఫిగరేషన్లో మేము కొత్త రిసోర్స్ను సృష్టించినప్పుడు ప్రారంభించాల్సిన ప్రతిదాన్ని రికార్డ్ చేస్తాము. అందువల్ల, అమెజాన్తో, డైనమిక్ ఇన్వెంటరీని ఉపయోగించడం మరియు Terraform ts ఫైల్ను చదవడం, నా అభిప్రాయం ప్రకారం, ఓవర్కిల్. మరియు మీరు “ఆటోస్కేలింగ్ సమూహం” అనే భావన లేని ఇతర సాధనాలను ఉపయోగిస్తే, ఉదాహరణకు, మీరు ఆటోస్కేలింగ్ సమూహం లేని డిజిటల్ ఓషన్ లేదా ఇతర ప్రొవైడర్లను ఉపయోగిస్తే, అక్కడ మీరు APIని మాన్యువల్గా లాగాలి, IP చిరునామాలను కనుగొని, సృష్టించాలి. ఒక డైనమిక్ ఇన్వెంటరీ ఫైల్ , మరియు Ansible ఇప్పటికే దాని ద్వారా తిరుగుతుంది. అంటే, Amazon కోసం launch_configuration ఉంది మరియు అన్నిటికీ డైనమిక్ ఇన్వెంటరీ ఉంది.