Skip to main content

Ansible. Roles

Ansible Ansible

Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ слишком большиС ΠΏΠ»Π΅ΠΉΠ±ΡƒΠΊΠΈ Π² Ansible, ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½Π° нСсколько ΠΌΠ°Π»Π΅Π½ΡŒΠΊΠΈΡ…, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρƒ include, которая позволяСт ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ„Π°ΠΉΠ»Ρ‹ Π² основной ΠΏΠ»Π΅ΠΉΠ±ΡƒΠΊ. ΠŸΠ»Π΅ΠΉΠ±ΡƒΠΊΠΈ Π² Ansible ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ дСлятся Π½Π° 4 класса:

  • Packages
  • Modules
  • Classes
  • Functions

Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ структуру ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ ΠΏΠ»Π΅ΠΉΠ±ΡƒΠΊΠ°, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ для Π·Π°Π΄Π°Ρ‡ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ ΠΈΡ… Π² основном ΠΏΠ»Π΅ΠΉΠ±ΡƒΠΊΠ΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ² vars_files ΠΈ include. НапримСр, для Π·Π°Π΄Π°Ρ‡ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ tasks.yml ΠΈ vars.yml со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ содСрТимым:

vars.yml
http_port: 8081
snmp_port: 160-161
tasks.yml
- firewalld:
port: '{{ http_port }}/tcp'

Π—Π°Ρ‚Π΅ΠΌ ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π² основном ΠΏΠ»Π΅ΠΉΠ±ΡƒΠΊΠ΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

vars_files:
- vars.yml

tasks:
- include: tasks.yml

Π’ Ansible Galaxy собрано мноТСство Ρ€ΠΎΠ»Π΅ΠΉ ΠΈ тасков для Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡. Π˜Ρ… ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для общСния с сообщСством ΠΈ использования best practices. ΠŸΡ€ΠΈ создании собствСнной Ρ€ΠΎΠ»ΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ ansible-galaxy init для создания структуры ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ² с Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ для Π·Π°Π΄Π°Ρ‡, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈ Π΄Ρ€. НапримСр, ΠΊΠΎΠΌΠ°Π½Π΄Π° ansible-galaxy init mysql-role создаст ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ структуру ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ² для Ρ€ΠΎΠ»ΠΈ:

mysql-role
README.md
templates
tasks
handlers
vars
defaults
meta

Если Ρ€ΠΎΠ»Π΅ΠΉ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ Π½Π΅Ρ‚, Ansible ΠΈΡ‰Π΅Ρ‚ ΠΈΡ… ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π² /etc/ansible/roles.