అన్సిబుల్‌ను వేగవంతం చేస్తోంది

అన్సిబుల్‌ను వేగవంతం చేస్తోంది
డిఫాల్ట్ సెట్టింగ్‌లతో Ansible దాని పనిని చాలా త్వరగా చేయలేదనేది రహస్యం కాదు. వ్యాసంలో నేను దీనికి అనేక కారణాలను ఎత్తి చూపుతాను మరియు మీ ప్రాజెక్ట్ యొక్క వేగాన్ని వాస్తవానికి పెంచే ఉపయోగకరమైన కనీస సెట్టింగ్‌లను అందిస్తాను.

ఇక్కడ మరియు దిగువన మేము Ansible 2.9.x గురించి చర్చిస్తాము, ఇది మీకు ఇష్టమైన విధంగా తాజాగా సృష్టించబడిన virtualenvలో ఇన్‌స్టాల్ చేయబడింది.

ఇన్‌స్టాలేషన్ తర్వాత, మీ ప్లేబుక్ పక్కన “ansible.cfg” ఫైల్‌ను సృష్టించండి - ఈ స్థానం ప్రాజెక్ట్‌తో పాటు ఈ సెట్టింగ్‌లను బదిలీ చేయడానికి మిమ్మల్ని అనుమతిస్తుంది, అలాగే అవి చాలా స్వయంచాలకంగా లోడ్ అవుతాయి.

పైపులైనింగ్

పైప్‌లైనింగ్‌ను ఉపయోగించాల్సిన అవసరం గురించి కొందరు ఇప్పటికే విని ఉండవచ్చు, అనగా లక్ష్య సిస్టమ్ యొక్క ఫైల్ సిస్టమ్‌కు మాడ్యూల్‌లను కాపీ చేయడం కాదు, కానీ బేస్ 64లో చుట్టబడిన జిప్ ఆర్కైవ్‌ను నేరుగా పైథాన్ ఇంటర్‌ప్రెటర్ యొక్క stdin‌కు బదిలీ చేయడం గురించి విని ఉండవచ్చు, కానీ ఇతరులు అలా చేయకపోవచ్చు, కానీ వాస్తవం వాస్తవంగా మిగిలిపోయింది: ఈ సెట్టింగ్ ఇప్పటికీ తక్కువగా అంచనా వేయబడింది. దురదృష్టవశాత్తూ, సుడోను కాన్ఫిగర్ చేయడానికి ఉపయోగించే కొన్ని ప్రముఖ లైనక్స్ డిస్ట్రిబ్యూషన్‌లు డిఫాల్ట్‌గా బాగా లేవు - కాబట్టి ఈ కమాండ్‌కు tty (టెర్మినల్) అవసరం, కాబట్టి Ansible ఈ చాలా ఉపయోగకరమైన సెట్టింగ్‌ని డిఫాల్ట్‌గా డిసేబుల్ చేసింది.

pipelining = True

వాస్తవాలను సేకరిస్తున్నారు

డిఫాల్ట్ సెట్టింగ్‌లతో, ప్రతి నాటకం కోసం Ansible దానిలో పాల్గొనే అన్ని హోస్ట్‌ల కోసం వాస్తవాల సేకరణను ప్రారంభిస్తుందని మీకు తెలుసా? సాధారణంగా, మీకు తెలియకపోతే, ఇప్పుడు మీకు తెలుసు. ఇది జరగకుండా నిరోధించడానికి, మీరు వాస్తవాలను సేకరించడం కోసం స్పష్టమైన అభ్యర్థన మోడ్‌ను (స్పష్టమైన) లేదా స్మార్ట్ మోడ్‌ని ప్రారంభించాలి. ఇందులో, మునుపటి నాటకాలలో ఎదుర్కోని హోస్ట్‌ల నుండి మాత్రమే వాస్తవాలు సేకరించబడతాయి.
UPD. కాపీ చేసేటప్పుడు, మీరు ఈ సెట్టింగ్‌లలో ఒకదాన్ని ఎంచుకోవాలి.

gathering = smart|explicit

ssh కనెక్షన్‌లను మళ్లీ ఉపయోగించడం

మీరు ఎప్పుడైనా డీబగ్గింగ్ మోడ్‌లో Ansibleని అమలు చేసినట్లయితే ("v" ఎంపిక, ఒకటి నుండి తొమ్మిది సార్లు పునరావృతం అవుతుంది), ssh కనెక్షన్‌లు నిరంతరం తయారు చేయబడటం మరియు విచ్ఛిన్నం కావడం మీరు గమనించి ఉండవచ్చు. కాబట్టి, ఇక్కడ కూడా కొన్ని సూక్ష్మబేధాలు ఉన్నాయి.

మీరు ఒకేసారి రెండు స్థాయిలలో ssh కనెక్షన్‌ని మళ్లీ స్థాపించే దశను నివారించవచ్చు: రెండూ నేరుగా ssh క్లయింట్‌లో మరియు మేనేజర్ నుండి నిర్వహించబడే హోస్ట్‌కి ఫైల్‌లను బదిలీ చేసేటప్పుడు.
ఓపెన్ ssh కనెక్షన్‌ని మళ్లీ ఉపయోగించడానికి, ssh క్లయింట్‌కు అవసరమైన కీలను పాస్ చేయండి. అప్పుడు అది కింది వాటిని చేయడం ప్రారంభిస్తుంది: మొదటిసారిగా ssh కనెక్షన్‌ని ఏర్పాటు చేసినప్పుడు, ఇది అదనంగా కంట్రోల్ సాకెట్ అని పిలవబడే ఒకదాన్ని సృష్టిస్తుంది, తదుపరి ఇన్‌స్టాలేషన్‌లలో, ఇది ఈ సాకెట్ ఉనికిని తనిఖీ చేస్తుంది మరియు విజయవంతమైతే, తిరిగి ఉపయోగించుకోండి ఇప్పటికే ఉన్న ssh కనెక్షన్. మరియు ఇవన్నీ అర్ధమయ్యేలా చేయడానికి, నిష్క్రియంగా ఉన్నప్పుడు కనెక్షన్‌ని నిర్వహించడానికి సమయాన్ని సెట్ చేద్దాం. మీరు మరింత చదవవచ్చు ssh డాక్యుమెంటేషన్, మరియు Ansible సందర్భంలో మేము ssh క్లయింట్‌కు అవసరమైన ఎంపికలను “ఫార్వార్డింగ్” ఉపయోగిస్తాము.

ssh_args = "-o ControlMaster=auto -o ControlPersist=15m"

నిర్వహించబడే హోస్ట్‌కి ఫైల్‌లను బదిలీ చేస్తున్నప్పుడు ఇప్పటికే తెరిచిన ssh కనెక్షన్‌ని మళ్లీ ఉపయోగించడానికి, మరొక తెలియని సెట్టింగ్ ssh_tranfer_methodని పేర్కొనండి. ఈ విషయంపై డాక్యుమెంటేషన్ చాలా ఉంది జిడ్డుగల మరియు తప్పుదారి పట్టించేది, ఎందుకంటే ఈ ఎంపిక చాలా బాగా పనిచేస్తుంది! కానీ చదవడం సోర్స్ కోడ్ సరిగ్గా ఏమి జరుగుతుందో అర్థం చేసుకోవడానికి మిమ్మల్ని అనుమతిస్తుంది: dd కమాండ్ నిర్వహించబడే హోస్ట్‌లో ప్రారంభించబడుతుంది, నేరుగా కావలసిన ఫైల్‌తో పని చేస్తుంది.

transfer_method = piped

మార్గం ద్వారా, "అభివృద్ధి" శాఖలో ఈ సెట్టింగ్ కూడా ఉంది ఎక్కడికీ వెళ్ళడం లేదు.

కత్తికి భయపడవద్దు, ఫోర్క్‌కు భయపడండి

మరొక ఉపయోగకరమైన సెట్టింగ్ ఫోర్క్స్. ఇది హోస్ట్‌లకు ఏకకాలంలో కనెక్ట్ అయ్యే మరియు విధులను నిర్వర్తించే వర్కర్ ప్రక్రియల సంఖ్యను నిర్ణయిస్తుంది. భాషగా పైథాన్ యొక్క ప్రత్యేకతల కారణంగా, ప్రాసెస్‌లు ఉపయోగించబడతాయి, థ్రెడ్‌లు కాదు, ఎందుకంటే Ansible ఇప్పటికీ పైథాన్ 2.7కి మద్దతు ఇస్తుంది - మీ కోసం అసమకాలిక ప్రవర్తనను పరిచయం చేయడంలో అర్థం లేదు! డిఫాల్ట్‌గా Ansible పరుగులు ఐదు కార్మికులు, కానీ సరిగ్గా అడిగితే, అది మరిన్ని ప్రారంభించబడుతుంది:

forks = 20

కంట్రోల్ మెషీన్‌లో అందుబాటులో ఉన్న మెమరీ మొత్తానికి సంబంధించి ఇక్కడ కొన్ని ఇబ్బందులు ఉండవచ్చని నేను వెంటనే మిమ్మల్ని హెచ్చరిస్తున్నాను. మరో మాటలో చెప్పాలంటే, మీరు ఫోర్క్స్=100500 సెట్ చేయవచ్చు, అయితే ఇది పని చేస్తుందని ఎవరు చెప్పారు?

అన్నిటినీ కలిపి చూస్తే

ఫలితంగా, ansible.cfg (ini ఫార్మాట్), అవసరమైన సెట్టింగ్‌లు ఇలా ఉండవచ్చు:

[defaults]
gathering = smart|explicit
forks = 20
[ssh_connection]
pipelining = True
ssh_args = -o ControlMaster=auto -o ControlPersist=15m
transfer_method = piped

మరియు మీరు ఆరోగ్యకరమైన వ్యక్తి యొక్క సాధారణ YaML-ఇన్వెంటరీలో ప్రతిదీ దాచాలనుకుంటే, అది ఇలా కనిపిస్తుంది:

---
all:
  vars:
    ansible_ssh_pipelining: true
    ansible_ssh_transfer_method: piped
    ansible_ssh_args: -o ControlMaster=auto -o ControlPersist=15m

దురదృష్టవశాత్తూ, ఇది “సేకరణ = స్మార్ట్/స్పష్టమైన” మరియు “ఫోర్క్స్ = 20” సెట్టింగ్‌లతో పని చేయదు: వాటి YaML సమానమైనవి ఉనికిలో లేవు. మేము వాటిని ansible.cfgలో సెట్ చేస్తాము లేదా పర్యావరణ వేరియబుల్స్ ANSIBLE_GATHERING మరియు ANSIBLE_FORKS ద్వారా వాటిని పాస్ చేస్తాము.

మైటోజెన్ గురించి
- Mitogen గురించి ఇది ఎక్కడ ఉంది? - ప్రియమైన రీడర్, అడిగే హక్కు మీకు ఉంది. ఈ వ్యాసంలో ఎక్కడా లేదు. కానీ మీరు నిజంగా దాని కోడ్‌ను చదివి, మీ ప్లేబుక్ Mitogenతో ఎందుకు క్రాష్ అవుతుందో గుర్తించడానికి సిద్ధంగా ఉంటే, కానీ వనిల్లా అన్సిబుల్‌తో బాగా పని చేస్తుంది లేదా అదే ప్లేబుక్ ఇంతకు ముందు ఎందుకు బాగా పని చేస్తుందో, కానీ నవీకరణ తర్వాత వింత పనులు చేయడం ప్రారంభించినట్లయితే - బాగా, Mitogen సంభావ్యంగా మీ సాధనం కావచ్చు. దీన్ని వర్తింపజేయండి, అర్థం చేసుకోండి, కథనాలు రాయండి - నేను ఆసక్తితో చదువుతాను.

నేను వ్యక్తిగతంగా Mitogen ఎందుకు ఉపయోగించకూడదు? ఎందుకంటే గ్లాడియోలస్ పనులు నిజంగా సరళంగా మరియు ప్రతిదీ బాగానే ఉన్నంత వరకు మాత్రమే పని చేస్తుంది. అయితే, మీరు కొంచెం ఎడమ లేదా కుడి వైపుకు తిరిగితే - అంతే, మేము చేరుకున్నాము: ప్రతిస్పందనగా, కొన్ని అస్పష్టమైన మినహాయింపులు మీ వద్దకు ఎగురుతాయి మరియు చిత్రాన్ని పూర్తి చేయడానికి, "అందరికీ ధన్యవాదాలు" అనే సాధారణ పదబంధం మాత్రమే లేదు. , అందరూ స్వేచ్ఛగా ఉన్నారు. సాధారణంగా, నేను తదుపరి "భూగర్భ నాక్" కోసం కారణాలను కనుగొనడంలో సమయాన్ని వృథా చేయకూడదనుకుంటున్నాను.

ఈ సెట్టింగ్‌లలో కొన్ని పఠన ప్రక్రియలో కనుగొనబడ్డాయి సోర్స్ కోడ్ స్వీయ వివరణాత్మక పేరు "ssh.py" క్రింద కనెక్షన్ ప్లగ్ఇన్. మూలాధారాలను చూడడానికి, వాటిని చదవడానికి, అమలును తనిఖీ చేయడానికి, డాక్యుమెంటేషన్‌తో పోల్చడానికి ఇది వేరొకరిని ప్రేరేపించగలదని ఆశతో నేను పఠన ఫలితాలను పంచుకుంటాను - అన్నింటికంటే, ముందుగానే లేదా తరువాత ఇవన్నీ మీకు సానుకూల ఫలితాలను తెస్తాయి. అదృష్టం!

నమోదు చేసుకున్న వినియోగదారులు మాత్రమే సర్వేలో పాల్గొనగలరు. సైన్ ఇన్ చేయండిదయచేసి.

మీ ప్రాజెక్ట్‌లను వేగవంతం చేయడానికి మీరు కింది వాటిలో ఏ అన్సిబుల్ సెట్టింగ్‌లను ఉపయోగిస్తున్నారు?

  • 69,6%పైప్‌లైనింగ్=true32

  • 34,8%సేకరణ = తెలివైన/స్పష్టమైన16

  • 52,2%ssh_args = "-o ControlMaster=auto -o ControlPersist=..."24

  • 17,4%బదిలీ_పద్ధతి = పైప్డ్8

  • 63,0%ఫోర్కులు = XXX29

  • 6,5%ఇవేమీ కాదు, కేవలం Mitogen3

  • 8,7%Mitogen + ఈ సెట్టింగ్‌లలో ఏది నేను గమనిస్తాను4

46 మంది వినియోగదారులు ఓటు వేశారు. 21 వినియోగదారు దూరంగా ఉన్నారు.

Ansible గురించి మరిన్ని విషయాలు కావాలా?

  • 78,3%అవును, వాస్తవానికి54

  • 21,7%అవును, నాకు మరింత హార్డ్‌కోర్ అంశాలు కావాలి!15

  • 0,0%లేదు, మరియు ఇది ఏమీ అవసరం లేదు0

  • 0,0%లేదు, ఇది సంక్లిష్టమైనది!!!0

69 మంది వినియోగదారులు ఓటు వేశారు. 7 మంది వినియోగదారులు దూరంగా ఉన్నారు.

మూలం: www.habr.com

ఒక వ్యాఖ్యను జోడించండి