Анзибъл основи, Π±Π΅Π· ΠΊΠΎΠΈΡ‚ΠΎ ΠΊΠ½ΠΈΠ³ΠΈΡ‚Π΅ Π²ΠΈ Ρ‰Π΅ са Π±ΡƒΡ†Π° Π»Π΅ΠΏΠΊΠ°Π²Π° паста

ΠŸΡ€Π°Π²Ρ ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π΅Ρ†Π΅Π½Π·ΠΈΠΈ Π½Π° ΠΊΠΎΠ΄Π° Π½Π° Ansible Π½Π° Π΄Ρ€ΡƒΠ³ΠΈ Ρ…ΠΎΡ€Π° ΠΈ самият Π°Π· пиша ΠΌΠ½ΠΎΠ³ΠΎ. Π’ Ρ…ΠΎΠ΄Π° Π½Π° Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° Π³Ρ€Π΅ΡˆΠΊΠΈ (ΠΊΠ°ΠΊΡ‚ΠΎ Π½Π° Π΄Ρ€ΡƒΠ³ΠΈ Ρ…ΠΎΡ€Π°, Ρ‚Π°ΠΊΠ° ΠΈ Π½Π° ΠΌΠΎΠΈ собствСни), ΠΊΠ°ΠΊΡ‚ΠΎ ΠΈ Π½Π° Ρ€Π΅Π΄ΠΈΡ†Π° ΠΈΠ½Ρ‚Π΅Ρ€Π²ΡŽΡ‚Π°, Ρ€Π°Π·Π±Ρ€Π°Ρ… основната Π³Ρ€Π΅ΡˆΠΊΠ°, която правят ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈΡ‚Π΅ Π½Π° Ansible - Π½Π°Π²Π»ΠΈΠ·Π°Ρ‚ Π² слоТни Π½Π΅Ρ‰Π°, Π±Π΅Π· Π΄Π° овладСят основнитС.

Π—Π° Π΄Π° ΠΊΠΎΡ€ΠΈΠ³ΠΈΡ€Π°ΠΌ Ρ‚Π°Π·ΠΈ унивСрсална нСсправСдливост, Ρ€Π΅ΡˆΠΈΡ… Π΄Π° напиша въвСдСниС към Ansible Π·Π° Ρ‚Π΅Π·ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ Π²Π΅Ρ‡Π΅ Π³ΠΎ ΠΏΠΎΠ·Π½Π°Π²Π°Ρ‚. ΠŸΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π°Π²Π°ΠΌ Π²ΠΈ, Ρ‚ΠΎΠ²Π° Π½Π΅ Π΅ ΠΏΡ€Π΅Ρ€Π°Π·ΠΊΠ°Π· Π½Π° мъТС, Ρ‚ΠΎΠ²Π° Π΅ Π»ΠΎΠ½Π³Ρ€ΠΈΠ΄ с ΠΌΠ½ΠΎΠ³ΠΎ Π±ΡƒΠΊΠ²ΠΈ ΠΈ Π±Π΅Π· ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ.

ΠžΡ‡Π°ΠΊΠ²Π°Π½ΠΎΡ‚ΠΎ Π½ΠΈΠ²ΠΎ Π½Π° читатСля Π΅, Ρ‡Π΅ Π²Π΅Ρ‡Π΅ са написани няколко хиляди Ρ€Π΅Π΄Π° yamla, Π½Π΅Ρ‰ΠΎ Π²Π΅Ρ‡Π΅ сС ΠΏΡ€ΠΎΠΈΠ·Π²Π΅ΠΆΠ΄Π°, Π½ΠΎ β€žΠ½ΡΠΊΠ°ΠΊ си всичко Π΅ ΠΊΡ€ΠΈΠ²ΠΎβ€œ.

ΠΈΠΌΠ΅Π½Π°

ΠžΡΠ½ΠΎΠ²Π½Π°Ρ‚Π° Π³Ρ€Π΅ΡˆΠΊΠ°, която потрСбитСлят Π½Π° Ansible ΠΏΡ€Π°Π²ΠΈ, Π΅ Π΄Π° Π½Π΅ Π·Π½Π°Π΅ ΠΊΠ°ΠΊ сС Π½Π°Ρ€ΠΈΡ‡Π° Π½Π΅Ρ‰ΠΎ. Ако Π½Π΅ Π·Π½Π°Π΅Ρ‚Π΅ ΠΈΠΌΠ΅Π½Π°Ρ‚Π°, Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Ρ€Π°Π·Π±Π΅Ρ€Π΅Ρ‚Π΅ ΠΊΠ°ΠΊΠ²ΠΎ пишС Π² докумСнтацията. Π–ΠΈΠ² ΠΏΡ€ΠΈΠΌΠ΅Ρ€: ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° ΠΈΠ½Ρ‚Π΅Ρ€Π²ΡŽ Ρ‡ΠΎΠ²Π΅ΠΊ, ΠΊΠΎΠΉΡ‚ΠΎ ΠΊΠ°Ρ‚ΠΎ Ρ‡Π΅ Π»ΠΈ ΠΊΠ°Π·Π°, Ρ‡Π΅ пишС ΠΌΠ½ΠΎΠ³ΠΎ Π² Ansible, Π½Π΅ ΠΌΠΎΠΆΠ° Π΄Π° ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€ΠΈ Π½Π° Π²ΡŠΠΏΡ€ΠΎΡΠ° β€žΠΎΡ‚ ΠΊΠ°ΠΊΠ²ΠΈ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ΠΈ сС ΡΡŠΡΡ‚ΠΎΠΈ ΠΊΠ½ΠΈΠ³Π°Ρ‚Π° Π·Π° ΠΈΠ³Ρ€ΠΈ?β€œ И ΠΊΠΎΠ³Π°Ρ‚ΠΎ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΡ…, Ρ‡Π΅ β€žΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€ΡŠΡ‚ сС ΠΎΡ‡Π°ΠΊΠ²Π°ΡˆΠ΅, Ρ‡Π΅ ΠΊΠ½ΠΈΠ³Π°Ρ‚Π°-ΠΈΠ³Ρ€Π° сС ΡΡŠΡΡ‚ΠΎΠΈ ΠΎΡ‚ ΠΈΠ³Ρ€Π°β€œ, послСдва ΠΎΡΡŠΠ΄ΠΈΡ‚Π΅Π»Π½ΠΈΡΡ‚ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€ β€žΠ½ΠΈΠ΅ Π½Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Ρ‚ΠΎΠ²Π°β€œ. Π₯ΠΎΡ€Π°Ρ‚Π° ΠΏΠΈΡˆΠ°Ρ‚ Ansible Π·Π° ΠΏΠ°Ρ€ΠΈ ΠΈ Π½Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ play. Π’Π΅ Π²ΡΡŠΡ‰Π½ΠΎΡΡ‚ Π³ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚, Π½ΠΎ Π½Π΅ знаят ΠΊΠ°ΠΊΠ²ΠΎ прСдставлява.

Π’Π°ΠΊΠ° Ρ‡Π΅ Π½Π΅ΠΊΠ° Π·Π°ΠΏΠΎΡ‡Π½Π΅ΠΌ с Π½Π΅Ρ‰ΠΎ просто: ΠΊΠ°ΠΊ сС ΠΊΠ°Π·Π²Π°? МоТС Π±ΠΈ Π·Π½Π°Π΅Ρ‚Π΅ Ρ‚ΠΎΠ²Π° ΠΈΠ»ΠΈ ΠΌΠΎΠΆΠ΅ Π±ΠΈ Π½Π΅, Π·Π°Ρ‰ΠΎΡ‚ΠΎ Π½Π΅ стС ΠΎΠ±ΡŠΡ€Π½Π°Π»ΠΈ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΠΊΠΎΠ³Π°Ρ‚ΠΎ стС Ρ‡Π΅Π»ΠΈ докумСнтацията.

ansible-playbook изпълнява ΠΊΠ½ΠΈΠ³Π°Ρ‚Π°. ΠšΠ½ΠΈΠ³Π°Ρ‚Π° Π·Π° ΠΈΠ³Ρ€Π° Π΅ Ρ„Π°ΠΉΠ» с Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ yml/yaml, Π²ΡŠΡ‚Ρ€Π΅ Π² ΠΊΠΎΠΉΡ‚ΠΎ ΠΈΠΌΠ° Π½Π΅Ρ‰ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ:

---
- hosts: group1
  roles:
    - role1

- hosts: group2,group3
  tasks:
    - debug:

Π’Π΅Ρ‡Π΅ Ρ€Π°Π·Π±Ρ€Π°Ρ…ΠΌΠ΅, Ρ‡Π΅ цСлият Ρ‚ΠΎΠ·ΠΈ Ρ„Π°ΠΉΠ» Π΅ ΠΊΠ½ΠΈΠ³Π°-ΠΈΠ³Ρ€Π°. МоТСм Π΄Π° ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌ къдС са Ρ€ΠΎΠ»ΠΈΡ‚Π΅ ΠΈ къдС Π·Π°Π΄Π°Ρ‡ΠΈΡ‚Π΅. Но къдС Π΅ ΠΈΠ³Ρ€Π°Ρ‚Π°? И ΠΊΠ°ΠΊΠ²Π° Π΅ Ρ€Π°Π·Π»ΠΈΠΊΠ°Ρ‚Π° ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΈΠ³Ρ€Π° ΠΈ роля ΠΈΠ»ΠΈ ΠΊΠ½ΠΈΠ³Π°-ΠΈΠ³Ρ€Π°?

Всичко Π΅ Π² докумСнтацията. И ΠΈΠΌ липсва. НачинаСщи - Π·Π°Ρ‰ΠΎΡ‚ΠΎ ΠΈΠΌΠ° Ρ‚Π²ΡŠΡ€Π΄Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΈ няма Π΄Π° Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚Π΅ всичко навСднъТ. ΠžΠΏΠΈΡ‚Π΅Π½ - Π·Π°Ρ‰ΠΎΡ‚ΠΎ β€žΡ‚Ρ€ΠΈΠ²ΠΈΠ°Π»Π½ΠΈ Π½Π΅Ρ‰Π°β€œ. Ако ΠΈΠΌΠ°Ρ‚Π΅ ΠΎΠΏΠΈΡ‚, ΠΏΡ€Π΅ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°ΠΉΡ‚Π΅ Ρ‚Π΅Π·ΠΈ страници ΠΏΠΎΠ½Π΅ вСднъТ Π½Π° всСки ΡˆΠ΅ΡΡ‚ мСсСца ΠΈ Π²Π°ΡˆΠΈΡΡ‚ ΠΊΠΎΠ΄ Ρ‰Π΅ станС Π²ΠΎΠ΄Π΅Ρ‰ Π² класа.

Π’Π°ΠΊΠ° Ρ‡Π΅, Π·Π°ΠΏΠΎΠΌΠ½Π΅Ρ‚Π΅: Playbook Π΅ списък, ΡΡŠΡΡ‚ΠΎΡΡ‰ сС ΠΎΡ‚ ΠΈΠ³Ρ€Π° ΠΈ import_playbook.
Π’ΠΎΠ²Π° Π΅ Π΅Π΄Π½Π° ΠΈΠ³Ρ€Π°:

- hosts: group1
  roles:
    - role1

ΠΈ Ρ‚ΠΎΠ²Π° ΡΡŠΡ‰ΠΎ Π΅ Π΄Ρ€ΡƒΠ³Π° ΠΈΠ³Ρ€Π°:

- hosts: group2,group3
  tasks:
    - debug:

Какво Π΅ ΠΈΠ³Ρ€Π°? Π·Π°Ρ‰ΠΎ Π΅ тя

Π˜Π³Ρ€Π°Ρ‚Π° Π΅ ΠΊΠ»ΡŽΡ‡ΠΎΠ² Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ Π·Π° ΠΊΠ½ΠΈΠ³Π°Ρ‚Π° Π·Π° ΠΈΠ³Ρ€Π°, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ ΠΈΠ³Ρ€Π°Ρ‚Π° ΠΈ само ΠΈΠ³Ρ€Π°Ρ‚Π° ΡΠ²ΡŠΡ€Π·Π²Π°Ρ‚ списък с Ρ€ΠΎΠ»ΠΈ ΠΈ/ΠΈΠ»ΠΈ Π·Π°Π΄Π°Ρ‡ΠΈ със списък с хостовС, Π½Π° ΠΊΠΎΠΈΡ‚ΠΎ Ρ‚Π΅ трябва Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ изпълнСни. Π’ Π΄ΡŠΠ»Π±ΠΎΠΊΠΈΡ‚Π΅ дълбини Π½Π° докумСнтацията ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π½Π°ΠΌΠ΅Ρ€ΠΈΡ‚Π΅ спомСнаванС Π½Π° delegate_to, Π΄ΠΎΠ±Π°Π²ΠΊΠΈ Π·Π° Π»ΠΎΠΊΠ°Π»Π½ΠΎ Ρ‚ΡŠΡ€ΡΠ΅Π½Π΅, спСцифични Π·Π° ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π° настройки, хостовС Π·Π° прСскачанС ΠΈ Π΄Ρ€. Π’Π΅ Π²ΠΈ позволяват Π»Π΅ΠΊΠΎ Π΄Π° ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ мястото, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ сС ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‚ Π·Π°Π΄Π°Ρ‡ΠΈΡ‚Π΅. Но Π·Π°Π±Ρ€Π°Π²Π΅Ρ‚Π΅ Π·Π° Ρ‚ΠΎΠ²Π°. Всяка ΠΎΡ‚ Ρ‚Π΅Π·ΠΈ ΡƒΠΌΠ½ΠΈ ΠΎΠΏΡ†ΠΈΠΈ ΠΈΠΌΠ° ΠΌΠ½ΠΎΠ³ΠΎ спСцифични прилоТСния ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ Π½Π΅ Π΅ унивСрсална. И Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ Π·Π° основни Π½Π΅Ρ‰Π°, ΠΊΠΎΠΈΡ‚ΠΎ всСки трябва Π΄Π° Π·Π½Π°Π΅ ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°.

Ако искатС Π΄Π° ΠΈΠ·ΠΏΡŠΠ»Π½ΠΈΡ‚Π΅ β€žΠ½Π΅Ρ‰ΠΎβ€œ β€žΠ½ΡΠΊΡŠΠ΄Π΅β€œ, ΠΏΠΈΡˆΠ΅Ρ‚Π΅ ΠΈΠ³Ρ€Π°. НС Π΅ роля. НС Π΅ роля с ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΠΈ Π΄Π΅Π»Π΅Π³Π°Ρ‚ΠΈ. Π’Π·ΠΈΠΌΠ°Ρˆ Π³ΠΎ ΠΈ пишСш ΠΈΠ³Ρ€Π°. Π’ ΠΊΠΎΠ΅Ρ‚ΠΎ, Π² ΠΏΠΎΠ»Π΅Ρ‚ΠΎ hosts изброяватС къдС Π΄Π° сС изпълнява, Π° Π² roles/tasks - ΠΊΠ°ΠΊΠ²ΠΎ Π΄Π° сС изпълнява.

ΠŸΡ€ΠΎΡΡ‚ΠΎ, Π½Π°Π»ΠΈ? Как Π±ΠΈ ΠΌΠΎΠ³Π»ΠΎ Π΄Π° бъдС ΠΈΠ½Π°Ρ‡Π΅?

Π•Π΄ΠΈΠ½ ΠΎΡ‚ Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π½ΠΈΡ‚Π΅ ΠΌΠΎΠΌΠ΅Π½Ρ‚ΠΈ, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Ρ…ΠΎΡ€Π°Ρ‚Π° ΠΈΠΌΠ°Ρ‚ ΠΆΠ΅Π»Π°Π½ΠΈΠ΅ Π΄Π° направят Ρ‚ΠΎΠ²Π° Π½Π΅ Ρ‡Ρ€Π΅Π· ΠΈΠ³Ρ€Π°, Π΅ β€žΡ€ΠΎΠ»ΡΡ‚Π°, която опрСдСля Π²ΡΠΈΡ‡ΠΊΠΎβ€œ. Π‘ΠΈΡ… искал Π΄Π° ΠΈΠΌΠ°ΠΌ роля, която ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π° ΠΊΠ°ΠΊΡ‚ΠΎ ΡΡŠΡ€Π²ΡŠΡ€ΠΈ ΠΎΡ‚ ΠΏΡŠΡ€Π²ΠΈΡ Ρ‚ΠΈΠΏ, Ρ‚Π°ΠΊΠ° ΠΈ ΡΡŠΡ€Π²ΡŠΡ€ΠΈ ΠΎΡ‚ Π²Ρ‚ΠΎΡ€ΠΈ Ρ‚ΠΈΠΏ.

АрхСтипСн ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π΅ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ΡŠΡ‚. Π‘ΠΈΡ… искал Π΄Π° ΠΈΠΌΠ°ΠΌ роля Π·Π° наблюдСниС, която Ρ‰Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π° Π½Π°Π±Π»ΡŽΠ΄Π΅Π½ΠΈΠ΅Ρ‚ΠΎ. Ролята Π·Π° наблюдСниС сС възлага Π½Π° хостовС Π·Π° наблюдСниС (спорСд ΠΈΠ³Ρ€Π°Ρ‚Π°). Но сС ΠΎΠΊΠ°Π·Π²Π°, Ρ‡Π΅ Π·Π° наблюдСниС трябва Π΄Π° доставим ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ Π½Π° хостовСтС, ΠΊΠΎΠΈΡ‚ΠΎ наблюдавамС. Π—Π°Ρ‰ΠΎ Π½Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ Π΄Π΅Π»Π΅Π³Π°Ρ‚? Врябва ΡΡŠΡ‰ΠΎ Π΄Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Ρ‚Π΅ iptables. Π΄Π΅Π»Π΅Π³Π°Ρ‚? Врябва ΡΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° Π΄Π° Π½Π°ΠΏΠΈΡˆΠ΅Ρ‚Π΅/ΠΊΠΎΡ€ΠΈΠ³ΠΈΡ€Π°Ρ‚Π΅ конфигурация Π·Π° Π‘Π£Π‘Π”, Π·Π° Π΄Π° Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Ρ‚Π΅ Π½Π°Π±Π»ΡŽΠ΄Π΅Π½ΠΈΠ΅Ρ‚ΠΎ. Π΄Π΅Π»Π΅Π³Π°Ρ‚! И Π°ΠΊΠΎ крСативността липсва, Ρ‚ΠΎΠ³Π°Π²Π° ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ дСлСгация include_role във Π²Π»ΠΎΠΆΠ΅Π½ Ρ†ΠΈΠΊΡŠΠ» с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° слоТСн Ρ„ΠΈΠ»Ρ‚ΡŠΡ€ Π²ΡŠΡ€Ρ…Ρƒ списък ΠΎΡ‚ Π³Ρ€ΡƒΠΏΠΈ ΠΈ Π²ΡŠΡ‚Ρ€Π΅ include_role ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ ΠΏΠΎΠ²Π΅Ρ‡Π΅ delegate_to ΠΎΡ‚Π½ΠΎΠ²ΠΎ. И Ρ‚Ρ€ΡŠΠ³Π²Π°ΠΌΠ΅...

Π”ΠΎΠ±Ρ€ΠΎΡ‚ΠΎ ΠΆΠ΅Π»Π°Π½ΠΈΠ΅ - Π΄Π° ΠΈΠΌΠ°ΠΌΠ΅ Π΅Π΄Π½Π°-СдинствСна Π½Π°Π±Π»ΡŽΠ΄Π°Ρ‚Π΅Π»Π½Π° роля, която "ΠΏΡ€Π°Π²ΠΈ всичко" - Π½ΠΈ Π²ΠΎΠ΄ΠΈ Π² пълСн Π°Π΄, ΠΎΡ‚ ΠΊΠΎΠΉΡ‚ΠΎ Π½Π°ΠΉ-чСсто ΠΈΠΌΠ° само Π΅Π΄ΠΈΠ½ ΠΈΠ·Ρ…ΠΎΠ΄: Π΄Π° ΠΏΡ€Π΅Π½Π°ΠΏΠΈΡˆΠ΅ΠΌ всичко ΠΎΡ‚ Π½ΡƒΠ»Π°Ρ‚Π°.

КъдС стана Π³Ρ€Π΅ΡˆΠΊΠ°Ρ‚Π° Ρ‚ΡƒΠΊ? Π’ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°, Π² ΠΊΠΎΠΉΡ‚ΠΎ ΠΎΡ‚ΠΊΡ€ΠΈΡ…Ρ‚Π΅, Ρ‡Π΅ Π·Π° Π΄Π° ΠΈΠ·ΠΏΡŠΠ»Π½ΠΈΡ‚Π΅ Π·Π°Π΄Π°Ρ‡Π° β€žxβ€œ Π½Π° хост X, трябва Π΄Π° ΠΎΡ‚ΠΈΠ΄Π΅Ρ‚Π΅ Π½Π° хост Y ΠΈ Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ β€žyβ€œ Ρ‚Π°ΠΌ, Ρ‚Ρ€ΡΠ±Π²Π°ΡˆΠ΅ Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ просто ΡƒΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅: ΠΎΡ‚ΠΈΠ΄Π΅Ρ‚Π΅ ΠΈ Π½Π°ΠΏΠΈΡˆΠ΅Ρ‚Π΅ play, ΠΊΠΎΠ΅Ρ‚ΠΎ Π½Π° хост Y ΠΏΡ€Π°Π²ΠΈ y. НС добавяйтС Π½Π΅Ρ‰ΠΎ към "Ρ…", Π° Π³ΠΎ Π½Π°ΠΏΠΈΡˆΠ΅Ρ‚Π΅ ΠΎΡ‚ Π½ΡƒΠ»Π°Ρ‚Π°. Π”ΠΎΡ€ΠΈ ΠΈ с Ρ‚Π²ΡŠΡ€Π΄ΠΎ ΠΊΠΎΠ΄ΠΈΡ€Π°Π½ΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ.

ИзглСТда, Ρ‡Π΅ всичко Π² ΠΏΠ°Ρ€Π°Π³Ρ€Π°Ρ„ΠΈΡ‚Π΅ ΠΏΠΎ-Π³ΠΎΡ€Π΅ Π΅ ΠΊΠ°Π·Π°Π½ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΎ. Но Ρ‚ΠΎΠ²Π° Π½Π΅ Π΅ Π²Π°ΡˆΠΈΡΡ‚ случай! Π—Π°Ρ‰ΠΎΡ‚ΠΎ искатС Π΄Π° Π½Π°ΠΏΠΈΡˆΠ΅Ρ‚Π΅ ΠΊΠΎΠ΄ Π·Π° ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½Π° ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π°, ΠΊΠΎΠΉΡ‚ΠΎ Π΅ Π‘Π£Π₯ ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°, ΠΈ трябва Π΄Π° ΠΏΠΎΡ‚ΡŠΡ€ΡΠΈΡ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΊΠ°ΠΊ Π΄Π° Π³ΠΎ Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅.

Π’ΡƒΠΊ Π΄Π΅Π±Π½Π΅ Π΄Ρ€ΡƒΠ³Π° сСриозна Π³Ρ€Π΅ΡˆΠΊΠ°. Π“Ρ€Π΅ΡˆΠΊΠ°, която ΠΏΡ€Π΅Π²ΡŠΡ€Π½Π° ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ ΠΎΡ‚ сносно написани (ΠΌΠΎΠΆΠ΅ ΠΈ ΠΏΠΎ-Π΄ΠΎΠ±Ρ€Π΅, Π½ΠΎ всичко Ρ€Π°Π±ΠΎΡ‚ΠΈ ΠΈ сС Π΄ΠΎΠ²ΡŠΡ€ΡˆΠ²Π° лСсно) Π² пълСн уТас, ΠΊΠΎΠΉΡ‚ΠΎ Π΄ΠΎΡ€ΠΈ Π°Π²Ρ‚ΠΎΡ€ΡŠΡ‚ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° Ρ€Π°Π·Π±Π΅Ρ€Π΅. Π Π°Π±ΠΎΡ‚ΠΈ, Π½ΠΎ Π½Π΅ Π΄Π°ΠΉ Π‘ΠΎΠΆΠ΅ Π΄Π° ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ Π½Π΅Ρ‰ΠΎ.

Π“Ρ€Π΅ΡˆΠΊΠ°Ρ‚Π° Π΅: ролята Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½Π° функция. Π’Π°Π·ΠΈ аналогия Π΅ съсипала Ρ‚ΠΎΠ»ΠΊΠΎΠ²Π° ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΠΎΠ±Ρ€ΠΈ Π½Π°Ρ‡Π°Π»Π°, Ρ‡Π΅ Π΅ просто Ρ‚ΡŠΠΆΠ½ΠΎ Π΄Π° сС Π³Π»Π΅Π΄Π°. Ролята Π½Π΅ Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½Π° функция. Вя Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΡ€Π°Π²ΠΈ изчислСния ΠΈ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° Π²Π·Π΅ΠΌΠ° Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π½Π° Π½ΠΈΠ²ΠΎ ΠΈΠ³Ρ€Π°. Напомни ΠΌΠΈ ΠΊΠ°ΠΊΠ²ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π²Π·Π΅ΠΌΠ° ΠΈΠ³Ρ€Π°Ρ‚Π°?

Благодаря, ΠΏΡ€Π°Π² си. Play Π²Π·Π΅ΠΌΠ° Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ (ΠΏΠΎ-Ρ‚ΠΎΡ‡Π½ΠΎ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ° информация) Π·Π° Ρ‚ΠΎΠ²Π° ΠΊΠΎΠΈ Π·Π°Π΄Π°Ρ‡ΠΈ ΠΈ Ρ€ΠΎΠ»ΠΈ Π΄Π° изпълнява Π½Π° ΠΊΠΎΠΈ хостовС.

Ако Π΄Π΅Π»Π΅Π³ΠΈΡ€Π°Ρ‚Π΅ Ρ‚ΠΎΠ²Π° Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π½Π° роля, Ρ‚Π° Π΄ΠΎΡ€ΠΈ ΠΈ с изчислСния, Π²ΠΈΠ΅ ΠΎΠ±Ρ€ΠΈΡ‡Π°Ρ‚Π΅ сСбС си (ΠΈ Ρ‚ΠΎΠ·ΠΈ, ΠΊΠΎΠΉΡ‚ΠΎ Ρ‰Π΅ сС ΠΎΠΏΠΈΡ‚Π° Π΄Π° Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π° вашия ΠΊΠΎΠ΄) Π½Π° ΠΆΠ°Π»ΠΊΠΎ ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Π½Π΅. Ролята Π½Π΅ опрСдСля къдС сС изпълнява. Π’ΠΎΠ²Π° Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ сС Π²Π·Π΅ΠΌΠ° Ρ‡Ρ€Π΅Π· ΠΈΠ³Ρ€Π°. Ролята ΠΏΡ€Π°Π²ΠΈ ΠΊΠ°ΠΊΠ²ΠΎΡ‚ΠΎ ΠΉ сС ΠΊΠ°ΠΆΠ΅, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ ΠΉ сС ΠΊΠ°ΠΆΠ΅.

Π—Π°Ρ‰ΠΎ Π΅ опасно Π΄Π° сС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π° Π² Ansible ΠΈ Π·Π°Ρ‰ΠΎ COBOL Π΅ ΠΏΠΎ-Π΄ΠΎΠ±ΡŠΡ€ ΠΎΡ‚ Ansible, Ρ‰Π΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ Π² Π³Π»Π°Π²Π°Ρ‚Π° Π·Π° ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈΡ‚Π΅ ΠΈ jinja. ЗасСга Π½Π΅ΠΊΠ° ΠΊΠ°ΠΆΠ΅ΠΌ Π΅Π΄Π½ΠΎ Π½Π΅Ρ‰ΠΎ - всяко вашС изчислСниС оставя слСд сСбС си Π½Π΅Π·Π°Π»ΠΈΡ‡ΠΈΠΌΠ° слСда ΠΎΡ‚ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ Π² Π³Π»ΠΎΠ±Π°Π»Π½ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ ΠΈ Π²ΠΈΠ΅ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ Π½ΠΈΡ‰ΠΎ ΠΏΠΎ Π²ΡŠΠΏΡ€ΠΎΡΠ°. Π©ΠΎΠΌ Π΄Π²Π΅Ρ‚Π΅ β€žΡΠ»Π΅Π΄ΠΈβ€œ сС прСсСкоха, всичко ΠΈΠ·Ρ‡Π΅Π·Π½Π°.

Π‘Π΅Π»Π΅ΠΆΠΊΠ° Π·Π° Π½Π΅Π΄ΠΎΠ²ΠΎΠ»Π½ΠΈΡ‚Π΅: ролята със сигурност ΠΌΠΎΠΆΠ΅ Π΄Π° повлияС Π½Π° контролния ΠΏΠΎΡ‚ΠΎΠΊ. Π―ΠΆΡ‚Π΅ delegate_to ΠΈ ΠΈΠΌΠ° Ρ€Π°Π·ΡƒΠΌΠ½ΠΈ прилоТСния. Π―ΠΆΡ‚Π΅ meta: end host/play. Но! БпомнятС Π»ΠΈ си, Ρ‡Π΅ ΠΏΡ€Π΅ΠΏΠΎΠ΄Π°Π²Π°ΠΌΠ΅ основитС? Π—Π°Π±Ρ€Π°Π²ΠΈΡ… Π·Π° delegate_to. Π“ΠΎΠ²ΠΎΡ€ΠΈΠΌ Π·Π° Π½Π°ΠΉ-простия ΠΈ красив Ansible ΠΊΠΎΠ΄. ΠšΠΎΠ΅Ρ‚ΠΎ Π΅ лСсно Π·Π° Ρ‡Π΅Ρ‚Π΅Π½Π΅, лСсно Π·Π° писанС, лСсно Π·Π° отстраняванС Π½Π° Π³Ρ€Π΅ΡˆΠΊΠΈ, лСсно Π·Π° тСстванС ΠΈ лСсно Π·Π° попълванС. И Ρ‚Π°ΠΊΠ°, ΠΎΡ‰Π΅ вСднъТ:

play ΠΈ само play Ρ€Π΅ΡˆΠ°Π²Π° Π½Π° ΠΊΠΎΠΈ хостовС ΠΊΠ°ΠΊΠ²ΠΎ сС изпълнява.

Π’ Ρ‚ΠΎΠ·ΠΈ Ρ€Π°Π·Π΄Π΅Π» сС Π·Π°Π½ΠΈΠΌΠ°Π²Π°Ρ…ΠΌΠ΅ с опозицията ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΈΠ³Ρ€Π° ΠΈ роля. Π‘Π΅Π³Π° Π½Π΅ΠΊΠ° ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ Π·Π° Π²Ρ€ΡŠΠ·ΠΊΠ°Ρ‚Π° ΠΌΠ΅ΠΆΠ΄Ρƒ Π·Π°Π΄Π°Ρ‡ΠΈ ΠΈ Ρ€ΠΎΠ»ΠΈ.

Π—Π°Π΄Π°Ρ‡ΠΈ ΠΈ Ρ€ΠΎΠ»ΠΈ

ΠŸΠΎΠΌΠΈΡΠ»Π΅Ρ‚Π΅ Π·Π° ΠΈΠ³Ρ€Π°:

- hosts: somegroup
  pre_tasks:
    - some_tasks1:
  roles:
     - role1
     - role2
  post_tasks:
     - some_task2:
     - some_task3:

Π”Π° ΠΊΠ°ΠΆΠ΅ΠΌ, Ρ‡Π΅ трябва Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ foo. И ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° ΠΊΠ°Ρ‚ΠΎ foo: name=foobar state=present. КъдС трябва Π΄Π° напиша Ρ‚ΠΎΠ²Π°? Π² ΠΏΡ€Π΅Π΄ΠΈ? пост? БъздаванС Π½Π° роля?

...И къдС ΠΎΡ‚ΠΈΠ΄ΠΎΡ…Π° Π·Π°Π΄Π°Ρ‡ΠΈΡ‚Π΅?

ΠžΡ‚Π½ΠΎΠ²ΠΎ Π·Π°ΠΏΠΎΡ‡Π²Π°ΠΌΠ΅ с основитС – устройството Π·Π° ΠΈΠ³Ρ€Π°. Ако ΠΏΠ»Π°Π²Π°Ρ‚Π΅ ΠΏΠΎ Ρ‚ΠΎΠ·ΠΈ Π²ΡŠΠΏΡ€ΠΎΡ, Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ ΠΈΠ³Ρ€Π°Ρ‚Π° ΠΊΠ°Ρ‚ΠΎ основа Π·Π° всичко останало ΠΈ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΡŠΡ‚ Π²ΠΈ Ρ‰Π΅ бъдС "нСстабилСн".

Устройство Π·Π° Π²ΡŠΠ·ΠΏΡ€ΠΎΠΈΠ·Π²Π΅ΠΆΠ΄Π°Π½Π΅: Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° Π·Π° хостовС, настройки Π·Π° самото Π²ΡŠΠ·ΠΏΡ€ΠΎΠΈΠ·Π²Π΅ΠΆΠ΄Π°Π½Π΅ ΠΈ сСкции pre_tasks, tasks, role, post_tasks. ΠžΡΡ‚Π°Π½Π°Π»ΠΈΡ‚Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ Π·Π° ΠΈΠ³Ρ€Π° сСга Π½Π΅ са Π²Π°ΠΆΠ½ΠΈ Π·Π° нас.

Π Π΅Π΄ΡŠΡ‚ Π½Π° Ρ‚Π΅Ρ…Π½ΠΈΡ‚Π΅ Ρ€Π°Π·Π΄Π΅Π»ΠΈ със Π·Π°Π΄Π°Ρ‡ΠΈ ΠΈ Ρ€ΠΎΠ»ΠΈ: pre_tasks, roles, tasks, post_tasks. Въй ΠΊΠ°Ρ‚ΠΎ сСмантично Ρ€Π΅Π΄ΡŠΡ‚ Π½Π° изпълнСниС Π΅ ΠΌΠ΅ΠΆΠ΄Ρƒ tasks ΠΈ roles Π½Π΅ Π΅ ясно, Ρ‚ΠΎΠ³Π°Π²Π° Π½Π°ΠΉ-Π΄ΠΎΠ±Ρ€ΠΈΡ‚Π΅ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ ΠΊΠ°Π·Π²Π°Ρ‚, Ρ‡Π΅ добавямС Ρ€Π°Π·Π΄Π΅Π» tasks, само Π°ΠΊΠΎ Π½Π΅ roles... Ако ΠΈΠΌΠ° roles, слСд ΠΊΠΎΠ΅Ρ‚ΠΎ всички ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈ Π·Π°Π΄Π°Ρ‡ΠΈ са поставСни Π² Ρ€Π°Π·Π΄Π΅Π»ΠΈ pre_tasks/post_tasks.

ΠžΡΡ‚Π°Π²Π° само всичко Π΄Π° Π΅ сСмантично ясно: ΠΏΡŠΡ€Π²ΠΎ pre_tasks, Ρ‚ΠΎΠ³Π°Π²Π° roles, Ρ‚ΠΎΠ³Π°Π²Π° post_tasks.

Но всС ΠΎΡ‰Π΅ Π½Π΅ смС ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΈ Π½Π° Π²ΡŠΠΏΡ€ΠΎΡΠ°: къдС Π΅ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΌΠΎΠ΄ΡƒΠ»Π°? foo пиша? Врябва Π»ΠΈ Π΄Π° пишСм цяла роля Π·Π° всСки ΠΌΠΎΠ΄ΡƒΠ»? Или Π΅ ΠΏΠΎ-Π΄ΠΎΠ±Ρ€Π΅ Π΄Π° имаш Π΄Π΅Π±Π΅Π»Π° роля Π·Π° всичко? И Π°ΠΊΠΎ Π½Π΅ Π΅ роля, Ρ‚ΠΎΠ³Π°Π²Π° къдС Π΄Π° пиша - Π² pre ΠΈΠ»ΠΈ post?

Ако няма Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€Π°Π½ ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€ Π½Π° Ρ‚Π΅Π·ΠΈ Π²ΡŠΠΏΡ€ΠΎΡΠΈ, Ρ‚ΠΎΠ²Π° Π΅ Π·Π½Π°ΠΊ Π·Π° липса Π½Π° интуиция, тоСст ΡΡŠΡ‰ΠΈΡ‚Π΅ Ρ‚Π΅Π·ΠΈ β€žΠ½Π΅ΡΡ‚Π°Π±ΠΈΠ»Π½ΠΈ ΠΎΡΠ½ΠΎΠ²ΠΈβ€œ. НСка Π΄Π° Π³ΠΎ Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ. ΠŸΡŠΡ€Π²ΠΎ, Π²ΡŠΠΏΡ€ΠΎΡ Π·Π° сигурност: Ако ΠΈΠ³Ρ€Π°Ρ‚Π° ΠΈΠΌΠ° pre_tasks ΠΈ post_tasks (ΠΈ няма Π·Π°Π΄Π°Ρ‡ΠΈ ΠΈΠ»ΠΈ Ρ€ΠΎΠ»ΠΈ), Ρ‚ΠΎΠ³Π°Π²Π° ΠΌΠΎΠΆΠ΅ Π»ΠΈ Π½Π΅Ρ‰ΠΎ Π΄Π° сС счупи, Π°ΠΊΠΎ изпълня ΠΏΡŠΡ€Π²Π°Ρ‚Π° Π·Π°Π΄Π°Ρ‡Π° ΠΎΡ‚ post_tasks Π©Π΅ Π³ΠΎ прСмСстя Π΄ΠΎ края pre_tasks?

Π Π°Π·Π±ΠΈΡ€Π° сС, Ρ„ΠΎΡ€ΠΌΡƒΠ»ΠΈΡ€ΠΎΠ²ΠΊΠ°Ρ‚Π° Π½Π° Π²ΡŠΠΏΡ€ΠΎΡΠ° подсказва, Ρ‡Π΅ Ρ‰Π΅ сС счупи. Но ΠΊΠ°ΠΊΠ²ΠΎ Ρ‚ΠΎΡ‡Π½ΠΎ?

... ΠœΠ°Π½ΠΈΠΏΡƒΠ»Π°Ρ‚ΠΎΡ€ΠΈ. Π§Π΅Ρ‚Π΅Π½Π΅Ρ‚ΠΎ Π½Π° основитС Ρ€Π°Π·ΠΊΡ€ΠΈΠ²Π° Π²Π°ΠΆΠ΅Π½ Ρ„Π°ΠΊΡ‚: всички ΠΌΠ°Π½ΠΈΠΏΡƒΠ»Π°Ρ‚ΠΎΡ€ΠΈ сС изчистват Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ слСд всСки Ρ€Π°Π·Π΄Π΅Π». Π’Π΅Π·ΠΈ. всички Π·Π°Π΄Π°Ρ‡ΠΈ ΠΎΡ‚ pre_tasks, слСд Ρ‚ΠΎΠ²Π° всички ΠΌΠ°Π½ΠΈΠΏΡƒΠ»Π°Ρ‚ΠΎΡ€ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ са Π±ΠΈΠ»ΠΈ ΡƒΠ²Π΅Π΄ΠΎΠΌΠ΅Π½ΠΈ. Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° сС ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‚ всички Ρ€ΠΎΠ»ΠΈ ΠΈ всички ΠΌΠ°Π½ΠΈΠΏΡƒΠ»Π°Ρ‚ΠΎΡ€ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ са Π±ΠΈΠ»ΠΈ ΡƒΠ²Π΅Π΄ΠΎΠΌΠ΅Π½ΠΈ Π² Ρ€ΠΎΠ»ΠΈΡ‚Π΅. Π‘Π»Π΅Π΄ post_tasks ΠΈ Ρ‚Π΅Ρ…Π½ΠΈΡ‚Π΅ ΠΌΠ°Π½ΠΈΠΏΡƒΠ»Π°Ρ‚ΠΎΡ€ΠΈ.

По Ρ‚ΠΎΠ·ΠΈ Π½Π°Ρ‡ΠΈΠ½, Π°ΠΊΠΎ ΠΏΠ»ΡŠΠ·Π½Π΅Ρ‚Π΅ Π·Π°Π΄Π°Ρ‡Π° ΠΎΡ‚ post_tasks Π² pre_tasks, Ρ‚ΠΎΠ³Π°Π²Π° ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»Π½ΠΎ Ρ‰Π΅ Π³ΠΎ ΠΈΠ·ΠΏΡŠΠ»Π½ΠΈΡ‚Π΅, ΠΏΡ€Π΅Π΄ΠΈ ΠΌΠ°Π½ΠΈΠΏΡƒΠ»Π°Ρ‚ΠΎΡ€ΡŠΡ‚ Π΄Π° бъдС изпълнСн. Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π°ΠΊΠΎ Π² pre_tasks ΡƒΠ΅Π± ΡΡŠΡ€Π²ΡŠΡ€ΡŠΡ‚ Π΅ инсталиран ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Π½, ΠΈ post_tasks Π½Π΅Ρ‰ΠΎ сС ΠΈΠ·ΠΏΡ€Π°Ρ‰Π° Π΄ΠΎ Π½Π΅Π³ΠΎ, слСд Ρ‚ΠΎΠ²Π° ΠΏΡ€Π΅Ρ…Π²ΡŠΡ€Π»Π΅Ρ‚Π΅ Ρ‚Π°Π·ΠΈ Π·Π°Π΄Π°Ρ‡Π° Π² Ρ€Π°Π·Π΄Π΅Π»Π° pre_tasks Ρ‰Π΅ Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ Ρ„Π°ΠΊΡ‚Π°, Ρ‡Π΅ Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° Π½Π° β€žΠΈΠ·ΠΏΡ€Π°Ρ‰Π°Π½Π΅β€œ ΡΡŠΡ€Π²ΡŠΡ€ΡŠΡ‚ всС ΠΎΡ‰Π΅ няма Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ ΠΈ всичко Ρ‰Π΅ сС счупи.

Π‘Π΅Π³Π° Π½Π΅ΠΊΠ° помислим ΠΎΡ‚Π½ΠΎΠ²ΠΎ, Π·Π°Ρ‰ΠΎ ΠΈΠΌΠ°ΠΌΠ΅ Π½ΡƒΠΆΠ΄Π° pre_tasks ΠΈ post_tasks? НапримСр, Π·Π° Π΄Π° Π·Π°Π²ΡŠΡ€ΡˆΠΈΡ‚Π΅ всичко Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ (Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ ΠΌΠ°Π½ΠΈΠΏΡƒΠ»Π°Ρ‚ΠΎΡ€ΠΈ), ΠΏΡ€Π΅Π΄ΠΈ Π΄Π° ΠΈΠ·ΠΏΡŠΠ»Π½ΠΈΡ‚Π΅ ролята. А post_tasks Ρ‰Π΅ Π½ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈ Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈΠΌ с Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈΡ‚Π΅ ΠΎΡ‚ изпълнСниС Π½Π° Ρ€ΠΎΠ»ΠΈ (Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ ΠΌΠ°Π½ΠΈΠΏΡƒΠ»Π°Ρ‚ΠΎΡ€ΠΈ).

Π•Π΄ΠΈΠ½ ΠΏΡ€ΠΎΠ½ΠΈΡ†Π°Ρ‚Π΅Π»Π΅Π½ СкспСрт ΠΏΠΎ Ansible Ρ‰Π΅ Π½ΠΈ ΠΊΠ°ΠΆΠ΅ ΠΊΠ°ΠΊΠ²ΠΎ Π΅ Ρ‚ΠΎΠ²Π°. meta: flush_handlers, Π½ΠΎ Π·Π°Ρ‰ΠΎ сС Π½ΡƒΠΆΠ΄Π°Π΅ΠΌ ΠΎΡ‚ flush_handlers, Π°ΠΊΠΎ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Ρ€Π°Π·Ρ‡ΠΈΡ‚Π°ΠΌΠ΅ Π½Π° Ρ€Π΅Π΄Π° Π½Π° изпълнСниС Π½Π° сСкциитС Π² ΠΈΠ³Ρ€Π°Ρ‚Π°? ОсвСн Ρ‚ΠΎΠ²Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° meta: flush_handlers ΠΌΠΎΠΆΠ΅ Π΄Π° Π½ΠΈ Π΄Π°Π΄Π΅ Π½Π΅ΠΎΡ‡Π°ΠΊΠ²Π°Π½ΠΈ Π½Π΅Ρ‰Π° с Π΄ΡƒΠ±Π»ΠΈΡ€Π°Ρ‰ΠΈ сС ΠΌΠ°Π½ΠΈΠΏΡƒΠ»Π°Ρ‚ΠΎΡ€ΠΈ, ΠΊΠ°Ρ‚ΠΎ Π½ΠΈ Π΄Π°Π²Π° странни прСдупрСТдСния, ΠΊΠΎΠ³Π°Ρ‚ΠΎ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° when Ρƒ block ΠΈ Ρ‚.Π½. ΠšΠΎΠ»ΠΊΠΎΡ‚ΠΎ ΠΏΠΎ-Π΄ΠΎΠ±Ρ€Π΅ ΠΏΠΎΠ·Π½Π°Π²Π°Ρ‚Π΅ анзибъла, Ρ‚ΠΎΠ»ΠΊΠΎΠ²Π° ΠΏΠΎΠ²Π΅Ρ‡Π΅ нюанси ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° посочитС Π·Π° β€žΡΠ»ΠΎΠΆΠ½ΠΎβ€œ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅. И Π΅Π΄Π½ΠΎ просто Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ - ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° СстСствСно Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΡ€Π΅Π΄/Ρ€ΠΎΠ»ΠΈ/пост - Π½Π΅ ΠΏΡ€Π΅Π΄ΠΈΠ·Π²ΠΈΠΊΠ²Π° нюанси.

И ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ към Π½Π°ΡˆΠ΅Ρ‚ΠΎ β€žΡ„Ρƒβ€œ. КъдС Π΄Π° Π³ΠΎ слоТа? ΠŸΡ€Π΅Π΄ΠΈ, пост ΠΈΠ»ΠΈ Ρ€ΠΎΠ»ΠΈ? ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ Ρ‚ΠΎΠ²Π° зависи ΠΎΡ‚ Ρ‚ΠΎΠ²Π° Π΄Π°Π»ΠΈ ΠΈΠΌΠ°ΠΌΠ΅ Π½ΡƒΠΆΠ΄Π° ΠΎΡ‚ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈΡ‚Π΅ ΠΎΡ‚ ΠΌΠ°Π½ΠΈΠΏΡƒΠ»Π°Ρ‚ΠΎΡ€Π° Π·Π° foo. Ако Π³ΠΈ няма, Ρ‚ΠΎΠ³Π°Π²Π° foo Π½Π΅ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° сС поставя Π½ΠΈΡ‚ΠΎ Π² pre, Π½ΠΈΡ‚ΠΎ Π² post - Ρ‚Π΅Π·ΠΈ сСкции ΠΈΠΌΠ°Ρ‚ спСциално Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ - изпълнСниС Π½Π° Π·Π°Π΄Π°Ρ‡ΠΈ ΠΏΡ€Π΅Π΄ΠΈ ΠΈ слСд основната част ΠΎΡ‚ ΠΊΠΎΠ΄Π°.

Π‘Π΅Π³Π° ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€ΡŠΡ‚ Π½Π° Π²ΡŠΠΏΡ€ΠΎΡΠ° β€žΡ€ΠΎΠ»Ρ ΠΈΠ»ΠΈ Π·Π°Π΄Π°Ρ‡Π°β€œ сС свСТда Π΄ΠΎ Ρ‚ΠΎΠ²Π°, ΠΊΠΎΠ΅Ρ‚ΠΎ Π²Π΅Ρ‡Π΅ Π΅ Π² ΠΈΠ³Ρ€Π°Ρ‚Π° - Π°ΠΊΠΎ ΠΈΠΌΠ° Π·Π°Π΄Π°Ρ‡ΠΈ Ρ‚Π°ΠΌ, Ρ‚ΠΎΠ³Π°Π²Π° трябва Π΄Π° Π³ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚Π΅ към Π·Π°Π΄Π°Ρ‡ΠΈΡ‚Π΅. Ако ΠΈΠΌΠ° Ρ€ΠΎΠ»ΠΈ, трябва Π΄Π° ΡΡŠΠ·Π΄Π°Π΄Π΅Ρ‚Π΅ роля (Π΄ΠΎΡ€ΠΈ ΠΎΡ‚ Π΅Π΄Π½Π° Π·Π°Π΄Π°Ρ‡Π°). НСка напомня, Ρ‡Π΅ Π·Π°Π΄Π°Ρ‡ΠΈΡ‚Π΅ ΠΈ Ρ€ΠΎΠ»ΠΈΡ‚Π΅ Π½Π΅ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Π΅Π΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ.

Π Π°Π·Π±ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° основитС Π½Π° Ansible Π΄Π°Π²Π° Ρ€Π°Π·ΡƒΠΌΠ½ΠΈ ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€ΠΈ Π½Π° ΠΏΡ€ΠΈΠ²ΠΈΠ΄Π½ΠΎ Π²ΡŠΠΏΡ€ΠΎΡΠΈ Π½Π° вкуса.

Π—Π°Π΄Π°Ρ‡ΠΈ ΠΈ Ρ€ΠΎΠ»ΠΈ (Π²Ρ‚ΠΎΡ€Π° част)

Π‘Π΅Π³Π° Π½Π΅ΠΊΠ° обсъдим ситуацията, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Ρ‚Π΅ΠΏΡŠΡ€Π²Π° Π·Π°ΠΏΠΎΡ‡Π²Π°Ρ‚Π΅ Π΄Π° ΠΏΠΈΡˆΠ΅Ρ‚Π΅ ΠΊΠ½ΠΈΠ³Π°-ΠΈΠ³Ρ€Π°. Врябва Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ foo, bar ΠΈ baz. Π’ΠΎΠ²Π° Ρ‚Ρ€ΠΈ Π·Π°Π΄Π°Ρ‡ΠΈ Π΅Π΄Π½Π° роля Π»ΠΈ са ΠΈΠ»ΠΈ Ρ‚Ρ€ΠΈ Ρ€ΠΎΠ»ΠΈ? Π—Π° Π΄Π° ΠΎΠ±ΠΎΠ±Ρ‰ΠΈΠΌ Π²ΡŠΠΏΡ€ΠΎΡΠ°: Π² ΠΊΠΎΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ трябва Π΄Π° Π·Π°ΠΏΠΎΡ‡Π½Π΅Ρ‚Π΅ Π΄Π° ΠΏΠΈΡˆΠ΅Ρ‚Π΅ Ρ€ΠΎΠ»ΠΈ? Какъв Π΅ ΡΠΌΠΈΡΡŠΠ»ΡŠΡ‚ Π΄Π° пишСш Ρ€ΠΎΠ»ΠΈ, ΠΊΠΎΠ³Π°Ρ‚ΠΎ моТСш Π΄Π° пишСш Π·Π°Π΄Π°Ρ‡ΠΈ?... Какво Π΅ роля?

Π•Π΄Π½Π° ΠΎΡ‚ Π½Π°ΠΉ-Π³ΠΎΠ»Π΅ΠΌΠΈΡ‚Π΅ Π³Ρ€Π΅ΡˆΠΊΠΈ (Π²Π΅Ρ‡Π΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ… Π·Π° Ρ‚ΠΎΠ²Π°) Π΅ Π΄Π° мислим, Ρ‡Π΅ ролята Π΅ ΠΊΠ°Ρ‚ΠΎ функция Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ°Ρ‚Π°. Как ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° ΠΎΠ±Ρ‰ΠΎΡ‚ΠΎ описаниС Π½Π° функцията? Π’ΠΎΠΉ ΠΏΡ€ΠΈΠ΅ΠΌΠ° Π²Ρ…ΠΎΠ΄Π½ΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΈ, взаимодСйства със странични ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΈ, ΠΏΡ€Π°Π²ΠΈ странични Π΅Ρ„Π΅ΠΊΡ‚ΠΈ ΠΈ Π²Ρ€ΡŠΡ‰Π° стойност.

Π‘Π΅Π³Π° Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅. Какво ΠΌΠΎΠΆΠ΅ Π΄Π° сС Π½Π°ΠΏΡ€Π°Π²ΠΈ ΠΎΡ‚ Ρ‚ΠΎΠ²Π° Π² ролята? Π’ΠΈΠ½Π°Π³ΠΈ стС Π΄ΠΎΠ±Ρ€Π΅ дошли Π΄Π° ΠΈΠ·Π²ΠΈΠΊΠ²Π°Ρ‚Π΅ странични Π΅Ρ„Π΅ΠΊΡ‚ΠΈ, Ρ‚ΠΎΠ²Π° Π΅ ΡΡŠΡ‰Π½ΠΎΡΡ‚Ρ‚Π° Π½Π° цСлия Ansible – Π΄Π° създава странични Π΅Ρ„Π΅ΠΊΡ‚ΠΈ. Π˜ΠΌΠ°Ρ‚Π΅ странични ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΈ? Π•Π»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ€Π½ΠΎ. Но с "ΠΏΡ€Π΅Π΄Π°Π²Π°Π½Π΅ Π½Π° стойност ΠΈ Π²Ρ€ΡŠΡ‰Π°Π½Π΅" - Ρ‚ΠΎΠ²Π° Π΅ мястото, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚ΠΈ. ΠŸΡŠΡ€Π²ΠΎ, Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΏΠΎΠ΄Π°Π΄Π΅Ρ‚Π΅ стойност към роля. ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π·Π°Π΄Π°Π΄Π΅Ρ‚Π΅ Π³Π»ΠΎΠ±Π°Π»Π½Π° ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° с Π΄ΠΎΠΆΠΈΠ²ΠΎΡ‚Π΅Π½ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π½Π° ΠΈΠ³Ρ€Π°Ρ‚Π° Π² сСкцията vars Π·Π° ролята. ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π·Π°Π΄Π°Π΄Π΅Ρ‚Π΅ Π³Π»ΠΎΠ±Π°Π»Π½Π° ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° с цял ΠΆΠΈΠ²ΠΎΡ‚ Π² ролята. Или Π΄ΠΎΡ€ΠΈ с ΠΆΠΈΠ²ΠΎΡ‚Π° Π½Π° ΠΊΠ½ΠΈΠ³ΠΈΡ‚Π΅-ΠΈΠ³Ρ€ΠΈ (set_fact/register). Но Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΈΠΌΠ°Ρ‚Π΅ "Π»ΠΎΠΊΠ°Π»Π½ΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ". НС ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° β€žΠ²Π·Π΅ΠΌΠ΅Ρ‚Π΅ ΡΡ‚ΠΎΠΉΠ½ΠΎΡΡ‚β€œ ΠΈ β€žΠ΄Π° я Π²ΡŠΡ€Π½Π΅Ρ‚Π΅β€œ.

ΠžΡΠ½ΠΎΠ²Π½ΠΎΡ‚ΠΎ Π½Π΅Ρ‰ΠΎ слСдва ΠΎΡ‚ Ρ‚ΠΎΠ²Π°: Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π½Π°ΠΏΠΈΡˆΠ΅Ρ‚Π΅ Π½Π΅Ρ‰ΠΎ Π² Ansible, Π±Π΅Π· Π΄Π° ΠΏΡ€Π΅Π΄ΠΈΠ·Π²ΠΈΠΊΠ°Ρ‚Π΅ странични Π΅Ρ„Π΅ΠΊΡ‚ΠΈ. ΠŸΡ€ΠΎΠΌΡΠ½Π°Ρ‚Π° Π½Π° Π³Π»ΠΎΠ±Π°Π»Π½ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ Π²ΠΈΠ½Π°Π³ΠΈ Π΅ страничСн Π΅Ρ„Π΅ΠΊΡ‚ Π·Π° Π΄Π°Π΄Π΅Π½Π° функция. Π’ Rust, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, промяната Π½Π° Π³Π»ΠΎΠ±Π°Π»Π½Π° ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° Π΅ unsafe. И Π² Ansible Ρ‚ΠΎΠ²Π° Π΅ СдинствСният ΠΌΠ΅Ρ‚ΠΎΠ΄ Π·Π° влияниС Π²ΡŠΡ€Ρ…Ρƒ стойноститС Π·Π° роля. ΠžΠ±ΡŠΡ€Π½Π΅Ρ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈΡ‚Π΅ Π΄ΡƒΠΌΠΈ: Π½Π΅ β€žΠΏΡ€Π΅Π΄Π°ΠΉΡ‚Π΅ стойност Π½Π° Ρ€ΠΎΠ»ΡΡ‚Π°β€œ, Π° β€žΠΏΡ€ΠΎΠΌΠ΅Π½Π΅Ρ‚Π΅ стойноститС, ΠΊΠΎΠΈΡ‚ΠΎ ролята ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°β€œ. Няма изолация ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€ΠΎΠ»ΠΈΡ‚Π΅. Няма изолация ΠΌΠ΅ΠΆΠ΄Ρƒ Π·Π°Π΄Π°Ρ‡ΠΈ ΠΈ Ρ€ΠΎΠ»ΠΈ.

ΠžΠ±Ρ‰ΠΎ: ролята Π½Π΅ Π΅ функция.

КоС Π΅ Ρ…ΡƒΠ±Π°Π²ΠΎΡ‚ΠΎ Π½Π° ролята? ΠŸΡŠΡ€Π²ΠΎ, ролята ΠΈΠΌΠ° стойности ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ (/default/main.yaml), Π²Ρ‚ΠΎΡ€ΠΎ, ролята ΠΈΠΌΠ° Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ Π·Π° ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅.

Какви са прСдимствата Π½Π° стойноститС ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅? Въй ΠΊΠ°Ρ‚ΠΎ Π² ΠΏΠΈΡ€Π°ΠΌΠΈΠ΄Π°Ρ‚Π° Π½Π° ΠœΠ°ΡΠ»ΠΎΡƒ, доста ΠΈΠ·ΠΊΡ€ΠΈΠ²Π΅Π½Π°Ρ‚Π° Ρ‚Π°Π±Π»ΠΈΡ†Π° Π½Π° ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈΡ‚Π΅ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ΠΈ Π½Π° Ansible, Ρ€ΠΎΠ»Π΅Π²ΠΈΡ‚Π΅ настройки ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ са с Π½Π°ΠΉ-нисък ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ (минус ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΡ‚Π΅ Π½Π° командния Ρ€Π΅Π΄ Π½Π° Ansible). Π’ΠΎΠ²Π° ΠΎΠ·Π½Π°Ρ‡Π°Π²Π°, Ρ‡Π΅ Π°ΠΊΠΎ трябва Π΄Π° прСдоставитС стойности ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ ΠΈ Π΄Π° Π½Π΅ сС притСсняватС, Ρ‡Π΅ Ρ‚Π΅ Ρ‰Π΅ замСнят стойноститС ΠΎΡ‚ ΠΈΠ½Π²Π΅Π½Ρ‚Π°Ρ€Π° ΠΈΠ»ΠΈ Π³Ρ€ΡƒΠΏΠΎΠ²ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ, Ρ‚ΠΎΠ³Π°Π²Π° стойноститС ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Π½Π° ролята са СдинствСното ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΎ място Π·Π° вас. (Малко лъТа - ΠΈΠΌΠ° ΠΎΡ‰Π΅ |d(your_default_here), Π½ΠΎ Π°ΠΊΠΎ Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ Π·Π° стационарни мСста, Ρ‚ΠΎΠ³Π°Π²Π° само Ρ€ΠΎΠ»ΠΈ ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅).

Какво Π΄Ρ€ΡƒΠ³ΠΎ Π΅ страхотно Π² Ρ€ΠΎΠ»ΠΈΡ‚Π΅? Π—Π°Ρ‰ΠΎΡ‚ΠΎ ΠΈΠΌΠ°Ρ‚ собствСни ΠΊΠ°Ρ‚Π°Π»ΠΎΠ·ΠΈ. Π’ΠΎΠ²Π° са Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ Π·Π° ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ, ΠΊΠ°ΠΊΡ‚ΠΎ постоянни (Ρ‚.Π΅. изчислСни Π·Π° ролята), Ρ‚Π°ΠΊΠ° ΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π½ΠΈ (ΠΈΠΌΠ° ΠΈΠ»ΠΈ ΠΌΠΎΠ΄Π΅Π», ΠΈΠ»ΠΈ Π°Π½Ρ‚ΠΈ-ΠΌΠΎΠ΄Π΅Π» - include_vars Π·Π°Π΅Π΄Π½ΠΎ с {{ ansible_distribution }}-{{ ansible_distribution_major_version }}.yml.). Π’ΠΎΠ²Π° са Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈΡ‚Π΅ Π·Π° files/, templates/. ОсвСн Ρ‚ΠΎΠ²Π° Π²ΠΈ позволява Π΄Π° ΠΈΠΌΠ°Ρ‚Π΅ свои собствСни ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΠΈ Π΄ΠΎΠ±Π°Π²ΠΊΠΈ (library/). Но Π² сравнСниС със Π·Π°Π΄Π°Ρ‡ΠΈΡ‚Π΅ Π² ΠΊΠ½ΠΈΠ³Π°Ρ‚Π° (която ΡΡŠΡ‰ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠΌΠ° всичко Ρ‚ΠΎΠ²Π°), СдинствСното прСдимство Ρ‚ΡƒΠΊ Π΅, Ρ‡Π΅ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅Ρ‚Π΅ Π½Π΅ сС ΠΈΠ·Ρ…Π²ΡŠΡ€Π»ΡΡ‚ Π² Π΅Π΄Π½Π° ΠΊΡƒΠΏΡ‡ΠΈΠ½Π°, Π° Π² няколко ΠΎΡ‚Π΄Π΅Π»Π½ΠΈ ΠΊΡƒΠΏΡ‡ΠΈΠ½ΠΈ.

ΠžΡ‰Π΅ Π΅Π΄Π½Π° подробност: ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΎΠΏΠΈΡ‚Π°Ρ‚Π΅ Π΄Π° ΡΡŠΠ·Π΄Π°Π΄Π΅Ρ‚Π΅ Ρ€ΠΎΠ»ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ Ρ‰Π΅ Π±ΡŠΠ΄Π°Ρ‚ Π΄ΠΎΡΡ‚ΡŠΠΏΠ½ΠΈ Π·Π° ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½Π° ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π° (Ρ‡Ρ€Π΅Π· galaxy). Π‘ появата Π½Π° ΠΊΠΎΠ»Π΅ΠΊΡ†ΠΈΠΈΡ‚Π΅ Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° Ρ€ΠΎΠ»ΠΈΡ‚Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° сС счита Π·Π° ΠΏΠΎΡ‡Ρ‚ΠΈ Π·Π°Π±Ρ€Π°Π²Π΅Π½ΠΎ.

По Ρ‚ΠΎΠ·ΠΈ Π½Π°Ρ‡ΠΈΠ½ Ρ€ΠΎΠ»ΠΈΡ‚Π΅ ΠΈΠΌΠ°Ρ‚ Π΄Π²Π΅ Π²Π°ΠΆΠ½ΠΈ характСристики: ΠΈΠΌΠ°Ρ‚ настройки ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ (ΡƒΠ½ΠΈΠΊΠ°Π»Π½Π° функция) ΠΈ Π²ΠΈ позволяват Π΄Π° структуриратС ΠΊΠΎΠ΄Π° си.

Π’Ρ€ΡŠΡ‰Π°ΠΉΠΊΠΈ сС към ΠΏΡŠΡ€Π²ΠΎΠ½Π°Ρ‡Π°Π»Π½ΠΈΡ Π²ΡŠΠΏΡ€ΠΎΡ: ΠΊΠΎΠ³Π° Π΄Π° изпълнявамС Π·Π°Π΄Π°Ρ‡ΠΈ ΠΈ ΠΊΠΎΠ³Π° Π΄Π° изпълнявамС Ρ€ΠΎΠ»ΠΈ? Π—Π°Π΄Π°Ρ‡ΠΈΡ‚Π΅ Π² ΠΊΠ½ΠΈΠ³Π°Ρ‚Π° Π½Π°ΠΉ-чСсто сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ ΠΈΠ»ΠΈ ΠΊΠ°Ρ‚ΠΎ β€žΠ»Π΅ΠΏΠΈΠ»ΠΎβ€œ ΠΏΡ€Π΅Π΄ΠΈ/слСд Ρ€ΠΎΠ»ΠΈΡ‚Π΅, ΠΈΠ»ΠΈ ΠΊΠ°Ρ‚ΠΎ нСзависим Π³Ρ€Π°Π΄ΠΈΠ²Π΅Π½ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ (Ρ‚ΠΎΠ³Π°Π²Π° Π½Π΅ трябва Π΄Π° ΠΈΠΌΠ° Ρ€ΠΎΠ»ΠΈ Π² ΠΊΠΎΠ΄Π°). ΠšΡƒΠΏΡ‡ΠΈΠ½Π° Π½ΠΎΡ€ΠΌΠ°Π»Π½ΠΈ Π·Π°Π΄Π°Ρ‡ΠΈ, смСсСни с Ρ€ΠΎΠ»ΠΈ, Π΅ нСдвусмислСна помия. Врябва Π΄Π° сС ΠΏΡ€ΠΈΠ΄ΡŠΡ€ΠΆΠ°Ρ‚Π΅ към ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ стил - ΠΈΠ»ΠΈ Π·Π°Π΄Π°Ρ‡Π°, ΠΈΠ»ΠΈ роля. Π ΠΎΠ»ΠΈΡ‚Π΅ осигуряват раздСлянС Π½Π° ΠΎΠ±Π΅ΠΊΡ‚ΠΈ ΠΈ настройки ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅, Π·Π°Π΄Π°Ρ‡ΠΈΡ‚Π΅ Π²ΠΈ позволяват Π΄Π° Ρ‡Π΅Ρ‚Π΅Ρ‚Π΅ ΠΊΠΎΠ΄ ΠΏΠΎ-Π±ΡŠΡ€Π·ΠΎ. ОбикновСно ΠΏΠΎ-β€žΡΡ‚Π°Ρ†ΠΈΠΎΠ½Π°Ρ€Π΅Π½β€œ (Π²Π°ΠΆΠ΅Π½ ΠΈ слоТСн) ΠΊΠΎΠ΄ сС поставя Π² Ρ€ΠΎΠ»ΠΈ, Π° спомагатСлнитС скриптовС сС ΠΏΠΈΡˆΠ°Ρ‚ Π² стил Π½Π° Π·Π°Π΄Π°Ρ‡Π°.

Π’ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΅ Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ import_role ΠΊΠ°Ρ‚ΠΎ Π·Π°Π΄Π°Ρ‡Π°, Π½ΠΎ Π°ΠΊΠΎ Π½Π°ΠΏΠΈΡˆΠ΅Ρ‚Π΅ Ρ‚ΠΎΠ²Π°, Π±ΡŠΠ΄Π΅Ρ‚Π΅ Π³ΠΎΡ‚ΠΎΠ²ΠΈ Π΄Π° обяснитС Π½Π° собствСното си чувство Π·Π° красота Π·Π°Ρ‰ΠΎ искатС Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ Ρ‚ΠΎΠ²Π°.

Π•Π΄ΠΈΠ½ ΠΏΡ€ΠΎΠ½ΠΈΡ†Π°Ρ‚Π΅Π»Π΅Π½ Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π» ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΊΠ°ΠΆΠ΅, Ρ‡Π΅ Ρ€ΠΎΠ»ΠΈΡ‚Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€Π°Ρ‚ Ρ€ΠΎΠ»ΠΈ, Ρ€ΠΎΠ»ΠΈΡ‚Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° ΠΈΠΌΠ°Ρ‚ зависимости Ρ‡Ρ€Π΅Π· galaxy.yml ΠΈ ΠΈΠΌΠ° ΡΡŠΡ‰ΠΎ уТасно ΠΈ уТасно include_role β€” Напомням Π²ΠΈ, Ρ‡Π΅ ΡƒΡΡŠΠ²ΡŠΡ€ΡˆΠ΅Π½ΡΡ‚Π²Π°ΠΌΠ΅ умСнията Π² основния анзибъл, Π° Π½Π΅ във Ρ„ΠΈΠ³ΡƒΡ€Π½Π°Ρ‚Π° гимнастика.

ΠœΠ°Π½ΠΈΠΏΡƒΠ»Π°Ρ‚ΠΎΡ€ΠΈ ΠΈ Π·Π°Π΄Π°Ρ‡ΠΈ

НСка обсъдим Π΄Ρ€ΡƒΠ³ΠΎ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ Π½Π΅Ρ‰ΠΎ: ΠΌΠ°Π½ΠΈΠΏΡƒΠ»Π°Ρ‚ΠΎΡ€ΠΈ. Π”Π° знаСш ΠΊΠ°ΠΊ Π΄Π° Π³ΠΈ използваш ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΎ Π΅ ΠΏΠΎΡ‡Ρ‚ΠΈ изкуство. Каква Π΅ Ρ€Π°Π·Π»ΠΈΠΊΠ°Ρ‚Π° ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΌΠ°Π½ΠΈΠΏΡƒΠ»Π°Ρ‚ΠΎΡ€ ΠΈ Π΄Ρ€Π°Π³?

Въй ΠΊΠ°Ρ‚ΠΎ си спомнямС основитС, Π΅Ρ‚ΠΎ Π΅Π΄ΠΈΠ½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

- hosts: group1
  tasks:
    - foo:
      notify: handler1
  handlers:
     - name: handler1
       bar:

ΠœΠ°Π½ΠΈΠΏΡƒΠ»Π°Ρ‚ΠΎΡ€ΠΈΡ‚Π΅ Π½Π° ролята сС Π½Π°ΠΌΠΈΡ€Π°Ρ‚ Π² rolename/handlers/main.yaml. ΠœΠ°Π½ΠΈΠΏΡƒΠ»Π°Ρ‚ΠΎΡ€ΠΈΡ‚Π΅ ровят ΠΌΠ΅ΠΆΠ΄Ρƒ всички участници Π² ΠΈΠ³Ρ€Π°Ρ‚Π°: pre/post_tasks ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° изтСглят ΠΌΠ°Π½ΠΈΠΏΡƒΠ»Π°Ρ‚ΠΎΡ€ΠΈ Π½Π° Ρ€ΠΎΠ»ΠΈ, Π° ролята ΠΌΠΎΠΆΠ΅ Π΄Π° изтСгля ΠΌΠ°Π½ΠΈΠΏΡƒΠ»Π°Ρ‚ΠΎΡ€ΠΈ ΠΎΡ‚ ΠΈΠ³Ρ€Π°Ρ‚Π°. ΠžΠ±Π°Ρ‡Π΅ извикванията Π½Π° "ΠΊΡ€ΡŠΡΡ‚ΠΎΡΠ°Π½ΠΈ Ρ€ΠΎΠ»ΠΈ" към ΠΌΠ°Π½ΠΈΠΏΡƒΠ»Π°Ρ‚ΠΎΡ€ΠΈ причиняват ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ²Π΅Ρ‡Π΅ wtf, ΠΎΡ‚ΠΊΠΎΠ»ΠΊΠΎΡ‚ΠΎ повтарянСто Π½Π° Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»Π΅Π½ ΠΌΠ°Π½ΠΈΠΏΡƒΠ»Π°Ρ‚ΠΎΡ€. (Π”Ρ€ΡƒΠ³ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ ΠΎΡ‚ Π½Π°ΠΉ-Π΄ΠΎΠ±Ρ€ΠΈΡ‚Π΅ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ Π΅ Π΄Π° сС ΠΎΠΏΠΈΡ‚Π²Π°Ρ‚Π΅ Π΄Π° Π½Π΅ повтарятС ΠΈΠΌΠ΅Π½Π° Π½Π° ΠΌΠ°Π½ΠΈΠΏΡƒΠ»Π°Ρ‚ΠΎΡ€ΠΈ).

ΠžΡΠ½ΠΎΠ²Π½Π°Ρ‚Π° Ρ€Π°Π·Π»ΠΈΠΊΠ° Π΅, Ρ‡Π΅ Π·Π°Π΄Π°Ρ‡Π°Ρ‚Π° Π²ΠΈΠ½Π°Π³ΠΈ сС изпълнява (ΠΈΠ΄Π΅ΠΌΠΏΠΎΡ‚Π΅Π½Ρ‚Π½ΠΎ) (Ρ‚Π°Π³ΠΎΠ²Π΅ плюс/минус ΠΈ when), Π° ΠΌΠ°Π½ΠΈΠΏΡƒΠ»Π°Ρ‚ΠΎΡ€ΡŠΡ‚ - Ρ‡Ρ€Π΅Π· промяна Π½Π° ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅Ρ‚ΠΎ (увСдомяванСто задСйства само Π°ΠΊΠΎ Π΅ ΠΏΡ€ΠΎΠΌΠ΅Π½Π΅Π½ΠΎ). Какво ΠΎΠ·Π½Π°Ρ‡Π°Π²Π° Ρ‚ΠΎΠ²Π°? НапримСр Ρ„Π°ΠΊΡ‚ΡŠΡ‚, Ρ‡Π΅ ΠΊΠΎΠ³Π°Ρ‚ΠΎ рСстартиратС, Π°ΠΊΠΎ няма промяна, Ρ‚ΠΎΠ³Π°Π²Π° няма Π΄Π° ΠΈΠΌΠ° ΠΌΠ°Π½ΠΈΠΏΡƒΠ»Π°Ρ‚ΠΎΡ€. Π—Π°Ρ‰ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° сС Π½Π°Π»ΠΎΠΆΠΈ Π΄Π° изпълним ΠΌΠ°Π½ΠΈΠΏΡƒΠ»Π°Ρ‚ΠΎΡ€, ΠΊΠΎΠ³Π°Ρ‚ΠΎ няма промяна Π² Π·Π°Π΄Π°Ρ‡Π°Ρ‚Π° Π·Π° Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Π½Π΅? НапримСр, Π·Π°Ρ‰ΠΎΡ‚ΠΎ Π½Π΅Ρ‰ΠΎ сС счупи ΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ, Π½ΠΎ ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π΅ достигна Π΄ΠΎ ΠΌΠ°Π½ΠΈΠΏΡƒΠ»Π°Ρ‚ΠΎΡ€Π°. НапримСр, Π·Π°Ρ‰ΠΎΡ‚ΠΎ ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π° Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚ΠΈ. ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡΡ‚Π° Π΅ ΠΏΡ€ΠΎΠΌΠ΅Π½Π΅Π½Π°, услугата Π½Π΅ Π΅ рСстартирана. БлСдващият ΠΏΡŠΡ‚, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π³ΠΎ стартиратС, конфигурацията Π²Π΅Ρ‡Π΅ Π½Π΅ сС промСня ΠΈ услугата остава със старата вСрсия Π½Π° конфигурацията.

Битуацията с конфигурацията Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС Ρ€Π΅ΡˆΠ΅Π½Π° (ΠΏΠΎ-Ρ‚ΠΎΡ‡Π½ΠΎ, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ сами Π΄Π° измислитС спСциалСн ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» Π·Π° рСстартиранС с Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΈ Ρ„Π»Π°Π³ΠΎΠ²Π΅ ΠΈ Ρ‚.Π½., Π½ΠΎ Ρ‚ΠΎΠ²Π° Π²Π΅Ρ‡Π΅ Π½Π΅ Π΅ β€žΠΎΡΠ½ΠΎΠ²Π½ΠΎ Π°Π½Π·ΠΈΠ±ΠΈΠ»Π½ΠΎβ€œ ΠΏΠΎΠ΄ Π½ΠΈΠΊΠ°ΠΊΠ²Π° Ρ„ΠΎΡ€ΠΌΠ°). Но ΠΈΠΌΠ° ΠΈ Π΄Ρ€ΡƒΠ³Π° ΠΎΠ±Ρ‰Π° история: инсталирахмС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ, записахмС Π³ΠΎ .service-Ρ„Π°ΠΉΠ» ΠΈ сСга Π³ΠΎ искамС daemon_reload ΠΈ state=started. И СстСствСното място Π·Π° Ρ‚ΠΎΠ²Π° ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° Π΅ ΠΌΠ°Π½ΠΈΠΏΡƒΠ»Π°Ρ‚ΠΎΡ€ΡŠΡ‚. Но Π°ΠΊΠΎ Π³ΠΎ Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ Π½Π΅ ΠΌΠ°Π½ΠΈΠΏΡƒΠ»Π°Ρ‚ΠΎΡ€, Π° Π·Π°Π΄Π°Ρ‡Π° Π² края Π½Π° списък със Π·Π°Π΄Π°Ρ‡ΠΈ ΠΈΠ»ΠΈ роля, Ρ‚ΠΎΠ³Π°Π²Π° Ρ‚ΠΎΠΉ Ρ‰Π΅ сС изпълнява ΠΈΠ΄Π΅ΠΌΠΏΠΎΡ‚Π΅Π½Ρ‚Π½ΠΎ всСки ΠΏΡŠΡ‚. Π”ΠΎΡ€ΠΈ ΠΊΠ½ΠΈΠ³Π°Ρ‚Π° с ΠΈΠ³Ρ€ΠΈ Π΄Π° сС счупи ΠΏΠΎ срСдата. Π’ΠΎΠ²Π° ΠΈΠ·ΠΎΠ±Ρ‰ΠΎ Π½Π΅ Ρ€Π΅ΡˆΠ°Π²Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° с рСстартиранСто (Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ Π·Π°Π΄Π°Ρ‡Π° с Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° restarted, Π·Π°Ρ‰ΠΎΡ‚ΠΎ идСмпотСнтността сС Π³ΡƒΠ±ΠΈ), Π½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ си струва Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ state=started, ΠΎΠ±Ρ‰Π°Ρ‚Π° стабилност Π½Π° ΠΊΠ½ΠΈΠ³ΠΈΡ‚Π΅ Π·Π° ΠΈΠ³Ρ€ΠΈ сС ΡƒΠ²Π΅Π»ΠΈΡ‡Π°Π²Π°, Π·Π°Ρ‰ΠΎΡ‚ΠΎ броят Π½Π° Π²Ρ€ΡŠΠ·ΠΊΠΈΡ‚Π΅ ΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π½ΠΎΡ‚ΠΎ ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅ намалява.

Π”Ρ€ΡƒΠ³ΠΎ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»Π½ΠΎ свойство Π½Π° ΠΌΠ°Π½ΠΈΠΏΡƒΠ»Π°Ρ‚ΠΎΡ€Π° Π΅, Ρ‡Π΅ Π½Π΅ Π·Π°Π΄Ρ€ΡŠΡΡ‚Π²Π° ΠΈΠ·Ρ…ΠΎΠ΄Π°. Няма ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ - няма Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΎ пропуснато ΠΈΠ»ΠΈ Π΄ΠΎΠ±Ρ€Π΅ Π² ΠΈΠ·Ρ…ΠΎΠ΄Π° - ΠΏΠΎ-лСсно Π·Π° Ρ‡Π΅Ρ‚Π΅Π½Π΅. Π’ΠΎΠ²Π° ΡΡŠΡ‰ΠΎ Π΅ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»Π½ΠΎ свойство - Π°ΠΊΠΎ Π½Π°ΠΌΠ΅Ρ€ΠΈΡ‚Π΅ ΠΏΠ΅Ρ‡Π°Ρ‚Π½Π° Π³Ρ€Π΅ΡˆΠΊΠ° Π² Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎ изпълнСна Π·Π°Π΄Π°Ρ‡Π° ΠΏΡ€ΠΈ ΠΏΡŠΡ€Π²ΠΎΡ‚ΠΎ изпълнСниС, Ρ‚ΠΎΠ³Π°Π²Π° ΠΌΠ°Π½ΠΈΠΏΡƒΠ»Π°Ρ‚ΠΎΡ€ΠΈΡ‚Π΅ Ρ‰Π΅ Π±ΡŠΠ΄Π°Ρ‚ изпълнСни само ΠΊΠΎΠ³Π°Ρ‚ΠΎ сС промСнят, Ρ‚.Π΅. ΠΏΡ€ΠΈ някои условия - ΠΌΠ½ΠΎΠ³ΠΎ рядко. НапримСр Π·Π° ΠΏΡŠΡ€Π²ΠΈ ΠΏΡŠΡ‚ Π² ΠΆΠΈΠ²ΠΎΡ‚Π° си ΠΏΠ΅Ρ‚ Π³ΠΎΠ΄ΠΈΠ½ΠΈ ΠΏΠΎ-късно. И, Ρ€Π°Π·Π±ΠΈΡ€Π° сС, Ρ‰Π΅ ΠΈΠΌΠ° ΠΏΠ΅Ρ‡Π°Ρ‚Π½Π° Π³Ρ€Π΅ΡˆΠΊΠ° Π² ΠΈΠΌΠ΅Ρ‚ΠΎ ΠΈ всичко Ρ‰Π΅ сС счупи. И Π°ΠΊΠΎ Π½Π΅ Π³ΠΈ стартиратС Π²Ρ‚ΠΎΡ€ΠΈ ΠΏΡŠΡ‚, няма промяна.

ΠžΡ‚Π΄Π΅Π»Π½ΠΎ трябва Π΄Π° Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ Π·Π° Π½Π°Π»ΠΈΡ‡ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ. НапримСр, Π°ΠΊΠΎ ΡƒΠ²Π΅Π΄ΠΎΠΌΠΈΡ‚Π΅ Π·Π°Π΄Π°Ρ‡Π° с Ρ†ΠΈΠΊΡŠΠ», ΠΊΠ°ΠΊΠ²ΠΎ Ρ‰Π΅ ΠΈΠΌΠ° Π² ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈΡ‚Π΅? ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π³Π°Π΄Π°Π΅Ρ‚Π΅ Π°Π½Π°Π»ΠΈΡ‚ΠΈΡ‡Π½ΠΎ, Π½ΠΎ Π½Π΅ Π²ΠΈΠ½Π°Π³ΠΈ Π΅ Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»Π½ΠΎ, особСно Π°ΠΊΠΎ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈΡ‚Π΅ ΠΈΠ΄Π²Π°Ρ‚ ΠΎΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ мСста.

... Π’Π°ΠΊΠ° Ρ‡Π΅ ΠΌΠ°Π½ΠΈΠΏΡƒΠ»Π°Ρ‚ΠΎΡ€ΠΈΡ‚Π΅ са ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΈ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎ-ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΈ, ΠΎΡ‚ΠΊΠΎΠ»ΠΊΠΎΡ‚ΠΎ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π°Ρ‚. Ако ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π½Π°ΠΏΠΈΡˆΠ΅Ρ‚Π΅ Π½Π΅Ρ‰ΠΎ красиво (Π±Π΅Π· излишни ΡƒΠΊΡ€Π°ΡˆΠ΅Π½ΠΈΡ) Π±Π΅Π· ΠΌΠ°Π½ΠΈΠΏΡƒΠ»Π°Ρ‚ΠΎΡ€ΠΈ, ΠΏΠΎ-Π΄ΠΎΠ±Ρ€Π΅ Π΅ Π΄Π° Π³ΠΎ Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ Π±Π΅Π· тях. Ако Π½Π΅ сС ΠΏΠΎΠ»ΡƒΡ‡ΠΈ красиво, ΠΏΠΎ-Π΄ΠΎΠ±Ρ€Π΅ Π΅ с тях.

РазяТдащият Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π» ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΎ отбСлязва, Ρ‡Π΅ Π½Π΅ смС обсъТдали listenΡ‡Π΅ ΠΌΠ°Π½ΠΈΠΏΡƒΠ»Π°Ρ‚ΠΎΡ€ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠ·Π²ΠΈΠΊΠ° notify Π·Π° Π΄Ρ€ΡƒΠ³ ΠΌΠ°Π½ΠΈΠΏΡƒΠ»Π°Ρ‚ΠΎΡ€, Ρ‡Π΅ ΠΌΠ°Π½ΠΈΠΏΡƒΠ»Π°Ρ‚ΠΎΡ€ ΠΌΠΎΠΆΠ΅ Π΄Π° Π²ΠΊΠ»ΡŽΡ‡Π²Π° import_tasks (ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΡ€Π°Π²ΠΈ include_role с with_items), Ρ‡Π΅ ΠΌΠ°Π½ΠΈΠΏΡƒΠ»Π°Ρ‚ΠΎΡ€Π½Π°Ρ‚Π° систСма Π² Ansible Π΅ Turing-complete, Ρ‡Π΅ ΠΌΠ°Π½ΠΈΠΏΡƒΠ»Π°Ρ‚ΠΎΡ€ΠΈΡ‚Π΅ ΠΎΡ‚ include_role сС прСсичат ΠΏΠΎ Π»ΡŽΠ±ΠΎΠΏΠΈΡ‚Π΅Π½ Π½Π°Ρ‡ΠΈΠ½ с ΠΌΠ°Π½ΠΈΠΏΡƒΠ»Π°Ρ‚ΠΎΡ€ΠΈ ΠΎΡ‚ ΠΈΠ³Ρ€Π°, ΠΈ Ρ‚.Π½. .d. - всичко Ρ‚ΠΎΠ²Π° ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ Π½Π΅ Π΅ β€žΠΎΡΠ½ΠΎΠ²Π°Ρ‚Π°β€œ).

Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‡Π΅ ΠΈΠΌΠ° Π΅Π΄ΠΈΠ½ спСцифичСн WTF, ΠΊΠΎΠΉΡ‚ΠΎ Π²ΡΡŠΡ‰Π½ΠΎΡΡ‚ Π΅ функция, която трябва Π΄Π° ΠΈΠΌΠ°Ρ‚Π΅ ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄. Ако Π·Π°Π΄Π°Ρ‡Π°Ρ‚Π° Π²ΠΈ Π΅ изпълнСна с delegate_to ΠΈ ΠΈΠΌΠ° notify, Ρ‚ΠΎΠ³Π°Π²Π° ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΈΡΡ‚ ΠΌΠ°Π½ΠΈΠΏΡƒΠ»Π°Ρ‚ΠΎΡ€ сС изпълнява Π±Π΅Π· delegate_to, Ρ‚.Π΅. Π½Π° хоста, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ Π΅ възлоТСна ΠΈΠ³Ρ€Π°. (Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‡Π΅ ΠΌΠ°Π½ΠΈΠΏΡƒΠ»Π°Ρ‚ΠΎΡ€ΡŠΡ‚, Ρ€Π°Π·Π±ΠΈΡ€Π° сС, ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠΌΠ° delegate_to Π•Π΄ΠΈΠ½ ΠΈ ΡΡŠΡ‰).

ΠžΡ‚Π΄Π΅Π»Π½ΠΎ искам Π΄Π° ΠΊΠ°ΠΆΠ° няколко Π΄ΡƒΠΌΠΈ Π·Π° ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈΡ‚Π΅ Ρ€ΠΎΠ»ΠΈ. ΠŸΡ€Π΅Π΄ΠΈ Π΄Π° сС появят ΠΊΠΎΠ»Π΅ΠΊΡ†ΠΈΠΈ, имашС идСя, Ρ‡Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ унивСрсални Ρ€ΠΎΠ»ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ ansible-galaxy install ΠΈ ΠΎΡ‚ΠΈΠ΄Π΅. Π Π°Π±ΠΎΡ‚ΠΈ Π½Π° всички ОБ ΠΎΡ‚ всички Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΈ във всички ситуации. Π’Π°ΠΊΠ° Ρ‡Π΅, ΠΌΠΎΠ΅Ρ‚ΠΎ ΠΌΠ½Π΅Π½ΠΈΠ΅: Π½Π΅ Ρ€Π°Π±ΠΎΡ‚ΠΈ. Всяка роля с маса include_vars, ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Ρ‰ 100500 1 случая, Π΅ ΠΎΠ±Ρ€Π΅Ρ‡Π΅Π½ Π½Π° Π±Π΅Π·Π΄Π½Π° ΠΎΡ‚ ъглови Π³Ρ€Π΅ΡˆΠΊΠΈ Π² случаитС. Π’Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ ΠΏΠΎΠΊΡ€ΠΈΡ‚ΠΈ с масивно тСстванС, Π½ΠΎ ΠΊΠ°ΠΊΡ‚ΠΎ ΠΏΡ€ΠΈ всяко тСстванС, ΠΈΠ»ΠΈ ΠΈΠΌΠ°Ρ‚Π΅ Π΄Π΅ΠΊΠ°Ρ€Ρ‚ΠΎΠ²ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π½Π° Π²Ρ…ΠΎΠ΄Π½ΠΈ стойности ΠΈ ΠΎΠ±Ρ‰Π° функция, ΠΈΠ»ΠΈ ΠΈΠΌΠ°Ρ‚Π΅ β€žΠΏΠΎΠΊΡ€ΠΈΡ‚ΠΈ ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»Π½ΠΈ ΡΡ†Π΅Π½Π°Ρ€ΠΈΠΈβ€œ. ΠœΠΎΠ΅Ρ‚ΠΎ ΠΌΠ½Π΅Π½ΠΈΠ΅ Π΅, Ρ‡Π΅ Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎ-Π΄ΠΎΠ±Ρ€Π΅ ролята Π΄Π° Π΅ Π»ΠΈΠ½Π΅ΠΉΠ½Π° (Ρ†ΠΈΠΊΠ»ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½Π° слоТност XNUMX).

ΠšΠΎΠ»ΠΊΠΎΡ‚ΠΎ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ Π°ΠΊΠΎ (ΠΈΠ·Ρ€ΠΈΡ‡Π½ΠΈ ΠΈΠ»ΠΈ Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΈ - във Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° when ΠΈΠ»ΠΈ Ρ„ΠΎΡ€ΠΌΠ° include_vars ΠΏΠΎ Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ), Ρ‚ΠΎΠ»ΠΊΠΎΠ²Π° ΠΏΠΎ-Π΄ΠΎΠ±Ρ€Π° Π΅ ролята. Понякога трябва Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ ΠΊΠ»ΠΎΠ½ΠΎΠ²Π΅, Π½ΠΎ, повтарям, ΠΊΠΎΠ»ΠΊΠΎΡ‚ΠΎ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ са, Ρ‚ΠΎΠ»ΠΊΠΎΠ²Π° ΠΏΠΎ-Π΄ΠΎΠ±Ρ€Π΅. Π’Π°ΠΊΠ° Ρ‡Π΅ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° ΠΊΠ°Ρ‚ΠΎ Π΄ΠΎΠ±Ρ€Π° роля с galaxy (Ρ€Π°Π±ΠΎΡ‚ΠΈ!) с ΠΊΡƒΠΏ when ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ Π·Π° ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°Π½Π΅ ΠΎΡ‚ β€žΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π°Ρ‚Π°β€œ роля ΠΎΡ‚ ΠΏΠ΅Ρ‚ Π·Π°Π΄Π°Ρ‡ΠΈ. ΠœΠΎΠΌΠ΅Π½Ρ‚ΡŠΡ‚, Π² ΠΊΠΎΠΉΡ‚ΠΎ ролята с galaxy Π΅ ΠΏΠΎ-Π΄ΠΎΠ±Ρ€Π°, Π΅ ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π·Π°ΠΏΠΎΡ‡Π½Π΅Ρˆ Π΄Π° пишСш Π½Π΅Ρ‰ΠΎ. ΠœΠΎΠΌΠ΅Π½Ρ‚ΡŠΡ‚, Π² ΠΊΠΎΠΉΡ‚ΠΎ става ΠΏΠΎ-лошо, Π΅ ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π½Π΅Ρ‰ΠΎ сС счупи ΠΈ ΠΈΠΌΠ°Ρ‚Π΅ съмнСниС, Ρ‡Π΅ Π΅ Π·Π°Ρ€Π°Π΄ΠΈ β€žΡ€ΠΎΠ»ΡΡ‚Π° с Π³Π°Π»Π°ΠΊΡ‚ΠΈΠΊΠ°β€œ. ΠžΡ‚Π²Π°Ρ€ΡΡ‚Π΅ Π³ΠΎ ΠΈ ΠΈΠΌΠ° ΠΏΠ΅Ρ‚ Π²ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ, осСм листа със Π·Π°Π΄Π°Ρ‡ΠΈ ΠΈ стСк whenО... И трябва Π΄Π° Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ Ρ‚ΠΎΠ²Π°. ВмСсто 5 Π·Π°Π΄Π°Ρ‡ΠΈ, Π»ΠΈΠ½Π΅Π΅Π½ списък, Π² ΠΊΠΎΠΉΡ‚ΠΎ няма ΠΊΠ°ΠΊΠ²ΠΎ Π΄Π° сС счупи.

Π’ слСдващитС части

  • Малко Π·Π° ΠΈΠ½Π²Π΅Π½Ρ‚Π°Ρ€Π°, Π³Ρ€ΡƒΠΏΠΎΠ²ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ, плъгина host_group_vars, hostvars. Как Π΄Π° Π·Π°Π²ΡŠΡ€ΠΆΠ΅ΠΌ Π³ΠΎΡ€Π΄ΠΈΠ΅Π² възСл със спагСти. ΠžΠ±Ρ…Π²Π°Ρ‚ ΠΈ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π½ΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ, Ansible ΠΏΠ°ΠΌΠ΅Ρ‚ ΠΌΠΎΠ΄Π΅Π». β€žΠ˜ Ρ‚Π°ΠΊΠ°, къдС Π΄Π° ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°ΠΌΠ΅ потрСбитСлското ΠΈΠΌΠ΅ Π·Π° Π±Π°Π·Π°Ρ‚Π° Π΄Π°Π½Π½ΠΈ?β€œ
  • jinja: {{ jinja }} β€” nosql notype nosense ΠΌΠ΅ΠΊ пластСлин. Има Π³ΠΎ навсякъдС, Π΄ΠΎΡ€ΠΈ ΠΈ Ρ‚Π°ΠΌ, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ Π½Π΅ Π³ΠΎ ΠΎΡ‡Π°ΠΊΠ²Π°Ρ‚Π΅. Малко Π·Π° !!unsafe ΠΈ вкусСн ямл.

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: www.habr.com

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€