Ансибл 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