петак, 19 априла, 2024
Слободни професионалац

Ансибл 2. део

Аутор: Стефан Ножинић

У претходном броју смо поменули шта је то Ансибл (енг. Ansible) и навели смо примере његове најједноставније употребе.

У овом броју наводимо детаљнију употребу инвентара, неке ад-хок команде, као и неке детаље о употреби и могућностима конфигурације помоћу Ансибла.

Инвентар

У претходном броју било је тек неколико речи о овом појму. Инвентар нам је у претходном броју послужио да наведемо наша три сервера која смо касније пинговали. Рекли смо да је инвентар датотека која служи за навођење сервера који желимо да администрирамо и да помоћу њега можемо конфигурисати специфичне параметре за те сервере.

Класична и најпростија употреба ове конфигурационе датотеке је једноставно навођење жељених сервера:

/etc/ansible/hosts

server1.example.com
server2.example.com
server3.example.com
mail.example.com
web.example.com

Наравно, ово је довољно за једноставну употребу у случајевима када желимо да сви наши сервери имају исту конфигурацију. Ово, као што сви добро знамо, није често случај. Обично желимо сервере подешене за специфичну намену. Ради овога нам Ансибл инвентар омогућава употребу група једноставним навођењем секција, те нас ова конфигурациона датотека доста подсећа на INI формат. Рецимо да, например, имамо два веб-сервера, један сервер за базе података и два мејл-сервера. Наша конфигурација би изгледала овако:

[webservers]
web1.example.com
web2.example.com

[email]
mail1.example.com
mail2.example.com

[databases]
db.example.com

Као што се може приметити из примера, секције постављамо између средњих заграда. Овде је битно напоменути да један сервер може припадати више секција, па тако можемо имати сервер који служи и за веб и за базе података.

Поред адресе сервера можете навести и SSH порт ако се не користи онај подразумевани – например:

mail.example.com:1548

Поред порта можете навести и корисничко име при логовању – примерице, на следећи начин:

other1.example.com     ansible_connection=ssh        ansible_ssh_user=mpdehaan
other2.example.com     ansible_connection=ssh        ansible_ssh_user=mdehaan

Као што сте могли већ да приметите и сами закључите, могуће је поставити индивидуалне променљиве по хосту. Например:

www.example.com var1=val1 var2=val2

Променљиве могу бити конфигурисане и за целу групу:

[webservers]
web1.example.com
web2.example.com

[webservers:vars] 
var1=val1
var2=val2

Ад-хок команде

Иако је Ансибл намењен за употребу са тзв. плејбуковима (playbooks), често ћете имати потребу да извршите неку команду на брзину и нећете желети да наводите специјалну конфигурацију за то. Због овога, Ансибл вам омогућава употребу ад-хок команди.

Ми смо овакву команду већ поменули у претходном броју, али нисмо у детаље објашњавали шта се ту конкретно дешава. Употребили смо је када смо желели да пингујемо све наше сервере.

Употребљавају се тако што се у конзоли укуца:

ansible target -a "command"

Овде command треба заменити жељеном командом коју желите да извршите, а target треба заменити именом групе или хоста на којем желите извршавање задате команде.

Например, ако желимо да рестартујемо само веб-сервере, користимо:

ansible webservers -a "reboot"

На сличан начин можемо користити и друге уграђене модуле Ансибла, као, примерице, copy модул за премештање датотека на више сервера:

ansible servers -m copy -a "src=/etc/hosts dest=/tmp/hosts"

Такође, употребом ових команди можете сазнати тзв. чињенице (енг. facts) о серверу. Ове варијабле су важне, јер се могу користити за условно извршавање команди у плејбуковима.

Да бисте сазнали прикупљене чињенице за дати хост, извршите:

ansible target -m setup

За крај

У наредном броју показујемо највећу моћ Ансибла када будемо објаснили употребу плејбукова. До тада, надамо се да се нећете устручавати да нам пошаљете е-писмо на нашу већ познату адресу електронске поште са питањима, критикама и предлозима.