Ansible. Циклы

Thank you for reading this post, don't forget to subscribe!

Ansible – это совре­мен­ный инстру­мент управ­ле­ния кон­фи­гу­ра­ци­ей. Для свя­зи и выпол­не­ния команд на управ­ля­е­мых сер­ве­рах (нодах) он исполь­зу­ет толь­ко SSH и Python – то есть вам не нуж­но уста­нав­ли­вать агент­ское про­грамм­ное обес­пе­че­ние на уда­лен­ные ноды.

Про­цесс авто­ма­ти­за­ции настрой­ки сер­ве­ра ино­гда тре­бу­ет повто­рить выпол­не­ние одной и той же зада­чи с раз­ны­ми зна­че­ни­я­ми. Напри­мер, вам может потре­бо­вать­ся изме­нить пра­ва досту­па к несколь­ким фай­лам или создать несколь­ких новых поль­зо­ва­те­лей. Для это­го луч­ше не писать саму зада­чу в плей­бу­ке несколь­ко раз, а исполь­зо­вать циклы.

В про­грам­ми­ро­ва­нии цикл поз­во­ля­ет повто­рять инструк­ции; как пра­ви­ло, он дела­ет это до тех пор, пока не будет выпол­не­но опре­де­лен­ное усло­вие. Ansible пред­ла­га­ет раз­лич­ные мето­ды для созда­ния цик­ла, при этом клю­че­вое сло­во loop явля­ет­ся наи­бо­лее реко­мен­ду­е­мым вари­ан­том (посколь­ку он обес­пе­чи­ва­ет дол­го­сроч­ную совместимость).

В сле­ду­ю­щем при­ме­ре мы созда­ем в пап­ке /tmp три раз­ных фай­ла. Модуль file исполь­зу­ет­ся в зада­че, кото­рая реа­ли­зу­ет цикл при помо­щи трех раз­ных значений.

Создай­те новый файл playbook-06.yml

Сохра­ни­те и закрой­те файл.

Затем запу­сти­те ansible-playbook с теми же аргу­мен­та­ми под­клю­че­ния, что вы исполь­зо­ва­ли в этой серии ранее (мы, как все­гда, исполь­зу­ем инвен­тарь по име­ни inventory и поль­зо­ва­те­ля user-ansible , но вам сле­ду­ет соот­вет­ству­ю­щим обра­зом изме­нить эти значения):

ansible-playbook -i inventory playbook-06.yml -u user-ansible

Вы полу­чи­те сле­ду­ю­щий резуль­тат; он пока­зы­ва­ет зна­че­ние каж­до­го отдель­но­го эле­мен­та, исполь­зо­ван­но­го в цикле: