അൻസിബിളിൽ സ്റ്റാറ്റിക്, ഡൈനാമിക് ഇൻവെന്ററികൾ എങ്ങനെ ഉപയോഗിക്കാം - ഭാഗം 4


അൻസിബിൾ സീരീസിന്റെ ഈ ഭാഗം 4 ൽ, അൻസിബിളിലെ ഹോസ്റ്റുകളുടെ ഗ്രൂപ്പുകളെ നിർവ്വചിക്കുന്നതിന് സ്റ്റാറ്റിക്, ഡൈനാമിക് ഇൻവെന്ററി എങ്ങനെ ഉപയോഗിക്കാമെന്ന് ഞങ്ങൾ വിശദീകരിക്കും.

ഒരു Ansible-ൽ, Ansible കൺട്രോൾ നോഡ് നിയന്ത്രിക്കുന്ന മാനേജ്ഡ് ഹോസ്റ്റുകൾ അല്ലെങ്കിൽ സെർവറുകൾ ഒരു ഹോസ്റ്റ് ഇൻവെന്ററി ഫയലിൽ നിർവചിച്ചിരിക്കുന്നു.

നിയന്ത്രിത ഹോസ്റ്റുകളെ ഒന്നുകിൽ വ്യക്തിഗത എൻട്രികളായി ലിസ്റ്റുചെയ്യാം അല്ലെങ്കിൽ ഞങ്ങൾ പിന്നീട് കാണുന്നതുപോലെ ഒരു ഗ്രൂപ്പിന്റെ പേരിൽ വർഗ്ഗീകരിക്കാം. അൻസിബിളിൽ, രണ്ട് തരം ഇൻവെന്ററി ഫയലുകൾ ഉണ്ട്: സ്റ്റാറ്റിക്, ഡൈനാമിക്.

നമുക്ക് ഇവ ഓരോന്നും നോക്കാം, അവ എങ്ങനെ കൈകാര്യം ചെയ്യാം എന്ന് നോക്കാം. ഇപ്പോൾ, നിങ്ങളുടെ കൺട്രോൾ നോഡിൽ നിങ്ങൾ ഇതിനകം തന്നെ Ansible ഇൻസ്റ്റാൾ ചെയ്തിട്ടുണ്ടെന്നും നിങ്ങളുടെ മാനേജ്ഡ് ഹോസ്റ്റുകളിലേക്ക് പാസ്uവേഡ് ഇല്ലാത്ത SSH കണക്ഷൻ കോൺഫിഗർ ചെയ്തിട്ടുണ്ടെന്നും ഞങ്ങൾ അനുമാനിക്കുന്നു.

അൻസിബിളിൽ, ഒരു സ്റ്റാറ്റിക് ഇൻവെന്ററി ഫയൽ എന്നത് ഒരു പ്ലെയിൻ ടെക്സ്റ്റ് ഫയലാണ്, അതിൽ ഹോസ്റ്റ് പേരുകളോ IP വിലാസങ്ങളോ ഉപയോഗിച്ച് ഒരു ഹോസ്റ്റ് ഗ്രൂപ്പിന് കീഴിൽ പ്രഖ്യാപിച്ച മാനേജ് ചെയ്ത ഹോസ്റ്റുകളുടെ ഒരു ലിസ്റ്റ് അടങ്ങിയിരിക്കുന്നു.

ഒരു ഹോസ്റ്റ് ഗ്രൂപ്പിന്റെ പേര് ചതുര ബ്രാക്കറ്റുകളിൽ ഉൾപ്പെടുത്തിയിട്ടുണ്ട്, അതായത് [group name]. നിയന്ത്രിത ഹോസ്റ്റ് എൻട്രികൾ പിന്നീട് ഗ്രൂപ്പിന്റെ പേരിന് താഴെയായി പട്ടികപ്പെടുത്തിയിരിക്കുന്നു, ഓരോന്നിനും അതിന്റേതായ ലൈനിൽ. നേരത്തെ ചർച്ച ചെയ്തതുപോലെ, ഹോസ്റ്റുകളെ ഹോസ്റ്റ്നാമങ്ങൾ അല്ലെങ്കിൽ IP വിലാസങ്ങൾ ഉപയോഗിച്ചാണ് ലിസ്റ്റ് ചെയ്തിരിക്കുന്നത്.

[group name]

Host A ip_address 
Host B ip_address
Host c ip_address

ചിത്രീകരണ ആവശ്യങ്ങൾക്കായി, ഞങ്ങൾ ഒരു സ്റ്റാറ്റിക് ഇൻവെന്ററി ഫയൽ സൃഷ്ടിക്കും.

# mkdir test_lab && cd test_lab
# vim hosts
[webservers]
173.82.115.165

[database_servers]
173.82.220.239

[datacenter:children]
webservers
database_servers

ഫയൽ സംരക്ഷിച്ച് പുറത്തുകടക്കുക.

മുകളിലുള്ള ഇൻവെന്ററി ഫയലിൽ നിങ്ങൾക്ക് കാണാനാകുന്നതുപോലെ, ഞങ്ങൾ 2 ഹോസ്റ്റ് ഗ്രൂപ്പുകൾ സൃഷ്ടിച്ചു: webservers, database_servers. കൂടാതെ, മുകളിൽ കാണുന്നത് പോലെ : children പ്രത്യയം സൂചിപ്പിക്കുന്ന ഹോസ്റ്റ് ഗ്രൂപ്പുകളുടെ ഒരു കൂട്ടം ഉൾപ്പെടുന്ന ഡാറ്റാസെന്റർ എന്ന പേരിൽ ഒരു അധിക ഗ്രൂപ്പ് ഞങ്ങൾ സൃഷ്ടിച്ചിട്ടുണ്ട്.

ആതിഥേയരുടെ ഗ്രൂപ്പുകളെ ഒരു ഗ്രൂപ്പിന്റെ പേരിൽ സ്ഥാപിക്കാനും Ansible അനുവദിക്കുന്നു. മുകളിലുള്ള ഇൻവെന്ററി ഫയലിൽ, വെബ്uസെർവറുകളും ഡാറ്റാബേസ്_സെർവേഴ്uസ് ഗ്രൂപ്പുകളും ഡാറ്റാസെന്ററിന് കീഴിൽ സ്ഥാപിച്ചിരിക്കുന്നു.

ശ്രദ്ധിക്കുക: നിയന്ത്രിത ഹോസ്റ്റുകളെ ഒരു ഹോസ്റ്റ് ഗ്രൂപ്പിൽ സ്ഥാപിക്കുന്നത് നിർബന്ധമല്ല. ഉദാഹരണത്തിന്, അവരുടെ ഹോസ്റ്റ്നാമങ്ങളോ ഐപി വിലാസങ്ങളോ ഉപയോഗിച്ച് നിങ്ങൾക്ക് അവയെ പട്ടികപ്പെടുത്താം.

173.82.202.239
172.82.115.165
load_balancer.pnl.com

ഹോസ്റ്റ് ഇൻവെന്ററി ഫയൽ റഫറൻസ് ചെയ്യുന്നതിന് നമുക്ക് ഇപ്പോൾ കുറച്ച് Ansible കമാൻഡുകൾ ഉപയോഗിക്കാം. ഇൻവെന്ററി മാനേജ്മെന്റിനുള്ള അടിസ്ഥാന വാക്യഘടന കാണിച്ചിരിക്കുന്നത് പോലെയാണ്.

$ ansible {host-pattern} -i /path/of/inventory/file --list-hosts

ഉദാഹരണത്തിന്,

$ ansible all -i /root/test_labs/hosts --list-hosts

പകരമായി, 'all' ആർഗ്യുമെന്റ് മാറ്റിസ്ഥാപിക്കാൻ നിങ്ങൾക്ക് * വൈൽഡ്കാർഡ് പ്രതീകം ഉപയോഗിക്കാം.

$ ansible * -i /root/test_labs/hosts --list-hosts

ഒരു ഗ്രൂപ്പിലെ ഹോസ്റ്റുകളെ ലിസ്റ്റുചെയ്യുന്നതിന്, ഹോസ്റ്റ് പാറ്റേണിന്റെ സ്ഥാനത്ത് ഹോസ്റ്റ് ഗ്രൂപ്പ് വ്യക്തമാക്കുക.

$ ansible webservers -i /root/test_labs/hosts --list-hosts

ഒരു കോൺഫിഗറേഷനിൽ - പ്രത്യേകിച്ച് AWS പോലുള്ള ക്ലൗഡ് സെറ്റപ്പ്, നിങ്ങൾ സെർവറുകൾ ചേർക്കുമ്പോഴോ ഡീകമ്മീഷൻ ചെയ്യുമ്പോഴോ ഇൻവെന്ററി ഫയൽ നിരന്തരം മാറിക്കൊണ്ടിരിക്കും, ഇൻവെന്ററി ഫയലിൽ നിർവചിച്ചിരിക്കുന്ന ഹോസ്റ്റുകളിൽ ടാബുകൾ സൂക്ഷിക്കുന്നത് ഒരു യഥാർത്ഥ വെല്ലുവിളിയായി മാറുന്നു. ഹോസ്റ്റ് ഫയലിലേക്ക് മടങ്ങുകയും ഹോസ്റ്റുകളുടെ ലിസ്റ്റ് അവരുടെ ഐപി വിലാസങ്ങൾ ഉപയോഗിച്ച് അപ്uഡേറ്റ് ചെയ്യുകയും ചെയ്യുന്നത് അസൗകര്യമായി മാറുന്നു.

ഇവിടെയാണ് ഒരു ഡൈനാമിക് ഇൻവെന്ററി കളിക്കുന്നത്. അപ്പോൾ എന്താണ് ഡൈനാമിക് ഇൻവെന്ററി? പൈത്തൺ, പിഎച്ച്പി അല്ലെങ്കിൽ മറ്റേതെങ്കിലും പ്രോഗ്രാമിംഗ് ഭാഷയിൽ എഴുതിയ ഒരു സ്ക്രിപ്റ്റാണ് ഡൈനാമിക് ഇൻവെന്ററി. ഒരു വെർച്വൽ സെർവർ നിർത്തി വീണ്ടും ആരംഭിച്ചാൽ IP വിലാസങ്ങൾ മാറുന്ന AWS പോലുള്ള ക്ലൗഡ് പരിതസ്ഥിതികളിൽ ഇത് ഉപയോഗപ്രദമാണ്.

ഗൂഗിൾ കമ്പ്യൂട്ട് എഞ്ചിൻ, ആമസോൺ ഇസി2 ഇൻസ്റ്റൻസ്, ഓപ്പൺസ്റ്റാക്ക്, റാക്ക്uസ്uപേസ്, കോബ്ലർ തുടങ്ങിയ പൊതു ക്ലൗഡ് പ്ലാറ്റ്uഫോമുകൾക്കായി അൻസിബിൾ ഇതിനകം ഇൻവെന്ററി സ്uക്രിപ്റ്റുകൾ വികസിപ്പിച്ചെടുത്തിട്ടുണ്ട്.

  • സ്ക്രിപ്റ്റുകൾ ഉപയോഗിച്ച് വിവരങ്ങൾ ശേഖരിക്കുന്നതിനാൽ ഡൈനാമിക് ഇൻവെന്ററികൾ മാനുഷിക പിശകുകൾ കുറയ്ക്കുന്നതിനുള്ള ഒരു മികച്ച ജോലി ചെയ്യുന്നു.
  • ഇൻവെന്ററികൾ കൈകാര്യം ചെയ്യുന്നതിന് കുറഞ്ഞ പ്രയത്നം ആവശ്യമാണ്.

നിങ്ങൾക്ക് ഇഷ്ടമുള്ള ഒരു പ്രോഗ്രാമിംഗ് ഭാഷയിൽ നിങ്ങളുടെ സ്വന്തം ഇഷ്ടാനുസൃത ഡൈനാമിക് ഇൻവെന്ററി എഴുതാം. ഉചിതമായ ഓപ്ഷനുകൾ കടന്നുപോകുമ്പോൾ ഇൻവെന്ററി JSON-ൽ ഒരു ഫോർമാറ്റ് നൽകണം.

ഒരു ഡൈനാമിക് ഇൻവെന്ററി സൃഷ്uടിക്കാൻ ഉപയോഗിക്കുന്ന ഒരു സ്uക്രിപ്റ്റ് എക്uസിക്യൂട്ടബിൾ ആക്കേണ്ടതുണ്ട്, അതുവഴി അൻസിബിളിന് അത് ഉപയോഗിക്കാൻ കഴിയും.

ഒരു ഡൈനാമിക് ഇൻവെന്ററി സ്ക്രിപ്റ്റിനുള്ളിലെ ഹോസ്റ്റുകളെ കുറിച്ചുള്ള വിവരങ്ങൾ വീണ്ടെടുക്കാൻ പ്രവർത്തിപ്പിക്കുക.

# ./script --list 

നേരത്തെ സൂചിപ്പിച്ചതുപോലെ, ഔട്ട്uപുട്ട് താഴെയുള്ള ഫോർമാറ്റിൽ JSON-ൽ ആയിരിക്കണം.

  • ഓരോ ഗ്രൂപ്പിനും മാനേജ് ചെയ്യുന്ന ഹോസ്റ്റുകളുടെ ഒരു ലിസ്റ്റ്
  • വേരിയബിളുകളുടെ ഒരു നിഘണ്ടു

  • ഹോസ്റ്റുകളും ഹോസ്റ്റ്uവാറുകളും

{
  "webservers": {
    "hosts": [
      "webserver1.example.com",
      "webserver2.example.com"
    ],
    "vars": {}
  },
  "database_servers": {
    "hosts": [
      "mysql_db1",
      "mysql_db2"
    ],
    "vars": {}
  },
  "_meta": {
    "hostvars": {
      "mysql_db2": {},
      "webserver2.example.com": {},
      "webserver1.example.com": {}, 
      "mysql_db1": {}
    }
  }
}

ഈ ലേഖനത്തിൽ, സ്റ്റാറ്റിക്, ഡൈനാമിക് ഇൻവെന്ററികൾ എങ്ങനെ സൃഷ്ടിക്കാമെന്ന് ഞങ്ങൾ തെളിയിച്ചിട്ടുണ്ട്. ചുരുക്കത്തിൽ, ഒരു സ്റ്റാറ്റിക് ഇൻവെന്ററി ഫയൽ എന്നത് നിയന്ത്രിത ഹോസ്റ്റുകളുടെയോ റിമോട്ട് നോഡുകളുടെയോ ഒരു ലിസ്റ്റ് അടങ്ങുന്ന ഒരു പ്ലെയിൻ ടെക്സ്റ്റ് ഫയലാണ്, അവയുടെ നമ്പറുകളും IP വിലാസങ്ങളും സ്ഥിരമായി നിലനിൽക്കുന്നു.

മറുവശത്ത്, നിങ്ങൾ പുതിയ ഹോസ്റ്റുകൾ ചേർക്കുമ്പോഴോ പഴയവ ഡീകമ്മീഷൻ ചെയ്യുമ്പോഴോ ഒരു ഡൈനാമിക് ഹോസ്റ്റ് ഫയൽ മാറിക്കൊണ്ടിരിക്കും. നിങ്ങൾ പുതിയ ഹോസ്റ്റ് സിസ്റ്റങ്ങൾ നിർത്തുകയും ആരംഭിക്കുകയും ചെയ്യുമ്പോൾ ഹോസ്റ്റുകളുടെ IP വിലാസങ്ങളും ചലനാത്മകമാണ്. ഈ ട്യൂട്ടോറിയൽ വിവരദായകമാണെന്ന് നിങ്ങൾ കണ്ടെത്തിയെന്ന് ഞങ്ങൾ പ്രതീക്ഷിക്കുന്നു.