Ինչպես տեղադրել և կարգավորել Ansible-ը Ubuntu 20.04-ում
Այս ձեռնարկը գոյություն ունի ՕՀ-ի այս տարբերակների համար
- Ubuntu 22.04 (Jammy Jellyfish)
- Ubuntu 20.04 (Կիզակետային Fossa)
- Ubuntu 18.04 (Bionic Beaver)
Այս էջում
- Նախադրյալներ
- Տեղադրեք Ansible-ը
Գույքագրման ֆայլի կարգավորում
- Սերվերների կազմակերպում խմբերի և ենթախմբերի
Կարգավորեք SSH ստեղները
Գործարկել որոշ հիմնական հրամաններ
Ansible-ը շատ հայտնի կոնֆիգուրացիայի կառավարման գործիք է, որը նախատեսված է մեծ թվով սերվերների վերահսկման գործընթացը պարզեցնելու համար: Դուք կարող եք կառավարել այնքան սերվերներ և գործարկել գործընթացները միաժամանակ մեկ հանգույցից:
Ansible-ը չի պահանջում որևէ հատուկ ծրագրակազմ, որը պետք է տեղադրվի սերվերի հանգույցներում և կարող է կառավարել դրանք SSH-ի միջոցով:
Այս ուղեցույցում մենք կսովորենք, թե ինչպես տեղադրել և կարգավորել Ansible-ը Ubuntu 20.04 սերվերի վրա:
Նախադրյալներ
- Երկու կամ ավելի Ubuntu 20.04-ի վրա հիմնված սերվերային համակարգեր՝ տեղադրված OpenSSH սերվերով:
- Ե՛վ սերվերը, և՛ հանգույցները հասանելի են հանրային IP հասցեների միջոցով:
- Ansible սերվերում ստեղծված sudo-ի արտոնություններ ունեցող ոչ արմատային օգտատեր և Ansible սպասառուների վրա տեղադրված գաղտնաբառով օգտատեր:
Տեղադրեք Ansible-ը
Ansible-ի պաշտոնական պահոցը չի աջակցում Ubuntu 20.04-ը՝ այս ձեռնարկը գրելու պահին Ubuntu-ի python գրադարանում առկա սխալի պատճառով:
Բարեբախտաբար, Ubuntu-ն մատակարարվում է Ansible 2.9-ով, որը մենք կտեղադրենք: Գործարկեք հետևյալ հրամանը՝ Ansible-ը տեղադրելու համար։
$ sudo apt install ansible -y
Ստուգեք ձեր տեղադրումը` գործարկելով հետևյալ հրամանը.
$ ansible --version
ansible 2.9.6
config file = /etc/ansible/ansible.cfg
configured module search path = ['/home/username/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
ansible python module location = /usr/lib/python3/dist-packages/ansible
executable location = /usr/bin/ansible
python version = 3.8.5 (default, Jan 27 2021, 15:41:15) [GCC 9.3.0]
Գույքագրման ֆայլի կարգավորում
Որպեսզի կարողանաք միանալ բազմաթիվ հոսթներին, ձեզ անհրաժեշտ է ֆայլ, որը կգրանցի հանգույցների մանրամասները: Այս ֆայլը կոչվում է Գույքագրման ֆայլ:
Կախված նրանից, թե քանի սերվեր եք ցանկանում վերահսկել, Ansible-ի Inventory ֆայլը նաև թույլ է տալիս դրանք դասավորել խմբերով և ենթախմբերով: Կարող եք նաև սահմանել հարմարեցված փոփոխականներ, որոնք կիրառելի են հյուրընկալողների կամ խմբերի ընտրության համար, որոնք կարող են հետագայում օգտագործվել հրահանգները փոխանցելիս:
Ansible-ը առաքվում է լռելյայն Inventory ֆայլով, որը հասանելի է /etc/ansible/hosts
հասցեում: Բացեք այն Nano խմբագրիչով:
$ sudo nano /etc/ansible/hosts
Տեղադրեք հետևյալ կոդը ֆայլի ներքևում.
[servers]
server1 ansible_host=203.0.113.111
server2 ansible_host=203.0.113.112
server3 ansible_host=203.0.113.113
[all:vars]
ansible_python_interpreter=/usr/bin/python3
servers
բաժինը սահմանում է այն հանգույցների ցանկը, որոնց ցանկանում եք միանալ: Դուք կարող եք ստեղծել նույնքան խմբեր՝ մի քանի խմբերում սերվերներ կազմակերպելու համար:
all:vars
խումբը սահմանում է ansible_python_interpreter
պարամետրը գույքագրման բոլոր հոսթերների վրա: Այն վստահեցնում է, որ Ansible-ն օգտագործում է Python 3 գործարկվող Python 2-ի փոխարեն, որը հեռացվել է Ubuntu-ի վերջին տարբերակներից:
Երբ ավարտեք, պահեք և փակեք ֆայլը՝ սեղմելով CTRL+X
, ապա Y
և ENTER
՝ ձեր փոփոխությունները հաստատելու համար:
Նշում. Դուք կարող եք նաև ստեղծել ձեր սեփական Inventory ֆայլը ձեր ընտրած ցանկացած վայրում, որն այնուհետև կարող եք փոխանցել՝ օգտագործելով -i
պարամետրը Ansible հրամանները գործարկելիս:
Դուք կարող եք ստուգել ձեր գույքագրման ցուցակը հետևյալ հրամանով.
$ ansible-inventory --list -y
all:
children:
servers:
hosts:
server1:
ansible_host: 203.0.113.111
ansible_python_interpreter: /usr/bin/python3
server2:
ansible_host: 203.0.113.112
ansible_python_interpreter: /usr/bin/python3
server3:
ansible_host: 203.0.113.113
ansible_python_interpreter: /usr/bin/python3
ungrouped: {}
Սերվերների կազմակերպում խմբերի և ենթախմբերի
Սա օգտակար հուշում է, եթե դուք ունեք շատ սերվերներ, որոնց որոշ սերվերներ կատարում են հատուկ գործառույթներ: Օրինակ, դուք կարող եք օգտագործել այս մեթոդը վեբ սերվերները և տվյալների բազայի սերվերները առանձին խմբավորելու համար: Դուք նույնիսկ կարող եք հոսթինգը դարձնել բազմաթիվ խմբերի մաս: Դուք նույնիսկ կարող եք հոսթինգը դարձնել բազմաթիվ խմբերի մաս: Դրան հասնելու համար ձեր գույքագրման ֆայլը պետք է նման լինի հետևյալին.
[webservers]
203.0.113.111
203.0.113.112
[dbservers]
203.0.113.113
server_hostname
[development]
203.0.113.111
203.0.113.113
[production]
203.0.113.112
server_hostname
Կարգավորեք SSH ստեղները
Որպեսզի Ansible-ը կարողանա միանալ սերվերներին, դուք պետք է կարգավորեք SSH ստեղները ձեր Ansible սերվերի և գույքագրման ֆայլում նշված հոստերերի միջև: Սա կաշխատի միայն այն դեպքում, եթե Ansible հաճախորդները չունեն միացված հանրային բանալին և ունենան արմատային հաշիվ միացված գաղտնաբառով:
Օգտագործեք հետևյալ քայլերը՝ Ansible-ի և նրա հանգույցների համար SSH բանալի ստեղծելու և կարգավորելու համար:
Ստեղծեք բանալին Ansible-ի համար:
$ ssh-keygen -t rsa -b 4096 -C "Ansible key"
Պատճենեք հանրային բանալին ձեր հաշիվների վրա հեռավոր սերվերների վրա: Դրա համար մենք կօգտագործենք ssh-copy-id
հրամանը:
$ ssh-copy-id -i $HOME/.ssh/id_rsa.pub [email
$ ssh-copy-id -i $HOME/.ssh/id_rsa.pub [email
$ ssh-copy-id -i $HOME/.ssh/id_rsa.pub [email
Այսքանը: Այժմ Ansible-ը պետք է կարողանա խոսել ձեր սերվերների հետ:
Տեղադրեք SSH ստեղները հանգույցներում առկա հանրային բանալիով
Եթե հաճախորդներն արդեն ունեն միացված հանրային բանալիներ, ապա դուք պետք է կատարեք որոշակի լրացուցիչ քայլեր: Դրա համար դուք պետք է ստեղծեք նոր օգտվողի համար հասանելի միայն Ansible-ի կողմից յուրաքանչյուր հանգույցի սերվերի վրա: Այդ օգտվողը կունենա sudo արտոնություններ, որոնք հասանելի կլինեն առանց գաղտնաբառի և հասանելի կլինեն միայն ձեր ansible սերվերից:
ansible
օգտվող ստեղծելու համար գործարկեք հետևյալ հրամանը.
$ sudo adduser ansible
Ընտրեք ուժեղ գաղտնաբառ և մնացած բոլոր դաշտերը դատարկ թողեք:
Այժմ կարգավորեք այս օգտվողին առանց գաղտնաբառի sudo մուտքը հետևյալ հրամանի միջոցով.
$ echo "ansible ALL=(ALL) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/ansible
Այժմ, երբ դուք ավելացրել և կազմաձևել եք նոր օգտվողին, կարող եք պատճենել SSH բանալին ձեր ansible սերվերից դեպի հանգույց սերվեր՝ օգտագործելով հետևյալ հրամանը:
$ ssh-copy-id [email
Ձեզանից կպահանջվի գաղտնաբառ անսխալ օգտագործողի համար: Մուտքագրեք այն և SSH ստեղնը կպատճենվի:
Հաջորդը, անջատեք գաղտնաբառի վրա հիմնված մուտքը ansible
օգտագործողի համար հանգույցի սերվերում:
$ sudo usermod -L ansible
Այժմ ձեր հանգույցի սերվերը հասանելի է միայն Ansible սերվերից, քանի որ միայն այդ սերվերն ունի դրա համար հանրային բանալին, և դուք չեք կարող օգտագործել այն sudo արտոնություններով անմիջապես հանգույցի սերվերի վրա, քանի որ գաղտնաբառի մուտքն անջատված է:
Դուք ստիպված կլինեք կրկնել այս քայլերը յուրաքանչյուր հանգույցի սերվերի համար: Նաև այս ձեռնարկում փոխարինեք root
օգտվողին ansible
օգտվողով:
Փորձարկման միացում
Գույքագրման ֆայլը և SSH ստեղները կարգավորելուց հետո մենք պետք է ստուգենք՝ արդյոք Ansible-ը կարող է միանալ սերվերներին:
Կապը ստուգելու համար մուտքագրեք հետևյալ հրամանը: Այս հրամանը կփորձարկի կապը բոլոր սերվերների հետ գույքագրման ֆայլից:
$ ansible all -m ping -u root
Այս հրամանը օգտագործում է Ansible-ի ping մոդուլը՝ բոլոր սերվերների վրա կապի թեստ գործարկելու համար: Դուք պետք է ստանաք հետևյալ արդյունքը.
server1 | SUCCESS => {
"changed": false,
"ping": "pong"
}
server2 | SUCCESS => {
"changed": false,
"ping": "pong"
}
server3 | SUCCESS => {
"changed": false,
"ping": "pong"
}
Եթե առաջին անգամն է, որ օգտագործում եք Ansible-ը, ձեզանից կպահանջվի հաստատել բոլոր սերվերների իսկությունը: Երբ ձեզ հուշում են, մուտքագրեք այո
և սեղմեք ENTER
՝ հաստատելու համար:
Գործարկել որոշ հիմնական հրամաններ
Եկեք գործարկենք մի քանի հիմնական հրամաններ սերվերների վրա՝ օգտագործելով Ansible: Սերվերի վրա որևէ հրաման գործարկելու համար օգտագործվում է հետևյալ ձևաչափը.
$ ansible all -a "command" -u <username>
Ստուգեք սկավառակի օգտագործումը
Նախ, եկեք ստուգենք սկավառակի օգտագործումը մեր բոլոր սերվերների վրա:
$ ansible all -a "df -h" -u root
server1 | CHANGED | rc=0 >>
Filesystem Size Used Avail Use% Mounted on
udev 3.9G 0 3.9G 0% /dev
tmpfs 798M 624K 798M 1% /run
/dev/vda1 155G 2.3G 153G 2% /
tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
/dev/vda15 105M 3.6M 101M 4% /boot/efi
tmpfs 798M 0 798M 0% /run/user/0
server2 | CHANGED | rc=0 >>
Filesystem Size Used Avail Use% Mounted on
udev 2.0G 0 2.0G 0% /dev
tmpfs 395M 608K 394M 1% /run
/dev/vda1 78G 2.2G 76G 3% /
tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/vda15 105M 3.6M 101M 4% /boot/efi
tmpfs 395M 0 395M 0% /run/user/0
Թիրախավորեք անհատական հյուրընկալողներին և խմբերին
Մինչ այժմ մենք հրամաններ էինք գործարկում բոլոր հեռավոր սերվերների վրա միանգամից։ Բայց դա միշտ չէ, որ այդպես է։ Միայն մեկ սերվերի վրա հրաման գործարկելու համար դուք պետք է օգտագործեք հետևյալ ձևաչափը.
$ ansible server1 -a "uptime" -u root
server1 | CHANGED | rc=0 >>
21:38:26 up 11 min, 2 users, load average: 0.00, 0.20, 0.19
Վերոնշյալ հրամանը ստուգում է server1-ի գործարկման ժամանակը գույքագրման խմբից:
Կարող եք նաև թիրախավորել բազմաթիվ սերվերներ՝ օգտագործելով հետևյալ ձևաչափը.
$ ansible server1:server2 -m ping -u root
Դուք կարող եք նաև թիրախավորել խմբեր կամ ենթախմբեր անմիջապես գույքագրման ֆայլից:
$ ansible groupname -m ping -u <username>
Թարմացրեք բոլոր սերվերները
Այս ձեռնարկի համար մենք ենթադրում ենք, որ բոլոր հեռավոր սերվերները աշխատում են Debian կամ Ubuntu OS-ով:
Գործարկեք հետևյալ հրամանը՝ ձեր բոլոր սերվերների վրա ծրագրակազմը թարմացնելու համար:
$ ansible all -m apt -a "update_cache=yes upgrade=yes" -u root
-m
պարամետրը սահմանում է Ansible-ի գործարկման մոդուլը: -a
վերաբերում է առնչվող մոդուլի արգումենտներին կամ հրամաններին: Այստեղ մենք օգտագործում ենք Ansible-ի apt
մոդուլը սերվերները թարմացնելու համար ճիշտ այնպես, ինչպես մեր վերջին օրինակում օգտագործեցինք ping
մոդուլը: update_cache
թարմացնում է APT քեշը սերվերի վրա և upgrade=yes
-ն ասում է Ansible-ին գործարկել apt upgrade
հրամանը:
Ձեր CentOS սերվերները թարմացնելու համար կարող եք օգտագործել նույն հրամանը՝ apt
-ը փոխարինելով yum
-ով, իսկ Fedora սերվերների համար կարող եք փոխարինել apt
Եթե դուք օգտագործում եք ansible
օգտվողը, ինչպես նշված է վերևում, դուք պետք է փոփոխեք ansible
հրամանը, որպեսզի գործարկվի sudo-ի բարձր արտոնություններով:
$ ansible server2 -m apt -a "update_cache=yes upgrade=yes" -K -b -u ansible
Այստեղ -K
-ը պահանջում է արտոնությունների ընդլայնման գաղտնաբառ: -b
-ն իրականացնում է անիմաստ գործողությունը become
-ով, որը թույլ է տալիս լինել այլ օգտվող: Երկու փոփոխականները համակցված թույլ են տալիս ansible-ին աշխատել բարձրացված sudo արտոնություններով: Դուք պետք է օգտագործեք սա բոլոր հրամանների համար, որոնք պահանջում են sudo արտոնություններ:
Երբեմն, այս թարմացման հրամաններից մի քանիսը կարող են պահանջել վերաբեռնում, այնպես որ գործարկեք հետևյալ հրամանը՝ ձեր բոլոր սերվերները վերագործարկելու համար:
$ ansible all -a "reboot" -u root
Սրանք ընդամենը մի քանի հիմնական հրամաններ էին, որոնք կարող եք գործարկել Ansible-ի միջոցով:
Եզրակացություն
Դա ավարտում է Ubuntu 20.04-ի վրա հիմնված Ansible-ի տեղադրման և կազմաձևման մեր ձեռնարկը: Եթե ունեք հարցեր, տեղադրեք դրանք ստորև ներկայացված մեկնաբանություններում: