ΠΡΠΏΠΏΠ΅Ρ ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌ Π·Π° ΡΠΏΡΠ°Π²ΡΠ°ΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠΎΠΌ. ΠΠΎΡΠΈΡΡΠΈ ΡΠ΅ Π·Π° Π΄ΠΎΠ²ΠΎΡΠ΅ΡΠ΅ Π΄ΠΎΠΌΠ°ΡΠΈΠ½Π° Ρ ΠΆΠ΅ΡΠ΅Π½ΠΎ ΡΡΠ°ΡΠ΅ ΠΈ ΠΎΠ΄ΡΠΆΠ°Π²Π°ΡΠ΅ ΠΎΠ²ΠΎΠ³ ΡΡΠ°ΡΠ°.
Π‘Π° ΠΡΠΏΠΏΠ΅Ρ-ΠΎΠΌ ΡΠ°Π΄ΠΈΠΌ Π²ΠΈΡΠ΅ ΠΎΠ΄ ΠΏΠ΅Ρ Π³ΠΎΠ΄ΠΈΠ½Π°. ΠΠ²Π°Ρ ΡΠ΅ΠΊΡΡ ΡΠ΅ Ρ ΡΡΡΡΠΈΠ½ΠΈ ΠΏΡΠ΅Π²Π΅Π΄Π΅Π½Π° ΠΈ ΠΏΡΠ΅ΡΡΠ΅ΡΠ΅Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡΠ° ΠΊΡΡΡΠ½ΠΈΡ ΡΠ°ΡΠ°ΠΊΠ° ΠΈΠ· Π·Π²Π°Π½ΠΈΡΠ½Π΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ΅, ΠΊΠΎΡΠ° ΡΠ΅ ΠΏΠΎΡΠ΅ΡΠ½ΠΈΡΠΈΠΌΠ° ΠΎΠΌΠΎΠ³ΡΡΠΈΡΠΈ Π΄Π° Π±ΡΠ·ΠΎ ΡΡ Π²Π°ΡΠ΅ ΡΡΡΡΠΈΠ½Ρ ΠΡΠΏΠΏΠ΅Ρ-Π°.
ΠΡΠ½ΠΎΠ²Π½Π΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡΠ΅
ΠΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΈ ΡΠΈΡΡΠ΅ΠΌ ΠΡΠΏΠΏΠ΅Ρ-Π° ΡΠ΅ ΠΊΠ»ΠΈΡΠ΅Π½Ρ-ΡΠ΅ΡΠ²Π΅Ρ, ΠΈΠ°ΠΊΠΎ ΡΠ°ΠΊΠΎΡΠ΅ ΠΏΠΎΠ΄ΡΠΆΠ°Π²Π° ΡΠ°Π΄ Π±Π΅Π· ΡΠ΅ΡΠ²Π΅ΡΠ° ΡΠ° ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΎΠΌ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡΡ.
ΠΠΎΡΠΈΡΡΠΈ ΡΠ΅ ΠΌΠΎΠ΄Π΅Π» ΡΠ°Π΄Π° ΠΏΠΎΠ²Π»Π°ΡΠ΅ΡΠ°: ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π½ΠΎ, ΡΠ΅Π΄Π½ΠΎΠΌ Π½Π° ΡΠ²Π°ΠΊΠΈΡ ΠΏΠΎΠ»Π° ΡΠ°ΡΠ°, ΠΊΠ»ΠΈΡΠ΅Π½ΡΠΈ ΠΊΠΎΠ½ΡΠ°ΠΊΡΠΈΡΠ°ΡΡ ΡΠ΅ΡΠ²Π΅Ρ ΡΠ°Π΄ΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ΅ ΠΈ ΠΏΡΠΈΠΌΠ΅ΡΡΡΡ ΡΠ΅. ΠΠΊΠΎ ΡΡΠ΅ ΡΠ°Π΄ΠΈΠ»ΠΈ ΡΠ° ΠΠ½ΡΠΈΠ±Π»Π΅-ΠΎΠΌ, ΠΎΠ½Π΄Π° ΠΎΠ½ΠΈ ΠΊΠΎΡΠΈΡΡΠ΅ Π΄ΡΡΠ³Π°ΡΠΈΡΠΈ ΠΏΡΡΡ ΠΌΠΎΠ΄Π΅Π»: Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡ ΠΏΠΎΠΊΡΠ΅ΡΠ΅ ΠΏΡΠΎΡΠ΅Ρ ΠΏΡΠΈΠΌΠ΅Π½Π΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ΅, ΡΠ°ΠΌΠΈ ΠΊΠ»ΠΈΡΠ΅Π½ΡΠΈ Π½Π΅ΡΠ΅ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΠΈ Π½ΠΈΡΡΠ°.
Π’ΠΎΠΊΠΎΠΌ ΠΌΡΠ΅ΠΆΠ½Π΅ ΠΊΠΎΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ ΡΠ΅ Π΄Π²ΠΎΡΠΌΠ΅ΡΠ½Π° Π’ΠΠ‘ Π΅Π½ΠΊΡΠΈΠΏΡΠΈΡΠ°: ΡΠ΅ΡΠ²Π΅Ρ ΠΈ ΠΊΠ»ΠΈΡΠ΅Π½Ρ ΠΈΠΌΠ°ΡΡ ΡΠ²ΠΎΡΠ΅ ΠΏΡΠΈΠ²Π°ΡΠ½Π΅ ΠΊΡΡΡΠ΅Π²Π΅ ΠΈ ΠΎΠ΄Π³ΠΎΠ²Π°ΡΠ°ΡΡΡΠ΅ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠ΅. ΠΠ±ΠΈΡΠ½ΠΎ ΡΠ΅ΡΠ²Π΅Ρ ΠΈΠ·Π΄Π°ΡΠ΅ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠ΅ Π·Π° ΠΊΠ»ΠΈΡΠ΅Π½ΡΠ΅, Π°Π»ΠΈ Ρ ΠΏΡΠΈΠ½ΡΠΈΠΏΡ ΡΠ΅ ΠΌΠΎΠ³ΡΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈΡΠΈ Π΅ΠΊΡΡΠ΅ΡΠ½ΠΈ Π¦Π.
Π£ΠΏΠΎΠ·Π½Π°Π²Π°ΡΠ΅ ΡΠ° ΠΌΠ°Π½ΠΈΡΠ΅ΡΡΠΈΠΌΠ°
Π£ Π»ΡΡΠΊΠ°ΡΡΠΊΠΎΡ ΡΠ΅ΡΠΌΠΈΠ½ΠΎΠ»ΠΎΠ³ΠΈΡΠΈ Π½Π° ΡΠ΅ΡΠ²Π΅Ρ Π·Π° Π»ΡΡΠΊΠ΅ ΠΏΠΎΠ²Π΅Π·Π°ΡΠΈ ΡΠ²ΠΎΡΠΎΠ²ΠΈ (ΡΠ²ΠΎΡΠΎΠ²ΠΈ). ΠΠ°ΠΏΠΈΡΠ°Π½Π° ΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ° Π·Π° ΡΠ²ΠΎΡΠΎΠ²Π΅ Ρ ΠΌΠ°Π½ΠΈΡΠ΅ΡΡΠΈΠΌΠ° Ρ ΠΏΠΎΡΠ΅Π±Π½ΠΎΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΡΠΊΠΎΠΌ ΡΠ΅Π·ΠΈΠΊΡ β ΠΡΠΏΠΏΠ΅Ρ ΠΠ‘Π.
ΠΡΠΏΠΏΠ΅Ρ ΠΠ‘Π ΡΠ΅ Π΄Π΅ΠΊΠ»Π°ΡΠ°ΡΠΈΠ²Π½ΠΈ ΡΠ΅Π·ΠΈΠΊ. ΠΠΏΠΈΡΡΡΠ΅ ΠΆΠ΅ΡΠ΅Π½ΠΎ ΡΡΠ°ΡΠ΅ ΡΠ²ΠΎΡΠ° Ρ ΠΎΠ±Π»ΠΈΠΊΡ Π΄Π΅ΠΊΠ»Π°ΡΠ°ΡΠΈΡΠ° ΠΏΠΎΡΠ΅Π΄ΠΈΠ½Π°ΡΠ½ΠΈΡ ΡΠ΅ΡΡΡΡΠ°, Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ:
- ΠΠ°ΡΠΎΡΠ΅ΠΊΠ° ΠΏΠΎΡΡΠΎΡΠΈ ΠΈ ΠΈΠΌΠ° ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ°Π½ ΡΠ°Π΄ΡΠΆΠ°Ρ.
- ΠΠ°ΠΊΠ΅Ρ ΡΠ΅ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½.
- Π‘Π»ΡΠΆΠ±Π° ΡΠ΅ ΠΏΠΎΡΠ΅Π»Π°.
Π Π΅ΡΡΡΡΠΈ ΠΌΠΎΠ³Ρ Π±ΠΈΡΠΈ ΠΌΠ΅ΡΡΡΠΎΠ±Π½ΠΎ ΠΏΠΎΠ²Π΅Π·Π°Π½ΠΈ:
- ΠΠΎΡΡΠΎΡΠ΅ Π·Π°Π²ΠΈΡΠ½ΠΎΡΡΠΈ, ΠΎΠ½Π΅ ΡΡΠΈΡΡ Π½Π° ΡΠ΅Π΄ΠΎΡΠ»Π΅Π΄ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ° ΡΠ΅ΡΡΡΡΠ°.
ΠΠ° ΠΏΡΠΈΠΌΠ΅Ρ, βΠΏΡΠ²ΠΎ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΡΠ΅ ΠΏΠ°ΠΊΠ΅Ρ, Π·Π°ΡΠΈΠΌ ΡΡΠ΅Π΄ΠΈΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Ρ Π΄Π°ΡΠΎΡΠ΅ΠΊΡ, Π° Π·Π°ΡΠΈΠΌ ΠΏΠΎΠΊΡΠ΅Π½ΠΈΡΠ΅ ΡΡΠ»ΡΠ³Ρ.β - ΠΠΎΡΡΠΎΡΠ΅ ΠΎΠ±Π°Π²Π΅ΡΡΠ΅ΡΠ° - Π°ΠΊΠΎ ΡΠ΅ ΡΠ΅ΡΡΡΡ ΠΏΡΠΎΠΌΠ΅Π½ΠΈΠΎ, ΠΎΠ½ ΡΠ°ΡΠ΅ ΠΎΠ±Π°Π²Π΅ΡΡΠ΅ΡΠ° ΡΠ΅ΡΡΡΡΠΈΠΌΠ° ΠΊΠΎΡΠΈ ΡΡ Π½Π° ΡΠ΅Π³Π° ΠΏΡΠ΅ΡΠΏΠ»Π°ΡΠ΅Π½ΠΈ.
ΠΠ° ΠΏΡΠΈΠΌΠ΅Ρ, Π°ΠΊΠΎ ΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π° Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° ΠΏΡΠΎΠΌΠ΅Π½ΠΈ, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π°ΡΡΠΎΠΌΠ°ΡΡΠΊΠΈ ΠΏΠΎΠ½ΠΎΠ²ΠΎ ΠΏΠΎΠΊΡΠ΅Π½ΡΡΠΈ ΡΡΠ»ΡΠ³Ρ.
ΠΠΎΡΠ΅Π΄ ΡΠΎΠ³Π°, ΠΡΠΏΠΏΠ΅Ρ ΠΠ‘Π ΠΈΠΌΠ° ΡΡΠ½ΠΊΡΠΈΡΠ΅ ΠΈ Π²Π°ΡΠΈΡΠ°Π±Π»Π΅, ΠΊΠ°ΠΎ ΠΈ ΡΡΠ»ΠΎΠ²Π½Π΅ ΠΈΠ·ΡΠ°Π²Π΅ ΠΈ ΡΠ΅Π»Π΅ΠΊΡΠΎΡΠ΅. ΠΠΎΠ΄ΡΠΆΠ°Π½ΠΈ ΡΡ ΠΈ ΡΠ°Π·Π»ΠΈΡΠΈΡΠΈ ΡΠ°Π±Π»ΠΎΠ½ΡΠΊΠΈ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠΈ - ΠΠΠ ΠΈ ΠΠ Π.
ΠΡΠΏΠΏΠ΅Ρ ΡΠ΅ Π½Π°ΠΏΠΈΡΠ°Π½ Ρ Π ΡΠ±ΠΈ-Ρ, ΡΠ°ΠΊΠΎ Π΄Π° ΡΡ ΠΌΠ½ΠΎΠ³ΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈ ΠΈ ΡΠ΅ΡΠΌΠΈΠ½ΠΈ ΠΏΡΠ΅ΡΠ·Π΅ΡΠΈ ΠΎΠ΄Π°ΡΠ»Π΅. Π ΡΠ±ΠΈ Π²Π°ΠΌ ΠΎΠΌΠΎΠ³ΡΡΠ°Π²Π° Π΄Π° ΠΏΡΠΎΡΠΈΡΠΈΡΠ΅ ΠΡΠΏΠΏΠ΅Ρ - Π΄ΠΎΠ΄Π°ΡΡΠ΅ ΡΠ»ΠΎΠΆΠ΅Π½Ρ Π»ΠΎΠ³ΠΈΠΊΡ, Π½ΠΎΠ²Π΅ Π²ΡΡΡΠ΅ ΡΠ΅ΡΡΡΡΠ°, ΡΡΠ½ΠΊΡΠΈΡΠ΅.
ΠΠΎΠΊ ΡΠ΅ ΠΡΠΏΠΏΠ΅Ρ ΠΏΠΎΠΊΡΠ΅Π½ΡΡ, ΠΌΠ°Π½ΠΈΡΠ΅ΡΡΠΈ Π·Π° ΡΠ²Π°ΠΊΠΈ ΠΎΠ΄ΡΠ΅ΡΠ΅Π½ΠΈ ΡΠ²ΠΎΡ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΡ ΡΠ΅ ΠΊΠΎΠΌΠΏΠ°ΡΠ»ΠΈΡΠ°ΡΡ Ρ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠΌ. ΠΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠΌ ΡΠ΅ Π»ΠΈΡΡΠ° ΡΠ΅ΡΡΡΡΠ° ΠΈ ΡΠΈΡ ΠΎΠ²ΠΈΡ ΠΎΠ΄Π½ΠΎΡΠ° Π½Π°ΠΊΠΎΠ½ ΠΈΠ·ΡΠ°ΡΡΠ½Π°Π²Π°ΡΠ° Π²ΡΠ΅Π΄Π½ΠΎΡΡΠΈ ΡΡΠ½ΠΊΡΠΈΡΠ°, ΠΏΡΠΎΠΌΠ΅Π½ΡΠΈΠ²ΠΈΡ ΠΈ ΠΏΡΠΎΡΠΈΡΠ΅ΡΠ° ΡΡΠ»ΠΎΠ²Π½ΠΈΡ ΠΈΡΠΊΠ°Π·Π°.
Π‘ΠΈΠ½ΡΠ°ΠΊΡΠ° ΠΈ ΡΡΠΈΠ» ΠΊΠΎΠ΄Π°
ΠΠ²ΠΎ Π΄Π΅Π»ΠΎΠ²Π° Π·Π²Π°Π½ΠΈΡΠ½Π΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ΅ ΠΊΠΎΡΠΈ ΡΠ΅ Π²Π°ΠΌ ΠΏΠΎΠΌΠΎΡΠΈ Π΄Π° ΡΠ°Π·ΡΠΌΠ΅ΡΠ΅ ΡΠΈΠ½ΡΠ°ΠΊΡΡ Π°ΠΊΠΎ Π½Π°Π²Π΅Π΄Π΅Π½ΠΈ ΠΏΡΠΈΠΌΠ΅ΡΠΈ Π½ΠΈΡΡ Π΄ΠΎΠ²ΠΎΡΠ½ΠΈ:
Π‘ΠΈΠ½ΡΠ°ΠΊΡΠ° ΡΠ°Π·Π»ΠΈΡΠΈΡΠΈΡ ΡΠ΅Π·ΠΈΡΠΊΠΈΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡΠ°. Π‘ΠΈΠ½ΡΠ°ΠΊΡΠ° ΡΠ΅ΡΡΡΡΠ°. Π‘ΠΈΠ½ΡΠ°ΠΊΡΠ° Π·Π° ΠΎΠΏΠΈΡΠΈΠ²Π°ΡΠ΅ ΡΠ²ΠΎΡΠΎΠ²Π°.
ΠΠ²ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΠΊΠ°ΠΊΠΎ ΠΌΠ°Π½ΠΈΡΠ΅ΡΡ ΠΈΠ·Π³Π»Π΅Π΄Π°:
# ΠΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΏΠΈΡΡΡΡΡ, ΠΊΠ°ΠΊ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Π³Π΄Π΅, ΠΏΠΎΡΠ»Π΅ ΡΠ΅ΡΡΡΠΊΠΈ.
#
# ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Π½ΠΎΠ΄Ρ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Ρ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ³ΠΎ ΡΠ»ΠΎΠ²Π° node,
# Π·Π° ΠΊΠΎΡΠΎΡΡΠΌ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΠ΅Π»Π΅ΠΊΡΠΎΡ Π½ΠΎΠ΄Ρ β Ρ
ΠΎΡΡΠ½Π΅ΠΉΠΌ (Ρ Π΄ΠΎΠΌΠ΅Π½ΠΎΠΌ ΠΈΠ»ΠΈ Π±Π΅Π·)
# ΠΈΠ»ΠΈ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ Ρ
ΠΎΡΡΠ½Π΅ΠΉΠΌΠΎΠ², ΠΈΠ»ΠΈ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ default.
#
# ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ Π² ΡΠΈΠ³ΡΡΠ½ΡΡ
ΡΠΊΠΎΠ±ΠΊΠ°Ρ
ΠΎΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π½ΠΎΠ΄Ρ.
#
# ΠΠ΄Π½Π° ΠΈ ΡΠ° ΠΆΠ΅ Π½ΠΎΠ΄Π° ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΏΠ°ΡΡΡ ΠΏΠΎΠ΄ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ΅Π»Π΅ΠΊΡΠΎΡΠΎΠ². ΠΡΠΎ ΠΏΡΠΈΠΎΡΠΈΡΠ΅Ρ
# ΡΠ΅Π»Π΅ΠΊΡΠΎΡΠΎΠ² Π½Π°ΠΏΠΈΡΠ°Π½ΠΎ Π² ΡΡΠ°ΡΡΠ΅ ΠΏΡΠΎ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ Π½ΠΎΠ΄.
node 'hostname', 'f.q.d.n', /regexp/ {
# ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΠΏΠΎ ΡΡΡΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ΠΌ ΡΠ΅ΡΡΡΡΠΎΠ² ΠΈ ΠΈΡ
ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ².
#
# Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ΅ΡΡΡΡΠ° Π΅ΡΡΡ ΡΠΈΠΏ ΠΈ Π½Π°Π·Π²Π°Π½ΠΈΠ΅.
#
# ΠΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅: Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π΄Π²ΡΡ
ΡΠ΅ΡΡΡΡΠΎΠ² ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° Ρ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠΌΠΈ Π½Π°Π·Π²Π°Π½ΠΈΡΠΌΠΈ!
#
# ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠ΅ΡΡΡΡΠ° Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Ρ Π΅Π³ΠΎ ΡΠΈΠΏΠ°. Π’ΠΈΠΏ ΠΏΠΈΡΠ΅ΡΡΡ Π² Π½ΠΈΠΆΠ½Π΅ΠΌ ΡΠ΅Π³ΠΈΡΡΡΠ΅.
# ΠΡΠΎ ΡΠ°Π·Π½ΡΠ΅ ΡΠΈΠΏΡ ΡΠ΅ΡΡΡΡΠΎΠ² Π½Π°ΠΏΠΈΡΠ°Π½ΠΎ Π½ΠΈΠΆΠ΅.
#
# ΠΠΎΡΠ»Π΅ ΡΠΈΠΏΠ° Π² ΡΠΈΠ³ΡΡΠ½ΡΡ
ΡΠΊΠΎΠ±ΠΊΠ°Ρ
ΠΏΠΈΡΠ΅ΡΡΡ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΡΠ΅ΡΡΡΡΠ°, ΠΏΠΎΡΠΎΠΌ Π΄Π²ΠΎΠ΅ΡΠΎΡΠΈΠ΅,
# Π΄Π°Π»ΡΡΠ΅ ΠΈΠ΄ΡΡ ΠΎΠΏΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠ΅ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΡΠ΅ΡΡΡΡΠ° ΠΈ ΠΈΡ
Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ.
# ΠΠ½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΡΠΊΠ°Π·ΡΠ²Π°ΡΡΡΡ ΡΠ΅ΡΠ΅Π· Ρ.Π½. hash rocket (=>).
resource { 'title':
param1 => value1,
param2 => value2,
param3 => value3,
}
}
Π£Π²Π»Π°ΡΠ΅ΡΠ΅ ΠΈ ΠΏΡΠ΅Π»ΠΎΠΌΠΈ Π»ΠΈΠ½ΠΈΡΠ° Π½ΠΈΡΡ ΠΎΠ±Π°Π²Π΅Π·Π½ΠΈ Π΄Π΅ΠΎ ΠΌΠ°Π½ΠΈΡΠ΅ΡΡΠ°, Π°Π»ΠΈ ΠΏΠΎΡΡΠΎΡΠΈ ΠΏΡΠ΅ΠΏΠΎΡΡΠΊΠ°
- Π£Π²Π»Π°ΡΠ΅ΡΠ° ΡΠ° Π΄Π²Π° ΡΠ°Π·ΠΌΠ°ΠΊΠ°, ΡΠ°Π±ΡΠ»Π°ΡΠΎΡΠΈ ΡΠ΅ Π½Π΅ ΠΊΠΎΡΠΈΡΡΠ΅.
- ΠΠΎΠ²ΡΡΠ°Π²Π΅ Π·Π°Π³ΡΠ°Π΄Π΅ ΡΡ ΡΠ°Π·Π΄Π²ΠΎΡΠ΅Π½Π΅ ΡΠ°Π·ΠΌΠ°ΠΊΠΎΠΌ;
- ΠΠ°ΡΠ΅Π·ΠΈ ΠΈΠ·Π° ΡΠ²Π°ΠΊΠΎΠ³ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°, ΡΠΊΡΡΡΡΡΡΡΠΈ ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡΠΈ. Π‘Π²Π°ΠΊΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΠ°Ρ ΡΠ΅ Ρ ΠΏΠΎΡΠ΅Π±Π½ΠΎΠΌ ΡΠ΅Π΄Ρ. ΠΠ·ΡΠ·Π΅ΡΠ°ΠΊ ΡΠ΅ Π½Π°ΠΏΡΠ°Π²ΡΠ΅Π½ Π·Π° ΡΠ»ΡΡΠ°Ρ Π±Π΅Π· ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΠ°ΡΠ° ΠΈ ΡΠ΅Π΄Π½ΠΎΠ³ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°: ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΈΡΠ°ΡΠΈ Ρ ΡΠ΅Π΄Π½ΠΎΠΌ ΡΠ΅Π΄Ρ ΠΈ Π±Π΅Π· Π·Π°ΡΠ΅Π·Π° (ΡΡ.
resource { 'title': }
ΠΈresource { 'title': param => value }
). - Π‘ΡΡΠ΅Π»ΠΈΡΠ΅ Π½Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΠΌΠ° ΡΡΠ΅Π±Π° Π΄Π° Π±ΡΠ΄Ρ Π½Π° ΠΈΡΡΠΎΠΌ Π½ΠΈΠ²ΠΎΡ.
- ΠΡΠΏΡΠ΅Π΄ ΡΠΈΡ ΡΡ ΠΈΡΠΏΠΈΡΠ°Π½Π΅ ΡΡΡΠ΅Π»ΠΈΡΠ΅ ΠΎΠ΄Π½ΠΎΡΠ° ΡΠ΅ΡΡΡΡΠ°.
ΠΠΎΠΊΠ°ΡΠΈΡΠ° Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° Π½Π° ΠΏΠ°ΠΏΠΏΠ΅ΡΡΠ΅ΡΠ²Π΅ΡΡ
ΠΠ° Π΄Π°ΡΠ΅ ΠΎΠ±ΡΠ°ΡΡΠ΅ΡΠ΅, ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΏΡ βΠΊΠΎΡΠ΅Π½ΡΠΊΠΎΠ³ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠΌΠ°β. ΠΡΠ½ΠΎΠ²Π½ΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠΌ ΡΠ΅ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠΌ ΠΊΠΎΡΠΈ ΡΠ°Π΄ΡΠΆΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡ Π»ΡΡΠΊΠ΅ Π·Π° ΠΎΠ΄ΡΠ΅ΡΠ΅Π½ΠΈ ΡΠ²ΠΎΡ.
ΠΡΠ½ΠΎΠ²Π½ΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠΌ Π²Π°ΡΠΈΡΠ° Ρ Π·Π°Π²ΠΈΡΠ½ΠΎΡΡΠΈ ΠΎΠ΄ Π²Π΅ΡΠ·ΠΈΡΠ΅ ΠΡΠΏΠΏΠ΅Ρ-Π° ΠΈ ΠΎΠΊΡΡΠΆΠ΅ΡΠ° ΠΊΠΎΡΠ΅ ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ. ΠΠΊΡΡΠΆΠ΅ΡΠ΅ ΡΡ Π½Π΅Π·Π°Π²ΠΈΡΠ½ΠΈ ΡΠΊΡΠΏΠΎΠ²ΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ° ΠΊΠΎΡΠΈ ΡΠ΅ ΡΡΠ²Π°ΡΡ Ρ Π·Π°ΡΠ΅Π±Π½ΠΈΠΌ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠΌΠΈΠΌΠ°. ΠΠ±ΠΈΡΠ½ΠΎ ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ Ρ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡΠΈ ΡΠ° Π³ΠΈΡ-ΠΎΠΌ, Ρ ΠΊΠΎΠΌ ΡΠ»ΡΡΠ°ΡΡ ΡΠ΅ ΠΎΠΊΡΡΠΆΠ΅ΡΠ° ΠΊΡΠ΅ΠΈΡΠ°ΡΡ ΠΈΠ· Π³ΠΈΡ Π³ΡΠ°Π½Π°. Π‘Ρ ΠΎΠ΄Π½ΠΎ ΡΠΎΠΌΠ΅, ΡΠ²Π°ΠΊΠΈ ΡΠ²ΠΎΡ ΡΠ΅ Π½Π°Π»Π°Π·ΠΈ Ρ ΡΠ΅Π΄Π½ΠΎΠΌ ΠΈΠ»ΠΈ Π΄ΡΡΠ³ΠΎΠΌ ΠΎΠΊΡΡΠΆΠ΅ΡΡ. ΠΠ²ΠΎ ΡΠ΅ ΠΌΠΎΠΆΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°ΡΠΈ Π½Π° ΡΠ°ΠΌΠΎΠΌ ΡΠ²ΠΎΡΡ ΠΈΠ»ΠΈ Ρ ΠΠΠ¦-Ρ, ΠΎ ΡΠ΅ΠΌΡ ΡΡ Π³ΠΎΠ²ΠΎΡΠΈΡΠΈ Ρ ΡΠ»Π΅Π΄Π΅ΡΠ΅ΠΌ ΡΠ»Π°Π½ΠΊΡ.
- Π£ ΡΡΠ΅ΡΠΎΡ Π²Π΅ΡΠ·ΠΈΡΠΈ (βΡΡΠ°ΡΠ° Π»ΡΡΠΊΠ°β) ΠΎΡΠ½ΠΎΠ²Π½ΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠΌ ΡΠ΅ Π±ΠΈΠΎ
/etc/puppet
. Π£ΠΏΠΎΡΡΠ΅Π±Π° ΠΎΠΊΡΡΠΆΠ΅ΡΠ° ΡΠ΅ ΠΎΠΏΡΠΈΠΎΠ½Π° - Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π΅ ΠΊΠΎΡΠΈΡΡΠΈΠΌΠΎ ΠΈΡ ΡΠ° ΡΡΠ°ΡΠΈΠΌ ΠΡΠΏΠΏΠ΅Ρ-ΠΎΠΌ. ΠΠΊΠΎ ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠ΅ ΠΎΠΊΡΡΠΆΠ΅ΡΠ°, ΠΎΠ±ΠΈΡΠ½ΠΎ ΡΠ΅ ΡΡΠ²Π°ΡΡ/etc/puppet/environments
, ΠΎΡΠ½ΠΎΠ²Π½ΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠΌ ΡΠ΅ Π±ΠΈΡΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠΌ ΠΎΠΊΡΡΠΆΠ΅ΡΠ°. ΠΠΊΠΎ ΡΠ΅ ΠΎΠΊΡΡΠΆΠ΅ΡΠ° Π½Π΅ ΠΊΠΎΡΠΈΡΡΠ΅, ΠΎΡΠ½ΠΎΠ²Π½ΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠΌ ΡΠ΅ Π±ΠΈΡΠΈ ΠΎΡΠ½ΠΎΠ²Π½ΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠΌ. - ΠΠΎΡΠ΅Π²ΡΠΈ ΠΎΠ΄ ΡΠ΅ΡΠ²ΡΡΠ΅ Π²Π΅ΡΠ·ΠΈΡΠ΅ (βΠ½ΠΎΠ²Π° Π»ΡΡΠΊΠ°β), ΡΠΏΠΎΡΡΠ΅Π±Π° ΠΎΠΊΡΡΠΆΠ΅ΡΠ° ΡΠ΅ ΠΏΠΎΡΡΠ°Π»Π° ΠΎΠ±Π°Π²Π΅Π·Π½Π°, Π° ΠΎΡΠ½ΠΎΠ²Π½ΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠΌ ΡΠ΅ ΠΏΡΠ΅ΠΌΠ΅ΡΡΠ΅Π½ Ρ
/etc/puppetlabs/code
. Π‘Ρ ΠΎΠ΄Π½ΠΎ ΡΠΎΠΌΠ΅, ΠΎΠΊΡΡΠΆΠ΅ΡΠ° ΡΠ΅ ΡΡΠ²Π°ΡΡ Ρ/etc/puppetlabs/code/environments
, ΠΎΡΠ½ΠΎΠ²Π½ΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠΌ ΡΠ΅ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠΌ ΠΎΠΊΡΡΠΆΠ΅ΡΠ°.
ΠΠΎΡΠ° ΠΏΠΎΡΡΠΎΡΠ°ΡΠΈ ΠΏΠΎΠ΄Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠΌ Ρ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠΌΡ manifests
, ΠΊΠΎΡΠΈ ΡΠ°Π΄ΡΠΆΠΈ ΡΠ΅Π΄Π°Π½ ΠΈΠ»ΠΈ Π²ΠΈΡΠ΅ ΠΌΠ°Π½ΠΈΡΠ΅ΡΡΠ° ΠΊΠΎΡΠΈ ΠΎΠΏΠΈΡΡΡΡ ΡΠ²ΠΎΡΠΎΠ²Π΅. ΠΠΎΡΠ΅Π΄ ΡΠΎΠ³Π°, ΡΡΠ΅Π±Π°Π»ΠΎ Π±ΠΈ Π΄Π° ΠΏΠΎΡΡΠΎΡΠΈ ΠΏΠΎΠ΄Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠΌ modules
, ΠΊΠΎΡΠΈ ΡΠ°Π΄ΡΠΆΠΈ ΠΌΠΎΠ΄ΡΠ»Π΅. Π Π΅ΡΠΈ ΡΡ Π²Π°ΠΌ ΠΊΠΎΡΠΈ ΡΡ ΠΌΠΎΠ΄ΡΠ»ΠΈ ΠΌΠ°Π»ΠΎ ΠΊΠ°ΡΠ½ΠΈΡΠ΅. ΠΠΎΡΠ΅Π΄ ΡΠΎΠ³Π°, ΡΡΠ°ΡΠΈ ΠΡΠΏΠΏΠ΅Ρ ΠΌΠΎΠΆΠ΅ ΠΈΠΌΠ°ΡΠΈ ΠΈ ΠΏΠΎΠ΄Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠΌ files
, ΠΊΠΎΡΠΈ ΡΠ°Π΄ΡΠΆΠΈ ΡΠ°Π·Π»ΠΈΡΠΈΡΠ΅ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅ ΠΊΠΎΡΠ΅ ΠΊΠΎΠΏΠΈΡΠ°ΠΌΠΎ Ρ ΡΠ²ΠΎΡΠΎΠ²Π΅. Π£ Π½ΠΎΠ²ΠΎΠΌ ΠΡΠΏΠΏΠ΅Ρ-Ρ, ΡΠ²Π΅ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅ ΡΡ ΡΠΌΠ΅ΡΡΠ΅Π½Π΅ Ρ ΠΌΠΎΠ΄ΡΠ»Π΅.
ΠΠ°ΡΠΎΡΠ΅ΠΊΠ΅ ΠΌΠ°Π½ΠΈΡΠ΅ΡΡΠ° ΠΈΠΌΠ°ΡΡ Π΅ΠΊΡΡΠ΅Π½Π·ΠΈΡΡ .pp
.
ΠΠ°Ρ Π±ΠΎΡΠ±Π΅Π½ΠΈΡ ΠΏΡΠΈΠΌΠ΅ΡΠ°
ΠΠΏΠΈΡ ΡΠ²ΠΎΡΠ° ΠΈ ΡΠ΅ΡΡΡΡΠ° Π½Π° ΡΠ΅ΠΌΡ
ΠΠ° ΡΠ²ΠΎΡΡ server1.testdomain
Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° ΠΌΠΎΡΠ° Π±ΠΈΡΠΈ ΠΊΡΠ΅ΠΈΡΠ°Π½Π° /etc/issue
ΡΠ° ΡΠ°Π΄ΡΠΆΠ°ΡΠ΅ΠΌ Debian GNU/Linux n l
. ΠΠ°ΡΠΎΡΠ΅ΠΊΠ° ΠΌΠΎΡΠ° Π±ΠΈΡΠΈ Π²Π»Π°ΡΠ½ΠΈΡΡΠ²ΠΎ ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊΠ° ΠΈ Π³ΡΡΠΏΠ΅ root
, ΠΏΡΠ°Π²Π° ΠΏΡΠΈΡΡΡΠΏΠ° ΠΌΠΎΡΠ°ΡΡ Π±ΠΈΡΠΈ 644
.
ΠΠΈΡΠ΅ΠΌΠΎ ΠΌΠ°Π½ΠΈΡΠ΅ΡΡ:
node 'server1.testdomain' { # Π±Π»ΠΎΠΊ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ, ΠΎΡΠ½ΠΎΡΡΡΠΈΠΉΡΡ ΠΊ Π½ΠΎΠ΄Π΅ server1.testdomain
file { '/etc/issue': # ΠΎΠΏΠΈΡΡΠ²Π°Π΅ΠΌ ΡΠ°ΠΉΠ» /etc/issue
ensure => present, # ΡΡΠΎΡ ΡΠ°ΠΉΠ» Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°ΡΡ
content => 'Debian GNU/Linux n l', # Ρ Π½Π΅Π³ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΡΠ°ΠΊΠΎΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅
owner => root, # ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ-Π²Π»Π°Π΄Π΅Π»Π΅Ρ
group => root, # Π³ΡΡΠΏΠΏΠ°-Π²Π»Π°Π΄Π΅Π»Π΅Ρ
mode => '0644', # ΠΏΡΠ°Π²Π° Π½Π° ΡΠ°ΠΉΠ». ΠΠ½ΠΈ Π·Π°Π΄Π°Π½Ρ Π² Π²ΠΈΠ΄Π΅ ΡΡΡΠΎΠΊΠΈ (Π² ΠΊΠ°Π²ΡΡΠΊΠ°Ρ
), ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΈΠ½Π°ΡΠ΅ ΡΠΈΡΠ»ΠΎ Ρ 0 Π² Π½Π°ΡΠ°Π»Π΅ Π±ΡΠ΄Π΅Ρ Π²ΠΎΡΠΏΡΠΈΠ½ΡΡΠΎ ΠΊΠ°ΠΊ Π·Π°ΠΏΠΈΡΠ°Π½Π½ΠΎΠ΅ Π² Π²ΠΎΡΡΠΌΠ΅ΡΠΈΡΠ½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅, ΠΈ Π²ΡΡ ΠΏΠΎΠΉΠ΄ΡΡ Π½Π΅ ΡΠ°ΠΊ, ΠΊΠ°ΠΊ Π·Π°Π΄ΡΠΌΠ°Π½ΠΎ
}
}
ΠΠ΄Π½ΠΎΡΠΈ ΠΈΠ·ΠΌΠ΅ΡΡ ΡΠ΅ΡΡΡΡΠ° Π½Π° ΡΠ²ΠΎΡΡ
ΠΠ° ΡΠ²ΠΎΡΡ server2.testdomain
Π½Π³ΠΈΠ½ΠΊ ΠΌΠΎΡΠ° Π±ΠΈΡΠΈ ΠΏΠΎΠΊΡΠ΅Π½ΡΡ ΠΈ ΡΠ°Π΄ΠΈΡΠΈ ΡΠ° ΠΏΡΠ΅ΡΡ
ΠΎΠ΄Π½ΠΎ ΠΏΡΠΈΠΏΡΠ΅ΠΌΡΠ΅Π½ΠΎΠΌ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠΎΠΌ.
Π₯Π°ΡΠ΄Π΅ Π΄Π° ΡΠ°Π·Π»ΠΎΠΆΠΈΠΌΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌ:
- ΠΠ°ΠΊΠ΅Ρ ΡΡΠ΅Π±Π° Π΄Π° ΡΠ΅ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°
nginx
. - ΠΠ΅ΠΎΠΏΡ ΠΎΠ΄Π½ΠΎ ΡΠ΅ Π΄Π° ΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π΅ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅ ΠΊΠΎΠΏΠΈΡΠ°ΡΡ ΡΠ° ΡΠ΅ΡΠ²Π΅ΡΠ°.
- Π£ΡΠ»ΡΠ³Π° ΡΡΠ΅Π±Π° Π΄Π° ΡΠ°Π΄ΠΈ
nginx
. - ΠΠΊΠΎ ΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ° Π°ΠΆΡΡΠΈΡΠ°, ΡΠ΅ΡΠ²ΠΈΡ ΡΠ΅ ΠΌΠΎΡΠ° ΠΏΠΎΠ½ΠΎΠ²ΠΎ ΠΏΠΎΠΊΡΠ΅Π½ΡΡΠΈ.
ΠΠΈΡΠ΅ΠΌΠΎ ΠΌΠ°Π½ΠΈΡΠ΅ΡΡ:
node 'server2.testdomain' { # Π±Π»ΠΎΠΊ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ, ΠΎΡΠ½ΠΎΡΡΡΠΈΠΉΡΡ ΠΊ Π½ΠΎΠ΄Π΅ server2.testdomain
package { 'nginx': # ΠΎΠΏΠΈΡΡΠ²Π°Π΅ΠΌ ΠΏΠ°ΠΊΠ΅Ρ nginx
ensure => installed, # ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½
}
# ΠΡΡΠΌΠ°Ρ ΡΡΡΠ΅Π»ΠΊΠ° (->) Π³ΠΎΠ²ΠΎΡΠΈΡ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ ΡΠ΅ΡΡΡΡ Π½ΠΈΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ΅Π½
# ΡΠΎΠ·Π΄Π°Π²Π°ΡΡΡΡ ΠΏΠΎΡΠ»Π΅ ΡΠ΅ΡΡΡΡΠ°, ΠΎΠΏΠΈΡΠ°Π½Π½ΠΎΠ³ΠΎ Π²ΡΡΠ΅.
# Π’Π°ΠΊΠΈΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΡΡΠ°Π½Π·ΠΈΡΠΈΠ²Π½Ρ.
-> file { '/etc/nginx': # ΠΎΠΏΠΈΡΡΠ²Π°Π΅ΠΌ ΡΠ°ΠΉΠ» /etc/nginx
ensure => directory, # ΡΡΠΎ Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ
source => 'puppet:///modules/example/nginx-conf', # Π΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ°ΡΡ Ρ ΠΏΠ°ΠΏΠΏΠ΅Ρ-ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΏΠΎ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡ Π°Π΄ΡΠ΅ΡΡ
recurse => true, # ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°ΠΉΠ»Ρ ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΠΎ
purge => true, # Π½ΡΠΆΠ½ΠΎ ΡΠ΄Π°Π»ΡΡΡ Π»ΠΈΡΠ½ΠΈΠ΅ ΡΠ°ΠΉΠ»Ρ (ΡΠ΅, ΠΊΠΎΡΠΎΡΡΡ
Π½Π΅Ρ Π² ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ΅)
force => true, # ΡΠ΄Π°Π»ΡΡΡ Π»ΠΈΡΠ½ΠΈΠ΅ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ
}
# ΠΠΎΠ»Π½ΠΈΡΡΠ°Ρ ΡΡΡΠ΅Π»ΠΊΠ° (~>) Π³ΠΎΠ²ΠΎΡΠΈΡ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ ΡΠ΅ΡΡΡΡ Π½ΠΈΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ΅Π½
# ΠΏΠΎΠ΄ΠΏΠΈΡΠ°ΡΡΡΡ Π½Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠ΅ΡΡΡΡΠ°, ΠΎΠΏΠΈΡΠ°Π½Π½ΠΎΠ³ΠΎ Π²ΡΡΠ΅.
# ΠΠΎΠ»Π½ΠΈΡΡΠ°Ρ ΡΡΡΠ΅Π»ΠΊΠ° Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π² ΡΠ΅Π±Ρ ΠΏΡΡΠΌΡΡ (->).
~> service { 'nginx': # ΠΎΠΏΠΈΡΡΠ²Π°Π΅ΠΌ ΡΠ΅ΡΠ²ΠΈΡ nginx
ensure => running, # ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π·Π°ΠΏΡΡΠ΅Π½
enable => true, # Π΅Π³ΠΎ Π½ΡΠΆΠ½ΠΎ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΡΠΈ ΡΡΠ°ΡΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ
}
# ΠΠΎΠ³Π΄Π° ΡΠ΅ΡΡΡΡ ΡΠΈΠΏΠ° service ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅,
# ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ ΡΠ΅ΡΠ²ΠΈΡ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ.
}
ΠΠ° Π±ΠΈ ΠΎΠ²ΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΠ°Π»ΠΎ, ΠΏΠΎΡΡΠ΅Π±Π½Π° Π²Π°ΠΌ ΡΠ΅ ΠΎΡΠΏΡΠΈΠ»ΠΈΠΊΠ΅ ΡΠ»Π΅Π΄Π΅ΡΠ° Π»ΠΎΠΊΠ°ΡΠΈΡΠ° Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΡ Π»ΡΡΠΊΠ΅:
/etc/puppetlabs/code/environments/production/ # (ΡΡΠΎ Π΄Π»Ρ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΠ°ΠΏΠΏΠ΅ΡΠ°, Π΄Π»Ρ ΡΡΠ°ΡΠΎΠ³ΠΎ ΠΊΠΎΡΠ½Π΅Π²ΠΎΠΉ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠ΅ΠΉ Π±ΡΠ΄Π΅Ρ /etc/puppet)
βββ manifests/
β βββ site.pp
βββ modules/
βββ example/
βββ files/
βββ nginx-conf/
βββ nginx.conf
βββ mime.types
βββ conf.d/
βββ some.conf
Π’ΠΈΠΏΠΎΠ²ΠΈ ΡΠ΅ΡΡΡΡΠ°
ΠΠΎΠΌΠΏΠ»Π΅ΡΠ½Ρ Π»ΠΈΡΡΡ ΠΏΠΎΠ΄ΡΠΆΠ°Π½ΠΈΡ
ΡΠΈΠΏΠΎΠ²Π° ΡΠ΅ΡΡΡΡΠ° ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΠ½Π°ΡΠΈ ΠΎΠ²Π΄Π΅
ΡΠ°ΡΠ»
Π£ΠΏΡΠ°Π²ΡΠ° Π΄Π°ΡΠΎΡΠ΅ΠΊΠ°ΠΌΠ°, Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠΌΠΈΠΌΠ°, ΡΠΈΠΌΠ±ΠΎΠ»ΠΈΡΠΊΠΈΠΌ Π²Π΅Π·Π°ΠΌΠ°, ΡΠΈΡ ΠΎΠ²ΠΈΠΌ ΡΠ°Π΄ΡΠΆΠ°ΡΠ΅ΠΌ ΠΈ ΠΏΡΠ°Π²ΠΈΠΌΠ° ΠΏΡΠΈΡΡΡΠΏΠ°.
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ:
- Π½Π°Π·ΠΈΠ² ΡΠ΅ΡΡΡΡΠ° β ΠΏΡΡΠ°ΡΠ° Π΄ΠΎ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅ (ΠΎΠΏΡΠΈΠΎΠ½ΠΎ)
- ΠΏΡΡ β ΠΏΡΡΠ°ΡΠ° Π΄ΠΎ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅ (Π°ΠΊΠΎ Π½ΠΈΡΠ΅ Π½Π°Π²Π΅Π΄Π΅Π½Π° Ρ Π½Π°Π·ΠΈΠ²Ρ)
- ΠΎΠ±Π΅Π·Π±Π΅Π΄ΠΈΡΠΈ - ΡΠΈΠΏ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅:
absent
- ΠΈΠ·Π±ΡΠΈΡΠΈΡΠ΅ Π΄Π°ΡΠΎΡΠ΅ΠΊΡpresent
β ΠΌΠΎΡΠ° ΠΏΠΎΡΡΠΎΡΠ°ΡΠΈ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° Π±ΠΈΠ»ΠΎ ΠΊΠΎΡΠ΅ Π²ΡΡΡΠ΅ (Π°ΠΊΠΎ Π½Π΅ ΠΏΠΎΡΡΠΎΡΠΈ, Π±ΠΈΡΠ΅ ΠΊΡΠ΅ΠΈΡΠ°Π½Π° ΠΎΠ±ΠΈΡΠ½Π° Π΄Π°ΡΠΎΡΠ΅ΠΊΠ°)file
- ΠΎΠ±ΠΈΡΠ°Π½ ΡΠ°ΡΠ»directory
- ΠΈΠΌΠ΅Π½ΠΈΠΊlink
- ΡΠΈΠΌΠ±ΠΎΠ»ΠΈΡΠ½Π° Π²Π΅Π·Π°
- ΡΠ°Π΄ΡΠΆΠΈΠ½Π° β ΡΠ°Π΄ΡΠΆΠ°Ρ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅ (ΠΏΠΎΠ³ΠΎΠ΄Π°Π½ ΡΠ°ΠΌΠΎ Π·Π° ΠΎΠ±ΠΈΡΠ½Π΅ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅, Π½Π΅ ΠΌΠΎΠΆΠ΅ ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈΡΠΈ Π·Π°ΡΠ΅Π΄Π½ΠΎ ΡΠ° ΠΈΠ·Π²ΠΎΡ ΠΈΠ»ΠΈ ΠΌΠ΅ΡΠ°)
- ΠΈΠ·Π²ΠΎΡ β Π²Π΅Π·Ρ Π΄ΠΎ ΠΏΡΡΠ°ΡΠ΅ ΡΠ° ΠΊΠΎΡΠ΅ ΠΆΠ΅Π»ΠΈΡΠ΅ Π΄Π° ΠΊΠΎΠΏΠΈΡΠ°ΡΠ΅ ΡΠ°Π΄ΡΠΆΠ°Ρ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅ (Π½Π΅ ΠΌΠΎΠΆΠ΅ ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈΡΠΈ Π·Π°ΡΠ΅Π΄Π½ΠΎ ΡΠ° ΡΠ°Π΄ΡΠΆΠΈΠ½Π° ΠΈΠ»ΠΈ ΠΌΠ΅ΡΠ°). ΠΠΎΠΆΠ΅ ΡΠ΅ Π½Π°Π²Π΅ΡΡΠΈ ΠΊΠ°ΠΎ Π£Π Π ΡΠ° ΡΠ΅ΠΌΠΎΠΌ
puppet:
(ΡΠ°Π΄Π° ΡΠ΅ ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈΡΠΈ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅ ΡΠ° ΡΠ΅ΡΠ²Π΅ΡΠ° Π»ΡΡΠ°ΠΊΠ°) ΠΈ ΡΠ° ΡΠ΅ΠΌΠΎΠΌhttp:
(ΠΠ°Π΄Π°ΠΌ ΡΠ΅ Π΄Π° ΡΠ΅ ΡΠ°ΡΠ½ΠΎ ΡΡΠ° ΡΠ΅ ΡΠ΅ Π΄ΠΎΠ³ΠΎΠ΄ΠΈΡΠΈ Ρ ΠΎΠ²ΠΎΠΌ ΡΠ»ΡΡΠ°ΡΡ), ΠΏΠ° ΡΠ°ΠΊ ΠΈ ΡΠ° Π΄ΠΈΡΠ°Π³ΡΠ°ΠΌΠΎΠΌfile:
ΠΈΠ»ΠΈ ΠΊΠ°ΠΎ Π°ΠΏΡΠΎΠ»ΡΡΠ½Π° ΠΏΡΡΠ°ΡΠ° Π±Π΅Π· ΡΠ΅ΠΌΠ΅ (ΠΎΠ½Π΄Π° ΡΠ΅ ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈΡΠΈ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° ΠΈΠ· Π»ΠΎΠΊΠ°Π»Π½ΠΎΠ³ Π€Π‘-Π° Π½Π° ΡΠ²ΠΎΡΡ) - ΠΌΠ΅ΡΠ° β Π³Π΄Π΅ ΡΠΈΠΌΠ±ΠΎΠ»ΡΠΊΠ° Π²Π΅Π·Π° ΡΡΠ΅Π±Π° Π΄Π° ΠΏΠΎΠΊΠ°Π·ΡΡΠ΅ (Π½Π΅ ΠΌΠΎΠΆΠ΅ ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈΡΠΈ Π·Π°ΡΠ΅Π΄Π½ΠΎ ΡΠ° ΡΠ°Π΄ΡΠΆΠΈΠ½Π° ΠΈΠ»ΠΈ ΠΈΠ·Π²ΠΎΡ)
- Π²Π»Π°ΡΠ½ΠΈΠΊ β ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊ ΠΊΠΎΡΠΈ ΡΡΠ΅Π±Π° Π΄Π° ΠΏΠΎΡΠ΅Π΄ΡΡΠ΅ Π΄Π°ΡΠΎΡΠ΅ΠΊΡ
- Π³ΡΡΠΏΠ° β Π³ΡΡΠΏΠ° ΠΊΠΎΡΠΎΡ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° ΡΡΠ΅Π±Π° Π΄Π° ΠΏΡΠΈΠΏΠ°Π΄Π°
- Π½Π°ΡΠΈΠ½ β Π΄ΠΎΠ·Π²ΠΎΠ»Π΅ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅ (ΠΊΠ°ΠΎ ΡΡΡΠΈΠ½Π³)
- ΡΠ΅ΡΡΡΡΠ΅ - ΠΎΠΌΠΎΠ³ΡΡΠ°Π²Π° ΡΠ΅ΠΊΡΡΠ·ΠΈΠ²Π½Ρ ΠΎΠ±ΡΠ°Π΄Ρ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠΌΠ°
- ΡΠΈΡΡΠΊΠ° - ΠΎΠΌΠΎΠ³ΡΡΠ°Π²Π° Π±ΡΠΈΡΠ°ΡΠ΅ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° ΠΊΠΎΡΠ΅ Π½ΠΈΡΡ ΠΎΠΏΠΈΡΠ°Π½Π΅ Ρ ΠΡΠΏΠΏΠ΅Ρ-Ρ
- ΡΠΈΠ»ΠΎΠΌ - ΠΎΠΌΠΎΠ³ΡΡΠ°Π²Π° Π±ΡΠΈΡΠ°ΡΠ΅ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠΌΠ° ΠΊΠΎΡΠΈ Π½ΠΈΡΡ ΠΎΠΏΠΈΡΠ°Π½ΠΈ Ρ ΠΡΠΏΠΏΠ΅Ρ-Ρ
ΠΏΠ°ΠΊΠ΅Ρ
ΠΠ½ΡΡΠ°Π»ΠΈΡΠ° ΠΈ ΡΠΊΠ»Π°ΡΠ° ΠΏΠ°ΠΊΠ΅ΡΠ΅. ΠΠΎΠΆΠ΅ Π΄Π° ΠΎΠ±ΡΠ°ΡΡΡΠ΅ ΠΎΠ±Π°Π²Π΅ΡΡΠ΅ΡΠ° - ΠΏΠΎΠ½ΠΎΠ²ΠΎ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ° ΠΏΠ°ΠΊΠ΅Ρ Π°ΠΊΠΎ ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΠ°Ρ Π½Π°Π²Π΅Π΄Π΅Π½ ΡΠ΅ΠΈΠ½ΡΡΠ°Π»Π»_ΠΎΠ½_ΡΠ΅ΡΡΠ΅ΡΡ .
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ:
- Π½Π°Π·ΠΈΠ² ΡΠ΅ΡΡΡΡΠ° β Π½Π°Π·ΠΈΠ² ΠΏΠ°ΠΊΠ΅ΡΠ° (ΠΎΠΏΡΠΈΠΎΠ½ΠΎ)
- ΠΈΠΌΠ΅ β Π½Π°Π·ΠΈΠ² ΠΏΠ°ΠΊΠ΅ΡΠ° (Π°ΠΊΠΎ Π½ΠΈΡΠ΅ Π½Π°Π²Π΅Π΄Π΅Π½ΠΎ Ρ Π½Π°Π·ΠΈΠ²Ρ)
- Π‘Π½Π°Π±Π΄Π΅Π²Π°Ρ β ΠΌΠ΅Π½Π°ΡΠ΅Ρ ΠΏΠ°ΠΊΠ΅ΡΠ° Π·Π° ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅
- ΠΎΠ±Π΅Π·Π±Π΅Π΄ΠΈΡΠΈ β ΠΆΠ΅ΡΠ΅Π½ΠΎ ΡΡΠ°ΡΠ΅ ΠΏΠ°ΠΊΠΎΠ²Π°ΡΠ°:
present
,installed
- Π±ΠΈΠ»ΠΎ ΠΊΠΎΡΠ° Π²Π΅ΡΠ·ΠΈΡΠ° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π°latest
- ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π° Π½Π°ΡΠ½ΠΎΠ²ΠΈΡΠ° Π²Π΅ΡΠ·ΠΈΡΠ°absent
- ΠΈΠ·Π±ΡΠΈΡΠ°Π½ (apt-get remove
)purged
β ΠΎΠ±ΡΠΈΡΠ°Π½ΠΎ Π·Π°ΡΠ΅Π΄Π½ΠΎ ΡΠ° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½ΠΈΠΌ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ°ΠΌΠ° (apt-get purge
)held
- Π²Π΅ΡΠ·ΠΈΡΠ° ΠΏΠ°ΠΊΠ΅ΡΠ° ΡΠ΅ Π·Π°ΠΊΡΡΡΠ°Π½Π° (apt-mark hold
)Π»ΡΠ±Π°Ρ Π΄ΡΡΠ³Π°Ρ ΡΡΡΠΎΠΊΠ°
β Π½Π°Π²Π΅Π΄Π΅Π½Π° Π²Π΅ΡΠ·ΠΈΡΠ° ΡΠ΅ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π°
- ΡΠ΅ΠΈΠ½ΡΡΠ°Π»Π»_ΠΎΠ½_ΡΠ΅ΡΡΠ΅ΡΡ
- Π°ΠΊΠΎ
true
, ΠΎΠ½Π΄Π° ΡΠ΅ ΠΏΠΎ ΠΏΡΠΈΡΠ΅ΠΌΡ ΠΎΠ±Π°Π²Π΅ΡΡΠ΅ΡΠ° ΠΏΠ°ΠΊΠ΅Ρ Π±ΠΈΡΠΈ ΠΏΠΎΠ½ΠΎΠ²ΠΎ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½. ΠΠΎΡΠΈΡΠ½ΠΎ Π·Π° Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΡΠ΅ Π·Π°ΡΠ½ΠΎΠ²Π°Π½Π΅ Π½Π° ΠΈΠ·Π²ΠΎΡΡ, Π³Π΄Π΅ ΠΌΠΎΠΆΠ΅ Π±ΠΈΡΠΈ Π½Π΅ΠΎΠΏΡ ΠΎΠ΄Π½Π° ΡΠ΅ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡΠ° ΠΏΠ°ΠΊΠ΅ΡΠ° ΠΊΠ°Π΄Π° ΡΠ΅ ΠΌΠ΅ΡΠ°ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ ΠΈΠ·Π³ΡΠ°Π΄ΡΠ΅. Π£ΠΎΠ±ΠΈΡΠ°ΡΠ΅Π½ΠΎfalse
.
ΡΠ΅ΡΠ²ΠΈΡ
Π£ΠΏΡΠ°Π²ΡΠ° ΡΡΠ»ΡΠ³Π°ΠΌΠ°. ΠΠΎΠΆΠ΅ Π΄Π° ΠΎΠ±ΡΠ°ΡΡΡΠ΅ ΠΎΠ±Π°Π²Π΅ΡΡΠ΅ΡΠ° - ΠΏΠΎΠ½ΠΎΠ²ΠΎ ΠΏΠΎΠΊΡΠ΅ΡΠ΅ ΡΡΠ»ΡΠ³Ρ.
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ:
- Π½Π°Π·ΠΈΠ² ΡΠ΅ΡΡΡΡΠ° β ΡΡΠ»ΡΠ³Π° ΠΊΠΎΡΠΎΠΌ ΡΠ΅ ΡΠΏΡΠ°Π²ΡΠ° (ΠΎΠΏΡΠΈΠΎΠ½ΠΎ)
- ΠΈΠΌΠ΅ β ΡΡΠ»ΡΠ³Π° ΠΊΠΎΡΠΎΠΌ ΡΡΠ΅Π±Π° ΡΠΏΡΠ°Π²ΡΠ°ΡΠΈ (Π°ΠΊΠΎ Π½ΠΈΡΠ΅ Π½Π°Π²Π΅Π΄Π΅Π½ΠΎ Ρ Π½Π°Π·ΠΈΠ²Ρ)
- ΠΎΠ±Π΅Π·Π±Π΅Π΄ΠΈΡΠΈ β ΠΆΠ΅ΡΠ΅Π½ΠΎ ΡΡΠ°ΡΠ΅ ΡΡΠ»ΡΠ³Π΅:
running
- ΠΏΠΎΠΊΡΠ΅Π½ΡΡstopped
- ΡΡΠ°ΠΎ
- ΠΎΠΌΠΎΠ³ΡΡΠΈΡΠΈ β ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠ΅ ΠΌΠΎΠ³ΡΡΠ½ΠΎΡΡ ΠΏΠΎΠΊΡΠ΅ΡΠ°ΡΠ° ΡΡΠ»ΡΠ³Π΅:
true
β Π°ΡΡΠΎΠΌΠ°ΡΡΠΊΠΎ ΠΏΠΎΠΊΡΠ΅ΡΠ°ΡΠ΅ ΡΠ΅ ΠΎΠΌΠΎΠ³ΡΡΠ΅Π½ΠΎ (systemctl enable
)mask
- ΠΏΡΠ΅ΡΡΡΠ΅Π½ (systemctl mask
)false
β Π°ΡΡΠΎΠΌΠ°ΡΡΠΊΠΎ ΠΏΠΎΠΊΡΠ΅ΡΠ°ΡΠ΅ ΡΠ΅ ΠΎΠ½Π΅ΠΌΠΎΠ³ΡΡΠ΅Π½ΠΎ (systemctl disable
)
- ΠΏΠΎΠΊΡΠ΅Π½ΡΡΠΈ - ΠΊΠΎΠΌΠ°Π½Π΄Π° Π·Π° ΠΏΠΎΠ½ΠΎΠ²Π½ΠΎ ΠΏΠΎΠΊΡΠ΅ΡΠ°ΡΠ΅ ΡΡΠ»ΡΠ³Π΅
- ΡΡΠ°ΡΡΡ β ΠΊΠΎΠΌΠ°Π½Π΄Π° Π·Π° ΠΏΡΠΎΠ²Π΅ΡΡ ΡΡΠ°ΡΡΡΠ° ΡΠ΅ΡΠ²ΠΈΡΠ°
- Ρ
Π°ΡΡΠ΅ΡΡΠ°ΡΡ β Π½Π°Π·Π½Π°ΡΠΈΡΠ΅ Π΄Π° Π»ΠΈ ΠΈΠ½ΠΈΡΡΡΡΠΈΠΏΡ ΡΠ΅ΡΠ²ΠΈΡΠ° ΠΏΠΎΠ΄ΡΠΆΠ°Π²Π° ΠΏΠΎΠ½ΠΎΠ²Π½ΠΎ ΠΏΠΎΠΊΡΠ΅ΡΠ°ΡΠ΅. ΠΠΊΠΎ
false
Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΠ°Ρ ΡΠ΅ Π½Π°Π²Π΅Π΄Π΅Π½ ΠΏΠΎΠΊΡΠ΅Π½ΡΡΠΈ β ΠΊΠΎΡΠΈΡΡΠΈ ΡΠ΅ Π²ΡΠ΅Π΄Π½ΠΎΡΡ ΠΎΠ²ΠΎΠ³ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°. ΠΠΊΠΎfalse
ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΠ°Ρ ΠΏΠΎΠΊΡΠ΅Π½ΡΡΠΈ Π½ΠΈΡΠ΅ Π½Π°Π²Π΅Π΄Π΅Π½ΠΎ - ΡΡΠ»ΡΠ³Π° ΡΠ΅ Π·Π°ΡΡΡΠ°Π²ΡΠ΅Π½Π° ΠΈ ΠΏΠΎΡΠ΅Π»Π° Π΄Π° ΡΠ΅ ΠΏΠΎΠ½ΠΎΠ²ΠΎ ΠΏΠΎΠΊΡΠ΅ΡΠ΅ (Π°Π»ΠΈ ΡΠΈΡΡΠ΅ΠΌΠ΄ ΠΊΠΎΡΠΈΡΡΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρsystemctl restart
). - Ρ
Π°ΡΡΡΠ°ΡΡΡ β Π½Π°Π·Π½Π°ΡΠΈΡΠ΅ Π΄Π° Π»ΠΈ ΠΈΠ½ΠΈΡΡΡΡΠΈΠΏΡ ΡΠ΅ΡΠ²ΠΈΡΠ° ΠΏΠΎΠ΄ΡΠΆΠ°Π²Π° ΠΊΠΎΠΌΠ°Π½Π΄Ρ
status
. ΠΠΊΠΎfalse
, ΡΠ°Π΄Π° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ Π²ΡΠ΅Π΄Π½ΠΎΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΡΡΠ°ΡΡΡ. Π£ΠΎΠ±ΠΈΡΠ°ΡΠ΅Π½ΠΎtrue
.
Π΅ΠΊΠ΅Ρ
ΠΠΎΠΊΡΠ΅ΡΠ΅ Π΅ΠΊΡΡΠ΅ΡΠ½Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π΅. ΠΠΊΠΎ Π½Π΅ Π½Π°Π²Π΅Π΄Π΅ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ΅ ΡΡΠ²Π°ΡΠ°, ΡΠ°ΠΌΠΎ Π°ΠΊΠΎ, Π°ΠΊΠΎ Π½Π΅ ΠΈΠ»ΠΈ ΡΠ΅ΡΡΠ΅ΡΡ ΠΎΠ½Π»ΠΈ, ΠΊΠΎΠΌΠ°Π½Π΄Π° ΡΠ΅ Π±ΠΈΡΠΈ ΠΏΠΎΠΊΡΠ΅Π½ΡΡΠ° ΡΠ²Π°ΠΊΠΈ ΠΏΡΡ ΠΊΠ°Π΄Π° ΡΠ΅ ΠΏΠΎΠΊΡΠ΅Π½Π΅ ΠΡΠΏΠΏΠ΅Ρ. ΠΠΎΠΆΠ΅ Π΄Π° ΠΎΠ±ΡΠ°ΡΡΡΠ΅ ΠΎΠ±Π°Π²Π΅ΡΡΠ΅ΡΠ° - ΠΏΠΎΠΊΡΠ΅ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ.
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ:
- Π½Π°Π·ΠΈΠ² ΡΠ΅ΡΡΡΡΠ° β ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΊΠΎΡΠ° ΡΠ΅ ΠΈΠ·Π²ΡΡΠ°Π²Π° (ΠΎΠΏΡΠΈΠΎΠ½ΠΎ)
- ΠΊΠΎΠΌΠ°Π½Π΄Π° β ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΊΠΎΡΡ ΡΡΠ΅Π±Π° ΠΈΠ·Π²ΡΡΠΈΡΠΈ (Π°ΠΊΠΎ Π½ΠΈΡΠ΅ Π½Π°Π²Π΅Π΄Π΅Π½Π° Ρ Π½Π°Π·ΠΈΠ²Ρ)
- ΠΏΡΡ β ΠΏΡΡΠ°ΡΠ΅ Ρ ΠΊΠΎΡΠΈΠΌΠ° ΡΠ΅ ΡΡΠ°ΠΆΠΈ ΠΈΠ·Π²ΡΡΠ½Π° Π΄Π°ΡΠΎΡΠ΅ΠΊΠ°
- ΡΠ°ΠΌΠΎ Π°ΠΊΠΎ β Π°ΠΊΠΎ ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π° Π½Π°Π²Π΅Π΄Π΅Π½Π° Ρ ΠΎΠ²ΠΎΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π·Π°Π²ΡΡΠ΅Π½Π° ΡΠ° Π½ΡΠ»ΡΠΈΠΌ ΠΏΠΎΠ²ΡΠ°ΡΠ½ΠΈΠΌ ΠΊΠΎΠ΄ΠΎΠΌ, Π³Π»Π°Π²Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΡΠ΅ Π±ΠΈΡΠΈ ΠΈΠ·Π²ΡΡΠ΅Π½Π°
- Π°ΠΊΠΎ Π½Π΅ β Π°ΠΊΠΎ ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π° Π½Π°Π²Π΅Π΄Π΅Π½Π° Ρ ΠΎΠ²ΠΎΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π·Π°Π²ΡΡΠ΅Π½Π° ΡΠ° ΠΏΠΎΠ²ΡΠ°ΡΠ½ΠΈΠΌ ΠΊΠΎΠ΄ΠΎΠΌ ΠΊΠΎΡΠΈ Π½ΠΈΡΠ΅ Π½ΡΠ»Π°, Π³Π»Π°Π²Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΡΠ΅ Π±ΠΈΡΠΈ ΠΈΠ·Π²ΡΡΠ΅Π½Π°
- ΡΡΠ²Π°ΡΠ° β Π°ΠΊΠΎ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° Π½Π°Π²Π΅Π΄Π΅Π½Π° Ρ ΠΎΠ²ΠΎΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π½Π΅ ΠΏΠΎΡΡΠΎΡΠΈ, Π³Π»Π°Π²Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΡΠ΅ Π±ΠΈΡΠΈ ΠΈΠ·Π²ΡΡΠ΅Π½Π°
- ΡΠ΅ΡΡΠ΅ΡΡ
ΠΎΠ½Π»ΠΈ - Π°ΠΊΠΎ
true
, ΠΎΠ½Π΄Π° ΡΠ΅ ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΏΠΎΠΊΡΠ΅Π½ΡΡΠΈ ΡΠ°ΠΌΠΎ ΠΊΠ°Π΄Π° ΠΎΠ²Π°Ρ Π΅ΠΊΠ΅Ρ ΠΏΡΠΈΠΌΠΈ ΠΎΠ±Π°Π²Π΅ΡΡΠ΅ΡΠ΅ ΠΎΠ΄ Π΄ΡΡΠ³ΠΈΡ ΡΠ΅ΡΡΡΡΠ° - ΡΠ²Π΄ β Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠΌ ΠΈΠ· ΠΊΠΎΡΠ΅Π³ ΡΡΠ΅Π±Π° ΠΏΠΎΠΊΡΠ΅Π½ΡΡΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ
- ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊ β ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊ ΠΎΠ΄ ΠΊΠΎΠ³Π° Π΄Π° ΡΠ΅ ΠΏΠΎΠΊΡΠ΅Π½Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π°
- Π‘Π½Π°Π±Π΄Π΅Π²Π°Ρ - ΠΊΠ°ΠΊΠΎ ΠΏΠΎΠΊΡΠ΅Π½ΡΡΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
- ΠΠΠ‘ΠΠΠ‘ β ΠΏΠΎΠ΄ΡΠ΅ΡΠ΅Π½ΠΈ ΠΏΡΠΎΡΠ΅Ρ ΡΠ΅ ΡΠ΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΎ ΠΊΡΠ΅ΠΈΡΠ°, ΠΎΠ±Π°Π²Π΅Π·Π½ΠΎ Π½Π°Π²Π΅Π΄ΠΈΡΠ΅ ΠΏΡΡ
- Π³ΡΠ°Π½Π°ΡΠ° - ΠΊΠΎΠΌΠ°Π½Π΄Π° ΡΠ΅ ΠΏΠΎΠΊΡΠ΅ΡΠ΅ Ρ ΡΡΡΡΠΈ
/bin/sh
, ΠΌΠΎΠΆΠ΄Π° Π½ΠΈΡΠ΅ Π½Π°Π²Π΅Π΄Π΅Π½ΠΎ ΠΏΡΡ, ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈΡΠΈ Π³Π»ΠΎΠ±ΠΈΠ½Π³, ΡΠ΅Π²ΠΈ ΠΈ Π΄ΡΡΠ³Π΅ ΠΊΠ°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠ΅ ΡΡΡΠΊΠ΅. ΠΠ±ΠΈΡΠ½ΠΎ ΡΠ΅ Π°ΡΡΠΎΠΌΠ°ΡΡΠΊΠΈ Π΄Π΅ΡΠ΅ΠΊΡΡΡΠ΅ Π°ΠΊΠΎ ΠΏΠΎΡΡΠΎΡΠ΅ ΠΏΠΎΡΠ΅Π±Π½ΠΈ ΠΊΠ°ΡΠ°ΠΊΡΠ΅ΡΠΈ (|
,;
,&&
,||
ΠΈ ΡΠ°ΠΊΠΎ Π΄Π°ΡΠ΅).
ΡΡΠΎΠ½
ΠΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠ΅ ΡΡΠΎΡΠΎΠ±Ρ.
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ:
- Π½Π°Π·ΠΈΠ² ΡΠ΅ΡΡΡΡΠ° - ΡΠ°ΠΌΠΎ Π½Π΅ΠΊΠ° Π²ΡΡΡΠ° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ°
- ΠΎΠ±Π΅Π·Π±Π΅Π΄ΠΈΡΠΈ β ΡΡΠ°ΡΡΡ ΠΊΡΡΠ½ΡΠΊΠΎΠ³ ΠΏΠΎΡΠ»Π°:
present
- ΠΊΡΠ΅ΠΈΡΠ°ΡΠΈ Π°ΠΊΠΎ Π½Π΅ ΠΏΠΎΡΡΠΎΡΠΈabsent
- ΠΈΠ·Π±ΡΠΈΡΠ°ΡΠΈ Π°ΠΊΠΎ ΠΏΠΎΡΡΠΎΡΠΈ
- ΠΊΠΎΠΌΠ°Π½Π΄Π° - ΠΊΠΎΡΡ Π½Π°ΡΠ΅Π΄Π±Ρ ΠΏΠΎΠΊΡΠ΅Π½ΡΡΠΈ
- ΠΎΠΊΠΎΠ»ΠΈΠ½Π° β Ρ ΠΊΠΎΠΌ ΠΎΠΊΡΡΠΆΠ΅ΡΡ ΡΡΠ΅Π±Π° ΠΏΠΎΠΊΡΠ΅Π½ΡΡΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ (Π»ΠΈΡΡΠ° ΠΏΡΠΎΠΌΠ΅Π½ΡΠΈΠ²ΠΈΡ
ΠΎΠΊΡΡΠΆΠ΅ΡΠ° ΠΈ ΡΠΈΡ
ΠΎΠ²ΠΈΡ
Π²ΡΠ΅Π΄Π½ΠΎΡΡΠΈ ΠΏΡΠ΅ΠΊΠΎ
=
) - ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊ β ΠΎΠ΄ ΠΊΠΎΠ³ ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊΠ° Π΄Π° ΠΏΠΎΠΊΡΠ΅Π½Π΅ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ
- ΠΌΠΈΠ½ΡΡ, ΡΠ°Ρ, ΡΠ°Π΄Π½ΠΈΠΌ Π΄Π°Π½ΠΎΠΌ, ΠΌΠ΅ΡΠ΅Ρ, ΠΌΠ΅ΡΠ΅Ρ Π΄Π°Π½Π° β ΠΊΠ°Π΄Π° ΠΏΠΎΠΊΡΠ΅Π½ΡΡΠΈ ΡΡΠΎΠ½. ΠΠΊΠΎ Π±ΠΈΠ»ΠΎ ΠΊΠΎΡΠΈ ΠΎΠ΄ ΠΎΠ²ΠΈΡ
Π°ΡΡΠΈΠ±ΡΡΠ° Π½ΠΈΡΠ΅ Π½Π°Π²Π΅Π΄Π΅Π½, ΡΠ΅Π³ΠΎΠ²Π° Π²ΡΠ΅Π΄Π½ΠΎΡΡ Ρ ΡΡΠΎΠ½ΡΠ°Π±-Ρ ΡΠ΅ Π±ΠΈΡΠΈ
*
.
Π£ ΠΡΠΏΠΏΠ΅Ρ 6.0 ΡΡΠΎΠ½ ΠΊΠ°ΠΎ Π΄Π°
Π ΡΠ΅ΡΡΡΡΠΈΠΌΠ° ΡΠΎΠΏΡΡΠ΅
ΠΠ°Ρ ΡΠ΅Π²ΠΈ Π·Π° ΡΠ΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½ΠΎΡΡ ΡΠ΅ΡΡΡΡΠ°
ΠΠ°ΡΡΠ΅ΡΡΠ° Π³ΡΠ΅ΡΠΊΠ° ΡΠ° ΠΊΠΎΡΠΎΠΌ ΡΠ΅ ΡΡΡΡΠ΅ΡΠ΅ΠΌΠΎ ΡΠ΅ ΠΡΠΏΠ»ΠΈΠΊΠ°Ρ Π΄Π΅ΠΊΠ»Π°ΡΠ°ΡΠΈΡΠ΅. ΠΠ²Π° Π³ΡΠ΅ΡΠΊΠ° ΡΠ΅ ΡΠ°Π²ΡΠ° ΠΊΠ°Π΄Π° ΡΠ΅ Ρ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠΌΡ ΠΏΠΎΡΠ°Π²ΡΡΡΡ Π΄Π²Π° ΠΈΠ»ΠΈ Π²ΠΈΡΠ΅ ΡΠ΅ΡΡΡΡΠ° ΠΈΡΡΠΎΠ³ ΡΠΈΠΏΠ° ΡΠ° ΠΈΡΡΠΈΠΌ ΠΈΠΌΠ΅Π½ΠΎΠΌ.
ΠΠ°ΡΠΎ ΡΡ ΠΏΠΎΠ½ΠΎΠ²ΠΎ ΠΏΠΈΡΠ°ΡΠΈ: ΠΌΠ°Π½ΠΈΡΠ΅ΡΡΠΈ Π·Π° ΠΈΡΡΠΈ ΡΠ²ΠΎΡ Π½Π΅ Π±ΠΈ ΡΡΠ΅Π±Π°Π»ΠΎ Π΄Π° ΡΠ°Π΄ΡΠΆΠ΅ ΡΠ΅ΡΡΡΡΠ΅ ΠΈΡΡΠΎΠ³ ΡΠΈΠΏΠ° ΡΠ° ΠΈΡΡΠΈΠΌ Π½Π°ΡΠ»ΠΎΠ²ΠΎΠΌ!
ΠΠΎΠ½Π΅ΠΊΠ°Π΄ ΠΏΠΎΡΡΠΎΡΠΈ ΠΏΠΎΡΡΠ΅Π±Π° Π΄Π° ΡΠ΅ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΡ ΠΏΠ°ΠΊΠ΅ΡΠΈ ΡΠ° ΠΈΡΡΠΈΠΌ ΠΈΠΌΠ΅Π½ΠΎΠΌ, Π°Π»ΠΈ ΡΠ° ΡΠ°Π·Π»ΠΈΡΠΈΡΠΈΠΌ ΠΌΠ΅Π½Π°ΡΠ΅ΡΠΈΠΌΠ° ΠΏΠ°ΠΊΠ΅ΡΠ°. Π£ ΠΎΠ²ΠΎΠΌ ΡΠ»ΡΡΠ°ΡΡ ΠΌΠΎΡΠ°ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈΡΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΠ°Ρ name
Π΄Π° Π±ΠΈΡΡΠ΅ ΠΈΠ·Π±Π΅Π³Π»ΠΈ Π³ΡΠ΅ΡΠΊΡ:
package { 'ruby-mysql':
ensure => installed,
name => 'mysql',
provider => 'gem',
}
package { 'python-mysql':
ensure => installed,
name => 'mysql',
provider => 'pip',
}
ΠΡΡΠ³ΠΈ ΡΠΈΠΏΠΎΠ²ΠΈ ΡΠ΅ΡΡΡΡΠ° ΠΈΠΌΠ°ΡΡ ΡΠ»ΠΈΡΠ½Π΅ ΠΎΠΏΡΠΈΡΠ΅ ΠΊΠ°ΠΊΠΎ Π±ΠΈ ΡΠ΅ ΠΈΠ·Π±Π΅Π³Π»ΠΎ Π΄ΡΠΏΠ»ΠΈΡΠ°ΡΠ΅ β name
Ρ ΡΠ΅ΡΠ²ΠΈΡ, command
Ρ Π΅ΠΊΠ΅Ρ, ΠΈ ΡΠ°ΠΊΠΎ Π΄Π°ΡΠ΅.
ΠΠ΅ΡΠ°ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ
Π‘Π²Π°ΠΊΠΈ ΡΠΈΠΏ ΡΠ΅ΡΡΡΡΠ° ΠΈΠΌΠ° Π½Π΅ΠΊΠ΅ ΠΏΠΎΡΠ΅Π±Π½Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ΅, Π±Π΅Π· ΠΎΠ±Π·ΠΈΡΠ° Π½Π° ΡΠ΅Π³ΠΎΠ²Ρ ΠΏΡΠΈΡΠΎΠ΄Ρ.
ΠΠΎΡΠΏΡΠ½Π° Π»ΠΈΡΡΠ° ΠΌΠ΅ΡΠ° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΠ°ΡΠ°
ΠΡΠ°ΡΠΊΠ° Π»ΠΈΡΡΠ°:
- Π·Π°Ρ ΡΠ΅Π²Π°ΡΠΈ β ΠΎΠ²Π°Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΠ°Ρ ΠΏΠΎΠΊΠ°Π·ΡΡΠ΅ ΠΎΠ΄ ΠΊΠΎΡΠΈΡ ΡΠ΅ΡΡΡΡΠ° Π·Π°Π²ΠΈΡΠΈ ΠΎΠ²Π°Ρ ΡΠ΅ΡΡΡΡ.
- ΠΏΡΠ΅ - ΠΠ²Π°Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΠ°Ρ ΠΎΠ΄ΡΠ΅ΡΡΡΠ΅ ΠΊΠΎΡΠΈ ΡΠ΅ΡΡΡΡΠΈ Π·Π°Π²ΠΈΡΠ΅ ΠΎΠ΄ ΠΎΠ²ΠΎΠ³ ΡΠ΅ΡΡΡΡΠ°.
- ΠΏΡΠ΅ΡΠΏΠ»Π°ΡΠΈΡΠΈ ΡΠ΅ β ΠΎΠ²Π°Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΠ°Ρ ΠΎΠ΄ΡΠ΅ΡΡΡΠ΅ ΡΠ° ΠΊΠΎΡΠΈΡ ΠΈΠ·Π²ΠΎΡΠ° ΠΎΠ²Π°Ρ ΡΠ΅ΡΡΡΡ ΠΏΡΠΈΠΌΠ° ΠΎΠ±Π°Π²Π΅ΡΡΠ΅ΡΠ°.
- Π½ΠΎΡΠΈΡΠΈ β ΠΠ²Π°Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΠ°Ρ ΠΎΠ΄ΡΠ΅ΡΡΡΠ΅ ΠΊΠΎΡΠΈ ΡΠ΅ΡΡΡΡΠΈ ΠΏΡΠΈΠΌΠ°ΡΡ ΠΎΠ±Π°Π²Π΅ΡΡΠ΅ΡΠ° ΡΠ° ΠΎΠ²ΠΎΠ³ ΡΠ΅ΡΡΡΡΠ°.
Π‘Π²ΠΈ Π½Π°Π²Π΅Π΄Π΅Π½ΠΈ ΠΌΠ΅ΡΠ°ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ ΠΏΡΠΈΡ Π²Π°ΡΠ°ΡΡ ΠΈΠ»ΠΈ ΡΠ΅Π΄Π½Ρ Π²Π΅Π·Ρ Π΄ΠΎ ΡΠ΅ΡΡΡΡΠ° ΠΈΠ»ΠΈ Π½ΠΈΠ· Π²Π΅Π·Π° Ρ ΡΠ³Π»Π°ΡΡΠΈΠΌ Π·Π°Π³ΡΠ°Π΄Π°ΠΌΠ°.
ΠΠ΅Π·Π΅ ΠΊΠ° ΡΠ΅ΡΡΡΡΠΈΠΌΠ°
ΠΠ΅Π·Π° ΡΠ΅ΡΡΡΡΠ° ΡΠ΅ ΡΠ΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΎ ΠΏΠΎΠΌΠΈΡΠ°ΡΠ΅ ΡΠ΅ΡΡΡΡΠ°. Π£Π³Π»Π°Π²Π½ΠΎΠΌ ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠ΅ Π·Π° ΠΎΠ·Π½Π°ΡΠ°Π²Π°ΡΠ΅ Π·Π°Π²ΠΈΡΠ½ΠΎΡΡΠΈ. Π£ΠΏΡΡΠΈΠ²Π°ΡΠ΅ Π½Π° Π½Π΅ΠΏΠΎΡΡΠΎΡΠ΅ΡΠΈ ΡΠ΅ΡΡΡΡ ΡΠ΅ ΠΈΠ·Π°Π·Π²Π°ΡΠΈ Π³ΡΠ΅ΡΠΊΡ ΠΏΡΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡΠΈ.
Π‘ΠΈΠ½ΡΠ°ΠΊΡΠ° Π²Π΅Π·Π΅ ΡΠ΅ ΡΠ»Π΅Π΄Π΅ΡΠ°: ΡΠΈΠΏ ΡΠ΅ΡΡΡΡΠ° ΡΠ° Π²Π΅Π»ΠΈΠΊΠΈΠΌ ΡΠ»ΠΎΠ²ΠΎΠΌ (Π°ΠΊΠΎ ΠΈΠΌΠ΅ ΡΠΈΠΏΠ° ΡΠ°Π΄ΡΠΆΠΈ Π΄ΡΠΏΠ»Π΅ Π΄Π²ΠΎΡΠ°ΡΠΊΠ΅, ΠΎΠ½Π΄Π° ΡΠ΅ ΡΠ²Π°ΠΊΠΈ Π΄Π΅ΠΎ ΠΈΠΌΠ΅Π½Π° ΠΈΠ·ΠΌΠ΅ΡΡ Π΄Π²Π΅ ΡΠ°ΡΠΊΠ΅ ΠΏΠΈΡΠ΅ Π²Π΅Π»ΠΈΠΊΠΈΠΌ ΡΠ»ΠΎΠ²ΠΈΠΌΠ°), Π·Π°ΡΠΈΠΌ ΠΈΠΌΠ΅ ΡΠ΅ΡΡΡΡΠ° Ρ ΡΠ³Π»Π°ΡΡΠΈΠΌ Π·Π°Π³ΡΠ°Π΄Π°ΠΌΠ° (Π²Π΅Π»ΠΈΠΊΠ° ΠΈ ΠΌΠ°Π»Π° ΡΠ»ΠΎΠ²Π° ΠΈΠΌΠ΅Π½Π° Π½Π΅ ΠΌΠ΅ΡΠ°!). ΠΠ΅ Π±ΠΈ ΡΡΠ΅Π±Π°Π»ΠΎ Π΄Π° Π±ΡΠ΄Π΅ ΡΠ°Π·ΠΌΠ°ΠΊΠ° Ρ ΡΠ³Π»Π°ΡΠΈΠΌ Π·Π°Π³ΡΠ°Π΄Π°ΠΌΠ° ΠΎΠ΄ΠΌΠ°Ρ ΠΈΠ·Π° Π½Π°Π·ΠΈΠ²Π° ΡΠΈΠΏΠ°.
ΠΡΠΈΠΌΠ΅Ρ:
file { '/file1': ensure => present }
file { '/file2':
ensure => directory,
before => File['/file1'],
}
file { '/file3': ensure => absent }
File['/file1'] -> File['/file3']
ΠΠ°Π²ΠΈΡΠ½ΠΎΡΡΠΈ ΠΈ ΠΎΠ±Π°Π²Π΅ΡΡΠ΅ΡΠ°
ΠΠ°ΠΎ ΡΡΠΎ ΡΠ΅ ΡΠ°Π½ΠΈΡΠ΅ ΡΠ΅ΡΠ΅Π½ΠΎ, ΡΠ΅Π΄Π½ΠΎΡΡΠ°Π²Π½Π΅ Π·Π°Π²ΠΈΡΠ½ΠΎΡΡΠΈ ΠΈΠ·ΠΌΠ΅ΡΡ ΡΠ΅ΡΡΡΡΠ° ΡΡ ΡΡΠ°Π½Π·ΠΈΡΠΈΠ²Π½Π΅. Π£Π·Π³ΡΠ΅Π΄, Π±ΡΠ΄ΠΈΡΠ΅ ΠΏΠ°ΠΆΡΠΈΠ²ΠΈ ΠΊΠ°Π΄Π° Π΄ΠΎΠ΄Π°ΡΠ΅ΡΠ΅ Π·Π°Π²ΠΈΡΠ½ΠΎΡΡΠΈ - ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΊΡΠ΅ΠΈΡΠ°ΡΠΈ ΡΠΈΠΊΠ»ΠΈΡΠ½Π΅ Π·Π°Π²ΠΈΡΠ½ΠΎΡΡΠΈ, ΡΡΠΎ ΡΠ΅ ΠΈΠ·Π°Π·Π²Π°ΡΠΈ Π³ΡΠ΅ΡΠΊΡ Ρ ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡΠΈ.
ΠΠ° ΡΠ°Π·Π»ΠΈΠΊΡ ΠΎΠ΄ Π·Π°Π²ΠΈΡΠ½ΠΎΡΡΠΈ, ΠΎΠ±Π°Π²Π΅ΡΡΠ΅ΡΠ° Π½ΠΈΡΡ ΡΡΠ°Π½Π·ΠΈΡΠΈΠ²Π½Π°. ΠΠ° ΠΎΠ±Π°Π²Π΅ΡΡΠ΅ΡΠ° Π²Π°ΠΆΠ΅ ΡΠ»Π΅Π΄Π΅ΡΠ° ΠΏΡΠ°Π²ΠΈΠ»Π°:
- ΠΠΊΠΎ ΡΠ΅ΡΡΡΡ ΠΏΡΠΈΠΌΠΈ ΠΎΠ±Π°Π²Π΅ΡΡΠ΅ΡΠ΅, ΠΎΠ½ ΡΠ΅ Π°ΠΆΡΡΠΈΡΠ°. ΠΠΊΡΠΈΡΠ΅ Π°ΠΆΡΡΠΈΡΠ°ΡΠ° Π·Π°Π²ΠΈΡΠ΅ ΠΎΠ΄ ΡΠΈΠΏΠ° ΡΠ΅ΡΡΡΡΠ° β Π΅ΠΊΠ΅Ρ ΠΏΠΎΠΊΡΠ΅ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ, ΡΠ΅ΡΠ²ΠΈΡ ΠΏΠΎΠ½ΠΎΠ²ΠΎ ΠΏΠΎΠΊΡΠ΅ΡΠ΅ ΡΡΠ»ΡΠ³Ρ, ΠΏΠ°ΠΊΠ΅Ρ ΠΏΠΎΠ½ΠΎΠ²ΠΎ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ° ΠΏΠ°ΠΊΠ΅Ρ. ΠΠΊΠΎ ΡΠ΅ΡΡΡΡ Π½Π΅ΠΌΠ° Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°Π½Ρ Π°ΠΊΡΠΈΡΡ Π°ΠΆΡΡΠΈΡΠ°ΡΠ°, ΠΎΠ½Π΄Π° ΡΠ΅ Π½ΠΈΡΡΠ° Π½Π΅ Π΄Π΅ΡΠ°Π²Π°.
- Π’ΠΎΠΊΠΎΠΌ ΡΠ΅Π΄Π½ΠΎΠ³ ΠΏΠΎΠΊΡΠ΅ΡΠ°ΡΠ° ΠΡΠΏΠΏΠ΅Ρ-Π°, ΡΠ΅ΡΡΡΡ ΡΠ΅ Π°ΠΆΡΡΠΈΡΠ° Π½Π°ΡΠ²ΠΈΡΠ΅ ΡΠ΅Π΄Π½ΠΎΠΌ. ΠΠ²ΠΎ ΡΠ΅ ΠΌΠΎΠ³ΡΡΠ΅ ΡΠ΅Ρ ΠΎΠ±Π°Π²Π΅ΡΡΠ΅ΡΠ° ΡΠΊΡΡΡΡΡΡ Π·Π°Π²ΠΈΡΠ½ΠΎΡΡΠΈ, Π° Π³ΡΠ°ΡΠΈΠΊΠΎΠ½ Π·Π°Π²ΠΈΡΠ½ΠΎΡΡΠΈ Π½Π΅ ΡΠ°Π΄ΡΠΆΠΈ ΡΠΈΠΊΠ»ΡΡΠ΅.
- ΠΠΊΠΎ ΠΡΠΏΠΏΠ΅Ρ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ ΡΡΠ°ΡΠ΅ ΡΠ΅ΡΡΡΡΠ°, ΡΠ΅ΡΡΡΡ ΡΠ°ΡΠ΅ ΠΎΠ±Π°Π²Π΅ΡΡΠ΅ΡΠ° ΡΠ²ΠΈΠΌ ΡΠ΅ΡΡΡΡΠΈΠΌΠ° ΠΊΠΎΡΠΈ ΡΡ ΠΏΡΠ΅ΡΠΏΠ»Π°ΡΠ΅Π½ΠΈ Π½Π° ΡΠ΅Π³Π°.
- ΠΠΊΠΎ ΡΠ΅ ΡΠ΅ΡΡΡΡ Π°ΠΆΡΡΠΈΡΠ°, ΠΎΠ½ ΡΠ°ΡΠ΅ ΠΎΠ±Π°Π²Π΅ΡΡΠ΅ΡΠ° ΡΠ²ΠΈΠΌ ΡΠ΅ΡΡΡΡΠΈΠΌΠ° ΠΊΠΎΡΠΈ ΡΡ ΠΏΡΠ΅ΡΠΏΠ»Π°ΡΠ΅Π½ΠΈ Π½Π° ΡΠ΅Π³Π°.
Π ΡΠΊΠΎΠ²Π°ΡΠ΅ Π½Π΅ΠΎΠ΄ΡΠ΅ΡΠ΅Π½ΠΈΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΠΌΠ°
ΠΠΎ ΠΏΡΠ°Π²ΠΈΠ»Ρ, Π°ΠΊΠΎ Π½Π΅ΠΊΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΠ°Ρ ΡΠ΅ΡΡΡΡΠ° Π½Π΅ΠΌΠ° ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π½Ρ Π²ΡΠ΅Π΄Π½ΠΎΡΡ ΠΈ ΠΎΠ²Π°Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΠ°Ρ Π½ΠΈΡΠ΅ Π½Π°Π²Π΅Π΄Π΅Π½ Ρ ΠΌΠ°Π½ΠΈΡΠ΅ΡΡΡ, ΠΎΠ½Π΄Π° ΠΡΠΏΠΏΠ΅Ρ Π½Π΅ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠΈ ΠΎΠ²ΠΎ ΡΠ²ΠΎΡΡΡΠ²ΠΎ Π·Π° ΠΎΠ΄Π³ΠΎΠ²Π°ΡΠ°ΡΡΡΠΈ ΡΠ΅ΡΡΡΡ Π½Π° ΡΠ²ΠΎΡΡ. ΠΠ° ΠΏΡΠΈΠΌΠ΅Ρ, Π°ΠΊΠΎ ΡΠ΅ ΡΠ΅ΡΡΡΡ ΡΠΈΠΏΠ° ΡΠ°ΡΠ» ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΠ°Ρ Π½ΠΈΡΠ΅ Π½Π°Π²Π΅Π΄Π΅Π½ owner
, ΡΠ°Π΄Π° ΠΡΠΏΠΏΠ΅Ρ Π½Π΅ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠΈ Π²Π»Π°ΡΠ½ΠΈΠΊΠ° ΠΎΠ΄Π³ΠΎΠ²Π°ΡΠ°ΡΡΡΠ΅ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅.
Π£Π²ΠΎΠ΄ Ρ ΠΊΠ»Π°ΡΠ΅, Π²Π°ΡΠΈΡΠ°Π±Π»Π΅ ΠΈ Π΄Π΅ΡΠΈΠ½ΠΈΡΠΈΡΠ΅
ΠΡΠ΅ΡΠΏΠΎΡΡΠ°Π²ΠΈΠΌΠΎ Π΄Π° ΠΈΠΌΠ°ΠΌΠΎ Π½Π΅ΠΊΠΎΠ»ΠΈΠΊΠΎ ΡΠ²ΠΎΡΠΎΠ²Π° ΠΊΠΎΡΠΈ ΠΈΠΌΠ°ΡΡ ΠΈΡΡΠΈ Π΄Π΅ΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ΅, Π°Π»ΠΈ ΠΏΠΎΡΡΠΎΡΠ΅ ΠΈ ΡΠ°Π·Π»ΠΈΠΊΠ΅ - ΠΈΠ½Π°ΡΠ΅ Π±ΠΈΡΠΌΠΎ ΡΠ²Π΅ ΡΠΎ ΠΌΠΎΠ³Π»ΠΈ ΠΎΠΏΠΈΡΠ°ΡΠΈ Ρ ΡΠ΅Π΄Π½ΠΎΠΌ Π±Π»ΠΎΠΊΡ node {}
. ΠΠ°ΡΠ°Π²Π½ΠΎ, ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΎ ΠΊΠΎΠΏΠΈΡΠ°ΡΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½Π΅ Π΄Π΅Π»ΠΎΠ²Π΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ΅, Π°Π»ΠΈ Π³Π΅Π½Π΅ΡΠ°Π»Π½ΠΎ ΠΎΠ²ΠΎ ΡΠ΅ Π»ΠΎΡΠ΅ ΡΠ΅ΡΠ΅ΡΠ΅ - ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ° ΡΠ°ΡΡΠ΅, Π° Π°ΠΊΠΎ ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ ΠΎΠΏΡΡΠΈ Π΄Π΅ΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ΅, ΠΌΠΎΡΠ°ΡΠ΅ΡΠ΅ Π΄Π° ΡΡΠ΅ΡΡΡΠ΅ΡΠ΅ ΠΈΡΡΡ ΡΡΠ²Π°Ρ Π½Π° ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠ΅ΡΡΠ°. Π£ ΠΈΡΡΠΎ Π²ΡΠ΅ΠΌΠ΅, Π»Π°ΠΊΠΎ ΡΠ΅ ΠΏΠΎΠ³ΡΠ΅ΡΠΈΡΠΈ, Π° Π³Π΅Π½Π΅ΡΠ°Π»Π½ΠΎ, ΠΏΡΠΈΠ½ΡΠΈΠΏ ΠΠ Π (Π½Π΅ ΠΏΠΎΠ½Π°Π²ΡΠ°Ρ ΡΠ΅) ΡΠ΅ ΠΈΠ·ΠΌΠΈΡΡΠ΅Π½ Ρ ΡΠ°Π·Π»ΠΎΠ³ΠΎΠΌ.
ΠΠ° ΡΠ΅ΡΠ°Π²Π°ΡΠ΅ ΠΎΠ²ΠΎΠ³ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΏΠΎΡΡΠΎΡΠΈ ΡΠ°ΠΊΠ°Π² Π΄ΠΈΠ·Π°ΡΠ½ ΠΊΠ°ΠΎ ΠΊΠ»Π°ΡΠ°.
ΠΡΠ΅Π΄Π°Π²Π°ΡΠ°
ΠΡΠ²ΠΎ ΡΡΠ΅Π±Π° ΠΎΠΏΠΈΡΠ°ΡΠΈ ΠΊΠ»Π°ΡΡ. Π‘Π°ΠΌ ΠΎΠΏΠΈΡ Π½ΠΈΠ³Π΄Π΅ Π½Π΅ Π΄ΠΎΠ΄Π°ΡΠ΅ Π½ΠΈΠΊΠ°ΠΊΠ²Π΅ ΡΠ΅ΡΡΡΡΠ΅. ΠΠ»Π°ΡΠ° ΡΠ΅ ΠΎΠΏΠΈΡΠ°Π½Π° Ρ ΠΌΠ°Π½ΠΈΡΠ΅ΡΡΠΈΠΌΠ°:
# ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΊΠ»Π°ΡΡΠ° Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Ρ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ³ΠΎ ΡΠ»ΠΎΠ²Π° class ΠΈ Π΅Π³ΠΎ Π½Π°Π·Π²Π°Π½ΠΈΡ.
# ΠΠ°Π»ΡΡΠ΅ ΠΈΠ΄ΡΡ ΡΠ΅Π»ΠΎ ΠΊΠ»Π°ΡΡΠ° Π² ΡΠΈΠ³ΡΡΠ½ΡΡ
ΡΠΊΠΎΠ±ΠΊΠ°Ρ
.
class example_class {
...
}
ΠΠ°ΠΊΠΎΠ½ ΠΎΠ²ΠΎΠ³Π°, ΠΊΠ»Π°ΡΠ° ΡΠ΅ ΠΌΠΎΠΆΠ΅ ΠΊΠΎΡΠΈΡΡΠΈΡΠΈ:
# ΠΏΠ΅ΡΠ²ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ β Π² ΡΡΠΈΠ»Π΅ ΡΠ΅ΡΡΡΡΠ° Ρ ΡΠΈΠΏΠΎΠΌ class
class { 'example_class': }
# Π²ΡΠΎΡΠΎΠΉ Π²Π°ΡΠΈΠ°Π½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ β Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ include
include example_class
# ΠΏΡΠΎ ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΡΡΠΈΡ
Π΄Π²ΡΡ
Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ² Π±ΡΠ΄Π΅Ρ ΡΠ°ΡΡΠΊΠ°Π·Π°Π½ΠΎ Π΄Π°Π»ΡΡΠ΅
ΠΡΠΈΠΌΠ΅Ρ ΠΈΠ· ΠΏΡΠ΅ΡΡ ΠΎΠ΄Π½ΠΎΠ³ Π·Π°Π΄Π°ΡΠΊΠ° - ΠΏΡΠ΅ΠΌΠ΅ΡΡΠΈΠΌΠΎ ΠΈΠ½ΡΡΠ°Π»Π°ΡΠΈΡΡ ΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡ Π½Π³ΠΈΠ½ΠΊ-Π° Ρ ΠΊΠ»Π°ΡΡ:
class nginx_example {
package { 'nginx':
ensure => installed,
}
-> file { '/etc/nginx':
ensure => directory,
source => 'puppet:///modules/example/nginx-conf',
recure => true,
purge => true,
force => true,
}
~> service { 'nginx':
ensure => running,
enable => true,
}
}
node 'server2.testdomain' {
include nginx_example
}
ΠΡΠΎΠΌΠ΅Π½ΡΠΈΠ²Π΅
ΠΠ»Π°ΡΠ° ΠΈΠ· ΠΏΡΠ΅ΡΡ ΠΎΠ΄Π½ΠΎΠ³ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΡΠΎΠΏΡΡΠ΅ Π½ΠΈΡΠ΅ ΡΠ»Π΅ΠΊΡΠΈΠ±ΠΈΠ»Π½Π° ΡΠ΅Ρ ΡΠ²Π΅ΠΊ Π΄ΠΎΠ½ΠΎΡΠΈ ΠΈΡΡΡ Π½Π³ΠΈΠ½ΠΊ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡ. Π₯Π°ΡΠ΄Π΅ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΠΌΠΎ ΠΏΡΡΠ°ΡΡ Π΄ΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π΅ ΠΏΡΠΎΠΌΠ΅Π½ΡΠΈΠ²Π΅, ΠΎΠ½Π΄Π° ΡΠ΅ ΠΎΠ²Π° ΠΊΠ»Π°ΡΠ° ΠΌΠΎΠΆΠ΅ ΠΊΠΎΡΠΈΡΡΠΈΡΠΈ Π·Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅ Π½Π³ΠΈΠ½ΠΊ-Π° ΡΠ° Π±ΠΈΠ»ΠΎ ΠΊΠΎΡΠΎΠΌ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠΎΠΌ.
Π’ΠΎ ΡΠ΅ ΠΌΠΎΠΆΠ΅ ΡΡΠΈΠ½ΠΈΡΠΈ
ΠΠ°ΠΆΡΠ°: ΠΏΡΠΎΠΌΠ΅Π½ΡΠΈΠ²Π΅ Ρ ΠΡΠΏΠΏΠ΅Ρ-Ρ ΡΡ Π½Π΅ΠΏΡΠΎΠΌΠ΅Π½ΡΠΈΠ²Π΅!
ΠΠΎΡΠ΅Π΄ ΡΠΎΠ³Π°, ΠΏΡΠΎΠΌΠ΅Π½ΡΠΈΠ²ΠΎΡ ΡΠ΅ ΠΌΠΎΠΆΠ΅ ΠΏΡΠΈΡΡΡΠΏΠΈΡΠΈ ΡΠ΅ΠΊ Π½Π°ΠΊΠΎΠ½ ΡΡΠΎ ΡΠ΅ Π΄Π΅ΠΊΠ»Π°ΡΠΈΡΠ°Π½Π°, ΠΈΠ½Π°ΡΠ΅ ΡΠ΅ Π²ΡΠ΅Π΄Π½ΠΎΡΡ ΠΏΡΠΎΠΌΠ΅Π½ΡΠΈΠ²Π΅ Π±ΠΈΡΠΈ undef
.
ΠΡΠΈΠΌΠ΅Ρ ΡΠ°Π΄Π° ΡΠ° ΠΏΡΠΎΠΌΠ΅Π½ΡΠΈΠ²ΠΈΠΌ:
# ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
$variable = 'value'
$var2 = 1
$var3 = true
$var4 = undef
# ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
$var5 = $var6
file { '/tmp/text': content => $variable }
# ΠΈΠ½ΡΠ΅ΡΠΏΠΎΠ»ΡΡΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
β ΡΠ°ΡΠΊΡΡΡΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
Π² ΡΡΡΠΎΠΊΠ°Ρ
. Π Π°Π±ΠΎΡΠ°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ Π² Π΄Π²ΠΎΠΉΠ½ΡΡ
ΠΊΠ°Π²ΡΡΠΊΠ°Ρ
!
$var6 = "Variable with name variable has value ${variable}"
ΠΡΡΠΊΠ° ΠΈΠΌΠ° ΠΈΠΌΠ΅Π½ΡΠΊΠΈΡ ΠΏΡΠΎΡΡΠΎΡΠ°, Π° Π²Π°ΡΠΈΡΠ°Π±Π»Π΅, ΡΡ ΠΎΠ΄Π½ΠΎ ΡΠΎΠΌΠ΅, ΠΈΠΌΠ°ΡΡ ΠΎΠ±Π»Π°ΡΡ Π²ΠΈΠ΄ΡΠΈΠ²ΠΎΡΡΠΈ: ΠΡΠΎΠΌΠ΅Π½ΡΠΈΠ²Π° ΡΠ° ΠΈΡΡΠΈΠΌ ΠΈΠΌΠ΅Π½ΠΎΠΌ ΠΌΠΎΠΆΠ΅ Π±ΠΈΡΠΈ Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°Π½Π° Ρ ΡΠ°Π·Π»ΠΈΡΠΈΡΠΈΠΌ ΠΈΠΌΠ΅Π½ΡΠΊΠΈΠΌ ΠΏΡΠΎΡΡΠΎΡΠΈΠΌΠ°. ΠΡΠΈΠ»ΠΈΠΊΠΎΠΌ ΡΠ΅ΡΠ°Π²Π°ΡΠ° Π²ΡΠ΅Π΄Π½ΠΎΡΡΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΡΠΈΠ²Π΅, ΠΏΡΠΎΠΌΠ΅Π½ΡΠΈΠ²Π° ΡΠ΅ ΠΏΡΠ΅ΡΡΠ°ΠΆΡΡΠ΅ Ρ ΡΡΠ΅Π½ΡΡΠ½ΠΎΠΌ ΠΈΠΌΠ΅Π½ΡΠΊΠΎΠΌ ΠΏΡΠΎΡΡΠΎΡΡ, Π·Π°ΡΠΈΠΌ Ρ Π·Π°ΡΠ²ΠΎΡΠ΅Π½ΠΎΠΌ ΠΈΠΌΠ΅Π½ΡΠΊΠΎΠΌ ΠΏΡΠΎΡΡΠΎΡΡ ΠΈ ΡΠ°ΠΊΠΎ Π΄Π°ΡΠ΅.
ΠΡΠΈΠΌΠ΅ΡΠΈ ΠΈΠΌΠ΅Π½ΡΠΊΠΎΠ³ ΠΏΡΠΎΡΡΠΎΡΠ°:
- Π³Π»ΠΎΠ±Π°Π»Π½ΠΎ - ΠΏΡΠΎΠΌΠ΅Π½ΡΠΈΠ²Π΅ Π²Π°Π½ ΠΎΠΏΠΈΡΠ° ΠΊΠ»Π°ΡΠ΅ ΠΈΠ»ΠΈ ΡΠ²ΠΎΡΠ° ΠΈΠ΄Ρ ΡΠ°ΠΌΠΎ;
- ΠΈΠΌΠ΅Π½ΡΠΊΠΈ ΠΏΡΠΎΡΡΠΎΡ ΡΠ²ΠΎΡΠ° Ρ ΠΎΠΏΠΈΡΡ ΡΠ²ΠΎΡΠ°;
- ΠΈΠΌΠ΅Π½ΡΠΊΠΈ ΠΏΡΠΎΡΡΠΎΡ ΠΊΠ»Π°ΡΠ΅ Ρ ΠΎΠΏΠΈΡΡ ΠΊΠ»Π°ΡΠ΅.
ΠΠ° Π±ΠΈΡΡΠ΅ ΠΈΠ·Π±Π΅Π³Π»ΠΈ Π΄Π²ΠΎΡΠΌΠΈΡΠ»Π΅Π½ΠΎΡΡ ΠΏΡΠΈΠ»ΠΈΠΊΠΎΠΌ ΠΏΡΠΈΡΡΡΠΏΠ° ΠΏΡΠΎΠΌΠ΅Π½ΡΠΈΠ²ΠΎΡ, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π½Π°Π²Π΅Π΄Π΅ΡΠ΅ ΠΈΠΌΠ΅Π½ΡΠΊΠΈ ΠΏΡΠΎΡΡΠΎΡ Ρ ΠΈΠΌΠ΅Π½Ρ ΠΏΡΠΎΠΌΠ΅Π½ΡΠΈΠ²Π΅:
# ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ Π±Π΅Π· ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° ΠΈΠΌΡΠ½
$var
# ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ Π² Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠΌ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅ ΠΈΠΌΡΠ½
$::var
# ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ Π² ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅ ΠΈΠΌΡΠ½ ΠΊΠ»Π°ΡΡΠ°
$classname::var
$::classname::var
Π₯Π°ΡΠ΄Π΅ Π΄Π° ΡΠ΅ ΡΠ»ΠΎΠΆΠΈΠΌΠΎ Π΄Π° ΠΏΡΡ Π΄ΠΎ Π½Π³ΠΈΠ½ΠΊ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ΅ Π»Π΅ΠΆΠΈ Ρ ΠΏΡΠΎΠΌΠ΅Π½ΡΠΈΠ²ΠΎΡ $nginx_conf_source
. Π’Π°Π΄Π° ΡΠ΅ ΠΊΠ»Π°ΡΠ° ΠΈΠ·Π³Π»Π΅Π΄Π°ΡΠΈ ΠΎΠ²Π°ΠΊΠΎ:
class nginx_example {
package { 'nginx':
ensure => installed,
}
-> file { '/etc/nginx':
ensure => directory,
source => $nginx_conf_source, # Π·Π΄Π΅ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π²ΠΌΠ΅ΡΡΠΎ ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ
recure => true,
purge => true,
force => true,
}
~> service { 'nginx':
ensure => running,
enable => true,
}
}
node 'server2.testdomain' {
$nginx_conf_source = 'puppet:///modules/example/nginx-conf'
include nginx_example
}
ΠΠ΅ΡΡΡΠΈΠΌ, Π΄Π°ΡΠΈ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ΅ Π»ΠΎΡ ΡΠ΅Ρ ΠΏΠΎΡΡΠΎΡΠΈ Π½Π΅ΠΊΠ° βΡΠ°ΡΠ½Π° ΡΠ°Π·Π½Π°ΡΠ°β Π΄Π° ΡΠ΅ Π½Π΅Π³Π΄Π΅ ΡΠ½ΡΡΠ°Ρ ΠΊΠ»Π°ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΡΠΈΠ²Π° ΡΠ° ΡΠ°ΠΊΠ²ΠΈΠΌ ΠΈ ΡΠ°ΠΊΠ²ΠΈΠΌ ΠΈΠΌΠ΅Π½ΠΎΠΌ. ΠΠ½ΠΎΠ³ΠΎ ΡΠ΅ ΠΈΡΠΏΡΠ°Π²Π½ΠΈΡΠ΅ ΠΎΠ²ΠΎ Π·Π½Π°ΡΠ΅ ΡΡΠΈΠ½ΠΈΡΠΈ ΠΎΠΏΡΡΠΈΠΌ β ΠΊΠ»Π°ΡΠ΅ ΠΌΠΎΠ³Ρ ΠΈΠΌΠ°ΡΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ΅.
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ ΠΊΠ»Π°ΡΠ΅ ΡΡ ΠΏΡΠΎΠΌΠ΅Π½ΡΠΈΠ²Π΅ Ρ ΠΈΠΌΠ΅Π½ΡΠΊΠΎΠΌ ΠΏΡΠΎΡΡΠΎΡΡ ΠΊΠ»Π°ΡΠ΅, Π½Π°Π²Π΅Π΄Π΅Π½Π΅ ΡΡ Ρ Π·Π°Π³Π»Π°Π²ΡΡ ΠΊΠ»Π°ΡΠ΅ ΠΈ ΠΌΠΎΠ³Ρ ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈΡΠΈ ΠΊΠ°ΠΎ ΠΎΠ±ΠΈΡΠ½Π΅ ΠΏΡΠΎΠΌΠ΅Π½ΡΠΈΠ²Π΅ Ρ ΡΠ΅Π»Ρ ΠΊΠ»Π°ΡΠ΅. ΠΡΠ΅Π΄Π½ΠΎΡΡΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΠ°ΡΠ° ΡΡ Π½Π°Π²Π΅Π΄Π΅Π½Π΅ ΠΊΠ°Π΄Π° ΡΠ΅ ΠΊΠ»Π°ΡΠ° ΠΊΠΎΡΠΈΡΡΠΈ Ρ ΠΌΠ°Π½ΠΈΡΠ΅ΡΡΡ.
ΠΠ°ΡΠ°ΠΌΠ΅ΡΠ°Ρ ΡΠ΅ ΠΌΠΎΠΆΠ΅ ΠΏΠΎΡΡΠ°Π²ΠΈΡΠΈ Π½Π° ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π½Ρ Π²ΡΠ΅Π΄Π½ΠΎΡΡ. ΠΠΊΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΠ°Ρ Π½Π΅ΠΌΠ° ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π½Ρ Π²ΡΠ΅Π΄Π½ΠΎΡΡ ΠΈ Π²ΡΠ΅Π΄Π½ΠΎΡΡ Π½ΠΈΡΠ΅ ΠΏΠΎΠ΄Π΅ΡΠ΅Π½Π° ΠΊΠ°Π΄Π° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ, ΡΠΎ ΡΠ΅ ΠΈΠ·Π°Π·Π²Π°ΡΠΈ Π³ΡΠ΅ΡΠΊΡ ΠΏΡΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡΠΈ.
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΠ·ΡΡΠΌΠΎ ΠΊΠ»Π°ΡΡ ΠΈΠ· Π³ΠΎΡΡΠ΅Π³ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΠΈ Π΄ΠΎΠ΄Π°ΡΠΌΠΎ Π΄Π²Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°: ΠΏΡΠ²ΠΈ, ΠΎΠ±Π°Π²Π΅Π·Π°Π½, ΡΠ΅ ΠΏΡΡΠ°ΡΠ° Π΄ΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ΅, Π° Π΄ΡΡΠ³ΠΈ, ΠΎΠΏΡΠΈΠΎΠ½ΠΈ, ΡΠ΅ Π½Π°Π·ΠΈΠ² ΠΏΠ°ΠΊΠ΅ΡΠ° ΡΠ° Π½Π³ΠΈΠ½ΠΊ-ΠΎΠΌ (Ρ ΠΠ΅Π±ΠΈΠ°Π½-Ρ, Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠΎΡΡΠΎΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠΈ nginx
, nginx-light
, nginx-full
).
# ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΎΠΏΠΈΡΡΠ²Π°ΡΡΡΡ ΡΡΠ°Π·Ρ ΠΏΠΎΡΠ»Π΅ ΠΈΠΌΠ΅Π½ΠΈ ΠΊΠ»Π°ΡΡΠ° Π² ΠΊΡΡΠ³Π»ΡΡ
ΡΠΊΠΎΠ±ΠΊΠ°Ρ
class nginx_example (
$conf_source,
$package_name = 'nginx-light', # ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ
) {
package { $package_name:
ensure => installed,
}
-> file { '/etc/nginx':
ensure => directory,
source => $conf_source,
recurse => true,
purge => true,
force => true,
}
~> service { 'nginx':
ensure => running,
enable => true,
}
}
node 'server2.testdomain' {
# Π΅ΡΠ»ΠΈ ΠΌΡ Ρ
ΠΎΡΠΈΠΌ Π·Π°Π΄Π°ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΊΠ»Π°ΡΡΠ°, ΡΡΠ½ΠΊΡΠΈΡ include Π½Π΅ ΠΏΠΎΠ΄ΠΎΠΉΠ΄ΡΡ* β Π½ΡΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ resource-style declaration
# *Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΠΏΠΎΠ΄ΠΎΠΉΠ΄ΡΡ, Π½ΠΎ ΠΏΡΠΎ ΡΡΠΎ ΡΠ°ΡΡΠΊΠ°ΠΆΡ Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΡΠ΅ΡΠΈΠΈ. ΠΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ "Hiera".
class { 'nginx_example':
conf_source => 'puppet:///modules/example/nginx-conf', # Π·Π°Π΄Π°ΡΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΊΠ»Π°ΡΡΠ° ΡΠΎΡΠ½ΠΎ ΡΠ°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π΄Π»Ρ Π΄ΡΡΠ³ΠΈΡ
ΡΠ΅ΡΡΡΡΠΎΠ²
}
}
Π£ ΠΡΠΏΠΏΠ΅Ρ-Ρ ΡΠ΅ ΠΊΡΡΠ°ΡΡ ΠΏΡΠΎΠΌΠ΅Π½ΡΠΈΠ²Π΅. ΠΠ΅Π΄ΠΈ
Π’ΠΈΠΏ ΡΠ΅ ΠΏΠΈΡΠ΅ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄Π½ΠΎ ΠΈΡΠΏΡΠ΅Π΄ ΠΈΠΌΠ΅Π½Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°:
class example (
String $param1,
Integer $param2,
Array $param3,
Hash $param4,
Hash[String, String] $param5,
) {
...
}
ΠΠ»Π°ΡΠ΅: ΡΠΊΡΡΡΡΡΡ Π½Π°Π·ΠΈΠ² ΠΊΠ»Π°ΡΠ΅ Ρ ΠΎΠ΄Π½ΠΎΡΡ Π½Π° ΡΠ»Π°ΡΡ{'ΡΠ»Π°ΡΡΠ½Π°ΠΌΠ΅':}
Π‘Π²Π°ΠΊΠ° ΠΊΠ»Π°ΡΠ° ΡΠ΅ ΡΠ΅ΡΡΡΡ ΡΠΈΠΏΠ° ΠΊΠ»Π°ΡΠ°. ΠΠ°ΠΎ ΠΈ ΠΊΠΎΠ΄ Π±ΠΈΠ»ΠΎ ΠΊΠΎΡΠ΅ Π΄ΡΡΠ³Π΅ Π²ΡΡΡΠ΅ ΡΠ΅ΡΡΡΡΠ°, Π½Π΅ ΠΌΠΎΠ³Ρ ΠΏΠΎΡΡΠΎΡΠ°ΡΠΈ Π΄Π²Π΅ ΠΈΠ½ΡΡΠ°Π½ΡΠ΅ ΠΈΡΡΠ΅ ΠΊΠ»Π°ΡΠ΅ Π½Π° ΠΈΡΡΠΎΠΌ ΡΠ²ΠΎΡΡ.
ΠΠΊΠΎ ΠΏΠΎΠΊΡΡΠ°ΡΠ΅ Π΄Π° Π΄ΠΎΠ΄Π°ΡΠ΅ ΠΊΠ»Π°ΡΡ ΠΈΡΡΠΎΠΌ ΡΠ²ΠΎΡΡ Π΄Π²Π° ΠΏΡΡΠ° ΠΊΠΎΡΠΈΡΡΠ΅ΡΠΈ class { 'classname':}
(Π±Π΅Π· ΡΠ°Π·Π»ΠΈΠΊΠ΅, ΡΠ° ΡΠ°Π·Π»ΠΈΡΠΈΡΠΈΠΌ ΠΈΠ»ΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½ΠΈΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΠΌΠ°), Π΄ΠΎΡΠΈ ΡΠ΅ Π΄ΠΎ Π³ΡΠ΅ΡΠΊΠ΅ Ρ ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡΠΈ. ΠΠ»ΠΈ Π°ΠΊΠΎ ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅ ΠΊΠ»Π°ΡΡ Ρ ΡΡΠΈΠ»Ρ ΡΠ΅ΡΡΡΡΠ°, ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΠ΄ΠΌΠ°Ρ
Π΅ΠΊΡΠΏΠ»ΠΈΡΠΈΡΠ½ΠΎ Π΄Π° ΠΏΠΎΠ΄Π΅ΡΠΈΡΠ΅ ΡΠ²Π΅ ΡΠ΅Π½Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ΅ Ρ ΠΌΠ°Π½ΠΈΡΠ΅ΡΡΡ.
ΠΠ΅ΡΡΡΠΈΠΌ, Π°ΠΊΠΎ ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅ include
, ΠΎΠ½Π΄Π° ΡΠ΅ ΠΊΠ»Π°ΡΠ° ΠΌΠΎΠΆΠ΅ Π΄ΠΎΠ΄Π°ΡΠΈ ΠΊΠΎΠ»ΠΈΠΊΠΎ Π³ΠΎΠ΄ ΠΏΡΡΠ° ΠΆΠ΅Π»ΠΈΡΠ΅. Π§ΠΈΡΠ΅Π½ΠΈΡΠ° ΡΠ΅ Π΄Π° include
ΡΠ΅ ΠΈΠ΄Π΅ΠΌΠΏΠΎΡΠ΅Π½ΡΠ½Π° ΡΡΠ½ΠΊΡΠΈΡΠ° ΠΊΠΎΡΠ° ΠΏΡΠΎΠ²Π΅ΡΠ°Π²Π° Π΄Π° Π»ΠΈ ΡΠ΅ ΠΊΠ»Π°ΡΠ° Π΄ΠΎΠ΄Π°ΡΠ° Ρ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠΌ. ΠΠΊΠΎ ΠΊΠ»Π°ΡΠ° Π½ΠΈΡΠ΅ Ρ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠΌΡ, Π΄ΠΎΠ΄Π°ΡΠ΅ ΡΠ΅, Π° Π°ΠΊΠΎ Π²Π΅Ρ ΠΏΠΎΡΡΠΎΡΠΈ, Π½Π΅ ΡΠ°Π΄ΠΈ Π½ΠΈΡΡΠ°. ΠΠ»ΠΈ Ρ ΡΠ»ΡΡΠ°ΡΡ ΡΠΏΠΎΡΡΠ΅Π±Π΅ include
ΠΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠ΄Π΅ΡΠΈΡΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ΅ ΠΊΠ»Π°ΡΠ΅ ΡΠΎΠΊΠΎΠΌ Π΄Π΅ΠΊΠ»Π°ΡΠ°ΡΠΈΡΠ΅ ΠΊΠ»Π°ΡΠ΅ - ΡΠ²ΠΈ ΠΏΠΎΡΡΠ΅Π±Π½ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ ΠΌΠΎΡΠ°ΡΡ Π±ΠΈΡΠΈ ΠΏΠΎΡΡΠ°Π²ΡΠ΅Π½ΠΈ Ρ Π΅ΠΊΡΡΠ΅ΡΠ½ΠΎΠΌ ΠΈΠ·Π²ΠΎΡΡ ΠΏΠΎΠ΄Π°ΡΠ°ΠΊΠ° - Π₯ΠΈΠ΅ΡΠ° ΠΈΠ»ΠΈ ΠΠΠ¦. Π ΡΠΈΠΌΠ° ΡΠ΅ΠΌΠΎ Π³ΠΎΠ²ΠΎΡΠΈΡΠΈ Ρ ΡΠ»Π΅Π΄Π΅ΡΠ΅ΠΌ ΡΠ»Π°Π½ΠΊΡ.
ΠΠ΅ΡΠΈΠ½ΠΈΡΠ΅
ΠΠ°ΠΎ ΡΡΠΎ ΡΠ΅ ΡΠ΅ΡΠ΅Π½ΠΎ Ρ ΠΏΡΠ΅ΡΡ ΠΎΠ΄Π½ΠΎΠΌ Π±Π»ΠΎΠΊΡ, ΠΈΡΡΠ° ΠΊΠ»Π°ΡΠ° Π½Π΅ ΠΌΠΎΠΆΠ΅ Π±ΠΈΡΠΈ ΠΏΡΠΈΡΡΡΠ½Π° Π½Π° ΡΠ²ΠΎΡΡ Π²ΠΈΡΠ΅ ΠΎΠ΄ ΡΠ΅Π΄Π½ΠΎΠΌ. ΠΠ΅ΡΡΡΠΈΠΌ, Ρ Π½Π΅ΠΊΠΈΠΌ ΡΠ»ΡΡΠ°ΡΠ΅Π²ΠΈΠΌΠ° ΠΌΠΎΡΠ°ΡΠ΅ Π±ΠΈΡΠΈ Ρ ΠΌΠΎΠ³ΡΡΠ½ΠΎΡΡΠΈ Π΄Π° ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅ ΠΈΡΡΠΈ Π±Π»ΠΎΠΊ ΠΊΠΎΠ΄Π° ΡΠ° ΡΠ°Π·Π»ΠΈΡΠΈΡΠΈΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΠΌΠ° Π½Π° ΠΈΡΡΠΎΠΌ ΡΠ²ΠΎΡΡ. ΠΡΡΠ³ΠΈΠΌ ΡΠ΅ΡΠΈΠΌΠ°, ΠΏΠΎΡΡΠΎΡΠΈ ΠΏΠΎΡΡΠ΅Π±Π° Π·Π° ΡΠΎΠΏΡΡΠ²Π΅Π½ΠΈΠΌ ΡΠΈΠΏΠΎΠΌ ΡΠ΅ΡΡΡΡΠ°.
ΠΠ° ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π° Π±ΠΈΡΠΌΠΎ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π»ΠΈ ΠΠ₯Π ΠΌΠΎΠ΄ΡΠ», Ρ ΠΠ²ΠΈΡΠΎ-Ρ ΡΠ°Π΄ΠΈΠΌΠΎ ΡΠ»Π΅Π΄Π΅ΡΠ΅:
- ΠΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΡΠ΅ ΠΏΠ°ΠΊΠ΅Ρ ΡΠ° ΠΎΠ²ΠΈΠΌ ΠΌΠΎΠ΄ΡΠ»ΠΎΠΌ.
- Π₯Π°ΡΠ΄Π΅ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΠΌΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Ρ Π΄Π°ΡΠΎΡΠ΅ΠΊΡ Π·Π° ΠΎΠ²Π°Ρ ΠΌΠΎΠ΄ΡΠ».
- ΠΡΠ΅ΠΈΡΠ°ΠΌΠΎ ΡΠΈΠΌΠ±ΠΎΠ»ΠΈΡΠΊΡ Π²Π΅Π·Ρ Π΄ΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ΅ Π·Π° ΠΏΡ ΠΏ-ΡΠΏΠΌ.
- ΠΡΠ΅ΠΈΡΠ°ΠΌΠΎ ΡΠΈΠΌΠ±ΠΎΠ»ΠΈΡΠΊΡ Π²Π΅Π·Ρ Π΄ΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ΅ Π·Π° ΠΏΡ ΠΏ ΡΠ»ΠΈ.
Π£ ΡΠ°ΠΊΠ²ΠΈΠΌ ΡΠ»ΡΡΠ°ΡΠ΅Π²ΠΈΠΌΠ°, Π΄ΠΈΠ·Π°ΡΠ½ ΠΊΠ°ΠΎ Π½ΠΏΡ $title
, Π³Π΄Π΅ ΠΈΠ΄Π΅ ΠΈΠΌΠ΅ ΡΠ΅ΡΡΡΡΠ° ΠΊΠ°Π΄Π° ΡΠ΅ Π΄Π΅ΠΊΠ»Π°ΡΠΈΡΠ°Π½ΠΎ. ΠΠ°ΠΎ ΠΈΡ ΡΠ»ΡΡΠ°ΡΡ ΠΊΠ»Π°ΡΠ°, Π΄Π΅ΡΠΈΠ½ΠΈΡΠΈΡΠ° ΡΠ΅ ΠΏΡΠ²ΠΎ ΠΌΠΎΡΠ° ΠΎΠΏΠΈΡΠ°ΡΠΈ, Π½Π°ΠΊΠΎΠ½ ΡΠ΅Π³Π° ΡΠ΅ ΠΌΠΎΠΆΠ΅ ΠΊΠΎΡΠΈΡΡΠΈΡΠΈ.
ΠΠΎΡΠ΅Π΄Π½ΠΎΡΡΠ°Π²ΡΠ΅Π½ΠΈ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ° ΠΌΠΎΠ΄ΡΠ»ΠΎΠΌ Π·Π° ΠΠ₯Π:
define php74::module (
$php_module_name = $title,
$php_package_name = "php7.4-${title}",
$version = 'installed',
$priority = '20',
$data = "extension=${title}.son",
$php_module_path = '/etc/php/7.4/mods-available',
) {
package { $php_package_name:
ensure => $version,
install_options => ['-o', 'DPkg::NoTriggers=true'], # ΡΡΠΈΠ³Π³Π΅ΡΡ Π΄Π΅Π±ΠΈΠ°Π½ΠΎΠ²ΡΠΊΠΈΡ
php-ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² ΡΠ°ΠΌΠΈ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠΈΠΌΠ»ΠΈΠ½ΠΊΠΈ ΠΈ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΡΠ΅ΡΠ²ΠΈΡ php-fpm - Π½Π°ΠΌ ΡΡΠΎ Π½Π΅ Π½ΡΠΆΠ½ΠΎ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΈ ΡΠΈΠΌΠ»ΠΈΠ½ΠΊΠ°ΠΌΠΈ, ΠΈ ΡΠ΅ΡΠ²ΠΈΡΠΎΠΌ ΠΌΡ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Puppet
}
-> file { "${php_module_path}/${php_module_name}.ini":
ensure => $ensure,
content => $data,
}
file { "/etc/php/7.4/cli/conf.d/${priority}-${php_module_name}.ini":
ensure => link,
target => "${php_module_path}/${php_module_name}.ini",
}
file { "/etc/php/7.4/fpm/conf.d/${priority}-${php_module_name}.ini":
ensure => link,
target => "${php_module_path}/${php_module_name}.ini",
}
}
node server3.testdomain {
php74::module { 'sqlite3': }
php74::module { 'amqp': php_package_name => 'php-amqp' }
php74::module { 'msgpack': priority => '10' }
}
ΠΠ°ΡΠ»Π°ΠΊΡΠΈ Π½Π°ΡΠΈΠ½ Π΄Π° ΡΡ Π²Π°ΡΠΈΡΠ΅ Π³ΡΠ΅ΡΠΊΡ ΠΡΠΏΠ»ΠΈΡΠ°ΡΠ΅ Π΄Π΅ΡΠ»Π°ΡΠ°ΡΠΈΠΎΠ½ ΡΠ΅ Ρ ΠΠ΅ΡΠΈΠ½Π΅. ΠΠ²ΠΎ ΡΠ΅ Π΄Π΅ΡΠ°Π²Π° Π°ΠΊΠΎ Π΄Π΅ΡΠΈΠ½ΠΈΡΠΈΡΠ° ΠΈΠΌΠ° ΡΠ΅ΡΡΡΡ ΡΠ° ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ½ΠΈΠΌ ΠΈΠΌΠ΅Π½ΠΎΠΌ, Π° ΠΏΠΎΡΡΠΎΡΠ΅ Π΄Π²Π΅ ΠΈΠ»ΠΈ Π²ΠΈΡΠ΅ ΠΈΠ½ΡΡΠ°Π½ΡΠΈ ΠΎΠ²Π΅ Π΄Π΅ΡΠΈΠ½ΠΈΡΠΈΡΠ΅ Π½Π° Π½Π΅ΠΊΠΎΠΌ ΡΠ²ΠΎΡΡ.
ΠΠ°ΠΊΠΎ ΡΠ΅ Π·Π°ΡΡΠΈΡΠΈΡΠΈ ΠΎΠ΄ ΠΎΠ²ΠΎΠ³Π°: ΡΠ²ΠΈ ΡΠ΅ΡΡΡΡΠΈ ΡΠ½ΡΡΠ°Ρ Π΄Π΅ΡΠΈΠ½ΠΈΡΠΈΡΠ΅ ΠΌΠΎΡΠ°ΡΡ ΠΈΠΌΠ°ΡΠΈ Π½Π°Π·ΠΈΠ² Ρ Π·Π°Π²ΠΈΡΠ½ΠΎΡΡΠΈ ΠΎΠ΄ ΡΠΎΠ³Π° $title
. ΠΠ»ΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π° ΡΠ΅ ΠΈΠ΄Π΅ΠΌΠΏΠΎΡΠ΅Π½ΡΠ½ΠΎ Π΄ΠΎΠ΄Π°Π²Π°ΡΠ΅ ΡΠ΅ΡΡΡΡΠ°, Ρ Π½Π°ΡΡΠ΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΈΡΠ΅ΠΌ ΡΠ»ΡΡΠ°ΡΡ, Π΄ΠΎΠ²ΠΎΡΠ½ΠΎ ΡΠ΅ ΠΏΡΠ΅ΠΌΠ΅ΡΡΠΈΡΠΈ ΡΠ΅ΡΡΡΡΠ΅ Π·Π°ΡΠ΅Π΄Π½ΠΈΡΠΊΠ΅ Π·Π° ΡΠ²Π΅ ΠΈΠ½ΡΡΠ°Π½ΡΠ΅ Π΄Π΅ΡΠΈΠ½ΠΈΡΠΈΡΠ΅ Ρ ΠΏΠΎΡΠ΅Π±Π½Ρ ΠΊΠ»Π°ΡΡ ΠΈ ΡΠΊΡΡΡΠΈΡΠΈ ΠΎΠ²Ρ ΠΊΠ»Π°ΡΡ Ρ Π΄Π΅ΡΠΈΠ½ΠΈΡΠΈΡΡ - ΡΡΠ½ΠΊΡΠΈΡΡ; include
ΠΈΠ΄Π΅ΠΌΠΏΠΎΡΠ΅Π½ΡΠ°Π½.
ΠΠΎΡΡΠΎΡΠ΅ ΠΈ Π΄ΡΡΠ³ΠΈ Π½Π°ΡΠΈΠ½ΠΈ Π΄Π° ΡΠ΅ ΠΏΠΎΡΡΠΈΠ³Π½Π΅ ΠΈΠ΄Π΅ΠΌΠΏΠΎΡΠ΅Π½ΡΠΈΡΠ° ΠΏΡΠΈΠ»ΠΈΠΊΠΎΠΌ Π΄ΠΎΠ΄Π°Π²Π°ΡΠ° ΡΠ΅ΡΡΡΡΠ°, Π½Π°ΠΈΠΌΠ΅ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΡΠ° defined
ΠΈ ensure_resources
, Π°Π»ΠΈ ΠΎ ΡΠΎΠΌΠ΅ ΡΡ Π²Π°ΠΌ ΡΠ΅ΡΠΈ Ρ ΡΠ»Π΅Π΄Π΅ΡΠΎΡ Π΅ΠΏΠΈΠ·ΠΎΠ΄ΠΈ.
ΠΠ°Π²ΠΈΡΠ½ΠΎΡΡΠΈ ΠΈ ΠΎΠ±Π°Π²Π΅ΡΡΠ΅ΡΠ° Π·Π° ΠΊΠ»Π°ΡΠ΅ ΠΈ Π΄Π΅ΡΠΈΠ½ΠΈΡΠΈΡΠ΅
ΠΠ»Π°ΡΠ΅ ΠΈ Π΄Π΅ΡΠΈΠ½ΠΈΡΠΈΡΠ΅ Π΄ΠΎΠ΄Π°ΡΡ ΡΠ»Π΅Π΄Π΅ΡΠ° ΠΏΡΠ°Π²ΠΈΠ»Π° ΡΡΠΊΠΎΠ²Π°ΡΡ Π·Π°Π²ΠΈΡΠ½ΠΎΡΡΠΈΠΌΠ° ΠΈ ΠΎΠ±Π°Π²Π΅ΡΡΠ΅ΡΠΈΠΌΠ°:
- Π·Π°Π²ΠΈΡΠ½ΠΎΡΡ ΠΎΠ΄ ΠΊΠ»Π°ΡΠ΅/Π΄Π΅ΡΠΈΠ½Π΅ Π΄ΠΎΠ΄Π°ΡΠ΅ Π·Π°Π²ΠΈΡΠ½ΠΎΡΡΠΈ ΠΎΠ΄ ΡΠ²ΠΈΡ ΡΠ΅ΡΡΡΡΠ° ΠΊΠ»Π°ΡΠ΅/Π΄Π΅ΡΠΈΠ½Π΅;
- Π·Π°Π²ΠΈΡΠ½ΠΎΡΡ ΠΊΠ»Π°ΡΠ΅/Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°ΡΠ° Π΄ΠΎΠ΄Π°ΡΠ΅ Π·Π°Π²ΠΈΡΠ½ΠΎΡΡΠΈ ΡΠ²ΠΈΠΌ ΡΠ΅ΡΡΡΡΠΈΠΌΠ° ΠΊΠ»Π°ΡΠ΅/Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°ΡΠ°;
- ΡΠ»Π°ΡΡ/Π΄Π΅ΡΠΈΠ½Π΅ Π½ΠΎΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΠ° ΠΎΠ±Π°Π²Π΅ΡΡΠ°Π²Π° ΡΠ²Π΅ ΡΠ΅ΡΡΡΡΠ΅ ΠΊΠ»Π°ΡΠ΅/Π΄Π΅ΡΠΈΠ½Π΅;
- ΡΠ»Π°ΡΡ/Π΄Π΅ΡΠΈΠ½Π΅ ΠΏΡΠ΅ΡΠΏΠ»Π°ΡΠ° ΡΠ΅ ΠΏΡΠ΅ΡΠΏΠ»Π°ΡΡΡΠ΅ Π½Π° ΡΠ²Π΅ ΡΠ΅ΡΡΡΡΠ΅ ΠΊΠ»Π°ΡΠ΅/Π΄Π΅ΡΠΈΠ½Π΅.
Π£ΡΠ»ΠΎΠ²Π½ΠΈ ΠΈΡΠΊΠ°Π·ΠΈ ΠΈ ΡΠ΅Π»Π΅ΠΊΡΠΎΡΠΈ
if
ΠΠ²Π΄Π΅ ΡΠ΅ ΡΠ΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΎ:
if ΠΠ«Π ΠΠΠΠΠΠ1 {
...
} elsif ΠΠ«Π ΠΠΠΠΠΠ2 {
...
} else {
...
}
Π°ΠΊΠΎ Π½Π΅
ΠΎΡΠΈΠΌ Π°ΠΊΠΎ ΡΠ΅ Π°ΠΊΠΎ ΡΠ΅ ΠΎΠ±ΡΠ½ΡΡΠΎ: Π±Π»ΠΎΠΊ ΠΊΠΎΠ΄Π° ΡΠ΅ Π±ΠΈΡΠΈ ΠΈΠ·Π²ΡΡΠ΅Π½ Π°ΠΊΠΎ ΡΠ΅ ΠΈΠ·ΡΠ°Π· Π»Π°ΠΆΠ°Π½.
unless ΠΠ«Π ΠΠΠΠΠΠ {
...
}
ΡΠ»ΡΡΠ°Ρ
ΠΠΈ ΡΡ Π½Π΅ΠΌΠ° Π½ΠΈΡΡΠ° ΠΊΠΎΠΌΠΏΠ»ΠΈΠΊΠΎΠ²Π°Π½ΠΎ. ΠΠΎΠΆΠ΅ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈΡΠΈ ΡΠ΅Π³ΡΠ»Π°ΡΠ½Π΅ Π²ΡΠ΅Π΄Π½ΠΎΡΡΠΈ (Π½ΠΈΠ·ΠΎΠ²Π΅, Π±ΡΠΎΡΠ΅Π²Π΅, ΠΈΡΠ΄.), ΡΠ΅Π³ΡΠ»Π°ΡΠ½Π΅ ΠΈΠ·ΡΠ°Π·Π΅ ΠΈ ΡΠΈΠΏΠΎΠ²Π΅ ΠΏΠΎΠ΄Π°ΡΠ°ΠΊΠ° ΠΊΠ°ΠΎ Π²ΡΠ΅Π΄Π½ΠΎΡΡΠΈ.
case ΠΠ«Π ΠΠΠΠΠΠ {
ΠΠΠΠ§ΠΠΠΠ1: { ... }
ΠΠΠΠ§ΠΠΠΠ2, ΠΠΠΠ§ΠΠΠΠ3: { ... }
default: { ... }
}
Π‘Π΅Π»Π΅ΠΊΡΠΎΡΠΈ
Π‘Π΅Π»Π΅ΠΊΡΠΎΡ ΡΠ΅ ΡΠ΅Π·ΠΈΡΠΊΠ° ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡΠ° ΡΠ»ΠΈΡΠ½Π° case
, Π°Π»ΠΈ ΡΠΌΠ΅ΡΡΠΎ Π΄Π° ΠΈΠ·Π²ΡΡΠΈ Π±Π»ΠΎΠΊ ΠΊΠΎΠ΄Π°, Π²ΡΠ°ΡΠ° Π²ΡΠ΅Π΄Π½ΠΎΡΡ.
$var = $othervar ? { 'val1' => 1, 'val2' => 2, default => 3 }
ΠΠΎΠ΄ΡΠ»ΠΈ
ΠΠ°Π΄Π° ΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ° ΠΌΠ°Π»Π°, Π»Π°ΠΊΠΎ ΡΠ΅ ΠΌΠΎΠΆΠ΅ Π΄ΡΠΆΠ°ΡΠΈ Ρ ΡΠ΅Π΄Π½ΠΎΠΌ ΠΌΠ°Π½ΠΈΡΠ΅ΡΡΡ. ΠΠ»ΠΈ ΡΡΠΎ Π²ΠΈΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ° ΠΎΠΏΠΈΡΡΡΠ΅ΠΌΠΎ, ΡΡΠΎ Π²ΠΈΡΠ΅ ΠΊΠ»Π°ΡΠ° ΠΈ ΡΠ²ΠΎΡΠΎΠ²Π° ΠΈΠΌΠ° Ρ ΠΌΠ°Π½ΠΈΡΠ΅ΡΡΡ, ΠΎΠ½ ΡΠ°ΡΡΠ΅ ΠΈ ΠΏΠΎΡΡΠ°ΡΠ΅ Π½Π΅Π·Π³ΠΎΠ΄Π°Π½ Π·Π° ΡΠ°Π΄.
ΠΠΎΡΠ΅Π΄ ΡΠΎΠ³Π°, ΠΏΠΎΡΡΠΎΡΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΠΏΠΎΠ½ΠΎΠ²Π½Π΅ ΡΠΏΠΎΡΡΠ΅Π±Π΅ ΠΊΠΎΠ΄Π° β ΠΊΠ°Π΄Π° ΡΠ΅ ΡΠ°Π² ΠΊΠΎΠ΄ Ρ ΡΠ΅Π΄Π½ΠΎΠΌ ΠΌΠ°Π½ΠΈΡΠ΅ΡΡΡ, ΡΠ΅ΡΠΊΠΎ ΡΠ΅ ΠΏΠΎΠ΄Π΅Π»ΠΈΡΠΈ ΠΎΠ²Π°Ρ ΠΊΠΎΠ΄ ΡΠ° Π΄ΡΡΠ³ΠΈΠΌΠ°. ΠΠ° Π±ΠΈ ΡΠ΅ΡΠΈΠΎ ΠΎΠ²Π° Π΄Π²Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°, ΠΡΠΏΠΏΠ΅Ρ ΠΈΠΌΠ° Π΅Π½ΡΠΈΡΠ΅Ρ ΠΊΠΎΡΠΈ ΡΠ΅ Π·ΠΎΠ²Π΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ.
ΠΠΎΠ΄ΡΠ»ΠΈ - ΠΎΠ²ΠΎ ΡΡ ΡΠΊΡΠΏΠΎΠ²ΠΈ ΠΊΠ»Π°ΡΠ°, Π΄Π΅ΡΠΈΠ½ΠΈΡΠΈΡΠ° ΠΈ Π΄ΡΡΠ³ΠΈΡ Π»ΡΡΠΊΠ°ΡΡΠΊΠΈΡ Π΅Π½ΡΠΈΡΠ΅ΡΠ° ΡΠΌΠ΅ΡΡΠ΅Π½ΠΈΡ Ρ ΠΏΠΎΡΠ΅Π±Π°Π½ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠΌ. ΠΡΡΠ³ΠΈΠΌ ΡΠ΅ΡΠΈΠΌΠ°, ΠΌΠΎΠ΄ΡΠ» ΡΠ΅ Π½Π΅Π·Π°Π²ΠΈΡΠ°Π½ Π΄Π΅ΠΎ Π»ΡΡΠΊΠ°ΡΡΠΊΠ΅ Π»ΠΎΠ³ΠΈΠΊΠ΅. ΠΠ° ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠΎΠΆΠ΅ ΠΏΠΎΡΡΠΎΡΠ°ΡΠΈ ΠΌΠΎΠ΄ΡΠ» Π·Π° ΡΠ°Π΄ ΡΠ° Π½Π³ΠΈΠ½ΠΊ-ΠΎΠΌ, ΠΈ ΠΎΠ½ ΡΠ΅ ΡΠ°Π΄ΡΠΆΠ°ΡΠΈ ΠΎΠ½ΠΎ ΠΈ ΡΠ°ΠΌΠΎ ΠΎΠ½ΠΎ ΡΡΠΎ ΡΠ΅ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎ Π·Π° ΡΠ°Π΄ ΡΠ° Π½Π³ΠΈΠ½ΠΊ-ΠΎΠΌ, ΠΈΠ»ΠΈ ΠΌΠΎΠΆΠ΅ ΠΏΠΎΡΡΠΎΡΠ°ΡΠΈ ΠΌΠΎΠ΄ΡΠ» Π·Π° ΡΠ°Π΄ ΡΠ° ΠΠ₯Π-ΠΎΠΌ ΠΈ ΡΠ°ΠΊΠΎ Π΄Π°ΡΠ΅.
ΠΠΎΠ΄ΡΠ»ΠΈ ΡΡ Π²Π΅ΡΠ·ΠΈΠΎΠ½ΠΈΡΠ°Π½ΠΈ, Π° ΡΠ°ΠΊΠΎΡΠ΅ ΡΡ ΠΏΠΎΠ΄ΡΠΆΠ°Π½Π΅ Π·Π°Π²ΠΈΡΠ½ΠΎΡΡΠΈ ΠΌΠΎΠ΄ΡΠ»Π° ΡΠ΅Π΄Π°Π½ ΠΎΠ΄ Π΄ΡΡΠ³ΠΎΠ³. ΠΠΎΡΡΠΎΡΠΈ ΠΎΡΠ²ΠΎΡΠ΅Π½ΠΎ ΡΠΏΡΠ΅ΠΌΠΈΡΡΠ΅ ΠΌΠΎΠ΄ΡΠ»Π° -
ΠΠ° Π»ΡΡΠΊΠ°ΡΡΠΊΠΎΠΌ ΡΠ΅ΡΠ²Π΅ΡΡ, ΠΌΠΎΠ΄ΡΠ»ΠΈ ΡΠ΅ Π½Π°Π»Π°Π·Π΅ Ρ ΠΏΠΎΠ΄Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠΌΡ ΠΌΠΎΠ΄ΡΠ»ΠΈ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ³ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠΌΠ°. Π£Π½ΡΡΠ°Ρ ΡΠ²Π°ΠΊΠΎΠ³ ΠΌΠΎΠ΄ΡΠ»Π° ΠΏΠΎΡΡΠΎΡΠΈ ΡΡΠ°Π½Π΄Π°ΡΠ΄Π½Π° ΡΠ΅ΠΌΠ° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠΌΠ° - ΠΌΠ°Π½ΠΈΡΠ΅ΡΡΠΈ, Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅, ΡΠ°Π±Π»ΠΎΠ½ΠΈ, Π»ΠΈΠ± ΠΈΡΠ΄.
Π‘ΡΡΡΠΊΡΡΡΠ° Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅ Ρ ΠΌΠΎΠ΄ΡΠ»Ρ
ΠΠΎΡΠ΅Π½ ΠΌΠΎΠ΄ΡΠ»Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ°Π΄ΡΠΆΠΈ ΡΠ»Π΅Π΄Π΅ΡΠ΅ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠΌΠ΅ ΡΠ° ΠΎΠΏΠΈΡΠ½ΠΈΠΌ ΠΈΠΌΠ΅Π½ΠΈΠΌΠ°:
manifests
- ΡΠ°Π΄ΡΠΆΠΈ ΠΌΠ°Π½ΠΈΡΠ΅ΡΡΠ΅files
- ΡΠ°Π΄ΡΠΆΠΈ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅templates
- ΡΠ°Π΄ΡΠΆΠΈ ΡΠ°Π±Π»ΠΎΠ½Π΅lib
β ΡΠ°Π΄ΡΠΆΠΈ Π ΡΠ±ΠΈ ΠΊΠΎΠ΄
ΠΠ²ΠΎ Π½ΠΈΡΠ΅ ΠΏΠΎΡΠΏΡΠ½Π° Π»ΠΈΡΡΠ° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠΌΠ° ΠΈ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ°, Π°Π»ΠΈ ΡΠ΅ Π·Π° ΡΠ°Π΄Π° Π΄ΠΎΠ²ΠΎΡΠ½Π° Π·Π° ΠΎΠ²Π°Ρ ΡΠ»Π°Π½Π°ΠΊ.
ΠΠΌΠ΅Π½Π° ΡΠ΅ΡΡΡΡΠ° ΠΈ ΠΈΠΌΠ΅Π½Π° Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° Ρ ΠΌΠΎΠ΄ΡΠ»Ρ
Π Π΅ΡΡΡΡΠΈ (ΠΊΠ»Π°ΡΠ΅, Π΄Π΅ΡΠΈΠ½ΠΈΡΠΈΡΠ΅) Ρ ΠΌΠΎΠ΄ΡΠ»Ρ ΡΠ΅ Π½Π΅ ΠΌΠΎΠ³Ρ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°ΡΠΈ ΠΊΠ°ΠΊΠΎ Π³ΠΎΠ΄ ΠΆΠ΅Π»ΠΈΡΠ΅. ΠΠΎΡΠ΅Π΄ ΡΠΎΠ³Π°, ΠΏΠΎΡΡΠΎΡΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠ½Π° ΠΊΠΎΡΠ΅ΡΠΏΠΎΠ½Π΄Π΅Π½ΡΠΈΡΠ° ΠΈΠ·ΠΌΠ΅ΡΡ ΠΈΠΌΠ΅Π½Π° ΡΠ΅ΡΡΡΡΠ° ΠΈ ΠΈΠΌΠ΅Π½Π° Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅ Ρ ΠΊΠΎΡΠΎΡ ΡΠ΅ ΠΡΠΏΠΏΠ΅Ρ ΡΡΠ°ΠΆΠΈΡΠΈ ΠΎΠΏΠΈΡ ΡΠΎΠ³ ΡΠ΅ΡΡΡΡΠ°. ΠΠΊΠΎ ΠΏΡΠ΅ΠΊΡΡΠΈΡΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π° ΠΈΠΌΠ΅Π½ΠΎΠ²Π°ΡΠ°, ΠΎΠ½Π΄Π° ΠΡΠΏΠΏΠ΅Ρ ΡΠ΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΎ Π½Π΅ΡΠ΅ ΠΏΡΠΎΠ½Π°ΡΠΈ ΠΎΠΏΠΈΡ ΡΠ΅ΡΡΡΡΠ° ΠΈ Π΄ΠΎΠ±ΠΈΡΠ΅ΡΠ΅ Π³ΡΠ΅ΡΠΊΡ Ρ ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡΠΈ.
ΠΡΠ°Π²ΠΈΠ»Π° ΡΡ ΡΠ΅Π΄Π½ΠΎΡΡΠ°Π²Π½Π°:
- Π‘Π²ΠΈ ΡΠ΅ΡΡΡΡΠΈ Ρ ΠΌΠΎΠ΄ΡΠ»Ρ ΠΌΠΎΡΠ°ΡΡ Π±ΠΈΡΠΈ Ρ ΠΈΠΌΠ΅Π½ΡΠΊΠΎΠΌ ΠΏΡΠΎΡΡΠΎΡΡ ΠΌΠΎΠ΄ΡΠ»Π°. ΠΠΊΠΎ ΡΠ΅ ΠΌΠΎΠ΄ΡΠ» ΠΏΠΎΠ·ΠΎΠ²Π΅
foo
, ΠΎΠ½Π΄Π° Π±ΠΈ ΡΠ²ΠΈ ΡΠ΅ΡΡΡΡΠΈ Ρ ΡΠ΅ΠΌΡ ΡΡΠ΅Π±Π°Π»ΠΈ Π±ΠΈΡΠΈ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈfoo::<anything>
, ΠΈΠ»ΠΈ ΡΠ°ΠΌΠΎfoo
. - Π Π΅ΡΡΡΡ ΡΠ° ΠΈΠΌΠ΅Π½ΠΎΠΌ ΠΌΠΎΠ΄ΡΠ»Π° ΠΌΠΎΡΠ° Π±ΠΈΡΠΈ Ρ Π΄Π°ΡΠΎΡΠ΅ΡΠΈ
init.pp
. - ΠΠ° Π΄ΡΡΠ³Π΅ ΡΠ΅ΡΡΡΡΠ΅, ΡΠ΅ΠΌΠ° ΠΈΠΌΠ΅Π½ΠΎΠ²Π°ΡΠ° Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° ΡΠ΅ ΡΠ»Π΅Π΄Π΅ΡΠ°:
- ΠΏΡΠ΅ΡΠΈΠΊΡ ΡΠ° ΠΈΠΌΠ΅Π½ΠΎΠΌ ΠΌΠΎΠ΄ΡΠ»Π° ΡΠ΅ ΠΎΠ΄Π±Π°ΡΡΡΠ΅
- ΡΠ²Π΅ Π΄Π²ΠΎΡΠ°ΡΠΊΠ΅, Π°ΠΊΠΎ ΠΈΡ ΠΈΠΌΠ°, Π·Π°ΠΌΠ΅ΡΡΡΡ ΡΠ΅ ΠΊΠΎΡΠΈΠΌ ΡΡΡΠ°ΠΌΠ°
- Π΄ΠΎΠ΄Π°ΡΠ°ΠΊ ΡΠ΅ Π΄ΠΎΠ΄Π°Ρ
.pp
ΠΠΎΠΊΠ°Π·Π°ΡΡ Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΡ. Π Π΅ΡΠΈΠΌΠΎ Π΄Π° ΠΏΠΈΡΠ΅ΠΌ ΠΌΠΎΠ΄ΡΠ» nginx
. Π‘Π°Π΄ΡΠΆΠΈ ΡΠ»Π΅Π΄Π΅ΡΠ΅ ΡΠ΅ΡΡΡΡΠ΅:
- ΠΊΠ»Π°ΡΠ°
nginx
ΠΎΠΏΠΈΡΠ°Π½ΠΎ Ρ ΠΌΠ°Π½ΠΈΡΠ΅ΡΡΡinit.pp
; - ΠΊΠ»Π°ΡΠ°
nginx::service
ΠΎΠΏΠΈΡΠ°Π½ΠΎ Ρ ΠΌΠ°Π½ΠΈΡΠ΅ΡΡΡservice.pp
; - Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°ΡΠΈ
nginx::server
ΠΎΠΏΠΈΡΠ°Π½ΠΎ Ρ ΠΌΠ°Π½ΠΈΡΠ΅ΡΡΡserver.pp
; - Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°ΡΠΈ
nginx::server::location
ΠΎΠΏΠΈΡΠ°Π½ΠΎ Ρ ΠΌΠ°Π½ΠΈΡΠ΅ΡΡΡserver/location.pp
.
ΡΠ°Π±Π»ΠΎΠ½ΠΈ
Π‘ΠΈΠ³ΡΡΠ½ΠΎ ΠΈ ΡΠ°ΠΌΠΈ Π·Π½Π°ΡΠ΅ ΡΡΠ° ΡΡ ΡΠ°Π±Π»ΠΎΠ½ΠΈ, Π½Π΅ΡΡ ΠΈΡ
ΠΎΠ²Π΄Π΅ Π΄Π΅ΡΠ°ΡΠ½ΠΎ ΠΎΠΏΠΈΡΠΈΠ²Π°ΡΠΈ. ΠΠ»ΠΈ ΠΎΡΡΠ°Π²ΠΈΡΡ ΡΠΎ Π·Π° ΡΠ²Π°ΠΊΠΈ ΡΠ»ΡΡΠ°Ρ
ΠΠ°ΠΊΠΎ ΠΊΠΎΡΠΈΡΡΠΈΡΠΈ ΡΠ°Π±Π»ΠΎΠ½Π΅: ΠΠ½Π°ΡΠ΅ΡΠ΅ ΡΠ°Π±Π»ΠΎΠ½Π° ΡΠ΅ ΠΌΠΎΠΆΠ΅ ΠΏΡΠΎΡΠΈΡΠΈΡΠΈ ΠΏΠΎΠΌΠΎΡΡ ΡΡΠ½ΠΊΡΠΈΡΠ΅ template
, ΠΊΠΎΡΠΈ ΡΠ΅ ΠΏΡΠΎΡΠ»Π΅ΡΠ΅Π½ ΠΏΡΡΠ°ΡΠΎΠΌ Π΄ΠΎ ΡΠ°Π±Π»ΠΎΠ½Π°. ΠΠ° ΡΠ΅ΡΡΡΡΠ΅ ΡΠΈΠΏΠ° ΡΠ°ΡΠ» ΠΊΠΎΡΠΈΡΡΠΈ ΡΠ΅ Π·Π°ΡΠ΅Π΄Π½ΠΎ ΡΠ° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ content
. ΠΠ° ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΠ²Π°ΠΊΠΎ:
file { '/tmp/example': content => template('modulename/templatename.erb')
ΠΠΈΠ΅Π² ΠΏΠ°ΡΡ
<modulename>/<filename>
ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π° ΡΠ°ΡΠ» <rootdir>/modules/<modulename>/templates/<filename>
.
ΠΠΎΡΠ΅Π΄ ΡΠΎΠ³Π°, ΠΏΠΎΡΡΠΎΡΠΈ ΡΡΠ½ΠΊΡΠΈΡΠ° inline_template
β ΠΏΡΠΈΠΌΠ° ΡΠ΅ΠΊΡΡ ΡΠ°Π±Π»ΠΎΠ½Π° ΠΊΠ°ΠΎ ΡΠ½ΠΎΡ, Π° Π½Π΅ ΠΈΠΌΠ΅ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅.
Π£ ΠΎΠΊΠ²ΠΈΡΡ ΡΠ°Π±Π»ΠΎΠ½Π°, ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈΡΠΈ ΡΠ²Π΅ Π²Π°ΡΠΈΡΠ°Π±Π»Π΅ ΠΡΠΏΠΏΠ΅Ρ Ρ ΡΡΠ΅Π½ΡΡΠ½ΠΎΠΌ ΠΎΠΏΡΠ΅Π³Ρ.
ΠΡΠΏΠΏΠ΅Ρ ΠΏΠΎΠ΄ΡΠΆΠ°Π²Π° ΡΠ°Π±Π»ΠΎΠ½Π΅ Ρ ΠΠ Π ΠΈ ΠΠΠ ΡΠΎΡΠΌΠ°ΡΡ:
Π£ΠΊΡΠ°ΡΠΊΠΎ ΠΎ ΠΠ Π-Ρ
ΠΠΎΠ½ΡΡΠΎΠ»Π½Π΅ ΡΡΡΡΠΊΡΡΡΠ΅:
<%= ΠΠ«Π ΠΠΠΠΠΠ %>
β ΡΠ±Π°ΡΠΈΡΠ΅ Π²ΡΠ΅Π΄Π½ΠΎΡΡ ΠΈΠ·ΡΠ°Π·Π°<% ΠΠ«Π ΠΠΠΠΠΠ %>
β ΠΈΠ·ΡΠ°ΡΡΠ½Π°ΡΠΈ Π²ΡΠ΅Π΄Π½ΠΎΡΡ ΠΈΠ·ΡΠ°Π·Π° (Π±Π΅Π· ΡΠΌΠ΅ΡΠ°ΡΠ°). Π£ΡΠ»ΠΎΠ²Π½Π΅ ΠΈΠ·ΡΠ°Π²Π΅ (ΠΈΡ) ΠΈ ΠΏΠ΅ΡΡΠ΅ (ΡΠ²Π°ΠΊΠ°) ΠΎΠ±ΠΈΡΠ½ΠΎ ΠΈΠ΄Ρ ΠΎΠ²Π΄Π΅.<%# ΠΠΠΠΠΠΠ’ΠΠ ΠΠ %>
ΠΠ·ΡΠ°Π·ΠΈ Ρ ΠΠ Π-Ρ ΡΡ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈ Ρ Π ΡΠ±ΠΈ-Ρ (ΠΠ Π ΡΠ΅ Π·Π°ΠΏΡΠ°Π²ΠΎ ΠΠΌΠ±Π΅Π΄Π΄Π΅Π΄ Π ΡΠ±ΠΈ).
ΠΠ° Π±ΠΈΡΡΠ΅ ΠΏΡΠΈΡΡΡΠΏΠΈΠ»ΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΡΠΈΠ²ΠΈΠΌ ΠΈΠ· ΠΌΠ°Π½ΠΈΡΠ΅ΡΡΠ°, ΠΏΠΎΡΡΠ΅Π±Π½ΠΎ ΡΠ΅ Π΄Π° Π΄ΠΎΠ΄Π°ΡΠ΅ @
Π½Π° ΠΈΠΌΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΡΠΈΠ²Π΅. ΠΠ° Π±ΠΈΡΡΠ΅ ΡΠΊΠ»ΠΎΠ½ΠΈΠ»ΠΈ ΠΏΡΠ΅Π»ΠΎΠΌ ΡΠ΅Π΄Π° ΠΊΠΎΡΠΈ ΡΠ΅ ΠΏΠΎΡΠ°Π²ΡΡΡΠ΅ Π½Π°ΠΊΠΎΠ½ ΠΊΠΎΠ½ΡΡΠΎΠ»Π½Π΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡΠ΅, ΠΏΠΎΡΡΠ΅Π±Π½ΠΎ ΡΠ΅ Π΄Π° ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅ ΠΎΠ·Π½Π°ΠΊΡ Π·Π° Π·Π°ΡΠ²Π°ΡΠ°ΡΠ΅ -%>
.
ΠΡΠΈΠΌΠ΅Ρ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ° ΡΠ°Π±Π»ΠΎΠ½Π°
Π Π΅ΡΠΈΠΌΠΎ Π΄Π° ΠΏΠΈΡΠ΅ΠΌ ΠΌΠΎΠ΄ΡΠ» Π·Π° ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ ΠΠΎΠΎΠΠ΅Π΅ΠΏΠ΅Ρ-Π°. ΠΠ»Π°ΡΠ° ΠΎΠ΄Π³ΠΎΠ²ΠΎΡΠ½Π° Π·Π° ΠΊΡΠ΅ΠΈΡΠ°ΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ΅ ΠΈΠ·Π³Π»Π΅Π΄Π° ΠΎΡΠΏΡΠΈΠ»ΠΈΠΊΠ΅ ΠΎΠ²Π°ΠΊΠΎ:
class zookeeper::configure (
Array[String] $nodes,
Integer $port_client,
Integer $port_quorum,
Integer $port_leader,
Hash[String, Any] $properties,
String $datadir,
) {
file { '/etc/zookeeper/conf/zoo.cfg':
ensure => present,
content => template('zookeeper/zoo.cfg.erb'),
}
}
Π ΠΎΠ΄Π³ΠΎΠ²Π°ΡΠ°ΡΡΡΠΈ ΡΠ°Π±Π»ΠΎΠ½ zoo.cfg.erb
- Π’Π°ΠΊΠΎ:
<% if @nodes.length > 0 -%>
<% @nodes.each do |node, id| -%>
server.<%= id %>=<%= node %>:<%= @port_leader %>:<%= @port_quorum %>;<%= @port_client %>
<% end -%>
<% end -%>
dataDir=<%= @datadir %>
<% @properties.each do |k, v| -%>
<%= k %>=<%= v %>
<% end -%>
Π§ΠΈΡΠ΅Π½ΠΈΡΠ΅ ΠΈ ΡΠ³ΡΠ°ΡΠ΅Π½Π΅ Π²Π°ΡΠΈΡΠ°Π±Π»Π΅
Π§Π΅ΡΡΠΎ ΠΎΠ΄ΡΠ΅ΡΠ΅Π½ΠΈ Π΄Π΅ΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ΅ Π·Π°Π²ΠΈΡΠΈ ΠΎΠ΄ ΡΠΎΠ³Π° ΡΡΠ° ΡΠ΅ ΡΡΠ΅Π½ΡΡΠ½ΠΎ Π΄Π΅ΡΠ°Π²Π° Π½Π° ΡΠ²ΠΎΡΡ. ΠΠ° ΠΏΡΠΈΠΌΠ΅Ρ, Ρ Π·Π°Π²ΠΈΡΠ½ΠΎΡΡΠΈ ΠΎΠ΄ ΡΠΎΠ³Π° ΡΡΠ° ΡΠ΅ ΠΠ΅Π±ΠΈΠ°Π½ ΠΈΠ·Π΄Π°ΡΠ΅, ΠΏΠΎΡΡΠ΅Π±Π½ΠΎ ΡΠ΅ Π΄Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅ ΡΠ΅Π΄Π½Ρ ΠΈΠ»ΠΈ Π΄ΡΡΠ³Ρ Π²Π΅ΡΠ·ΠΈΡΡ ΠΏΠ°ΠΊΠ΅ΡΠ°. Π‘Π²Π΅ ΠΎΠ²ΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°Π΄Π³Π»Π΅Π΄Π°ΡΠΈ ΡΡΡΠ½ΠΎ, ΠΏΡΠ΅ΠΏΠΈΡΠΈΠ²Π°ΡΠ΅ΠΌ ΠΌΠ°Π½ΠΈΡΠ΅ΡΡΠ° Π°ΠΊΠΎ ΡΠ΅ ΡΠ²ΠΎΡΠΎΠ²ΠΈ ΠΏΡΠΎΠΌΠ΅Π½Π΅. ΠΠ»ΠΈ ΠΎΠ²ΠΎ Π½ΠΈΡΠ΅ ΠΎΠ·Π±ΠΈΡΠ°Π½ ΠΏΡΠΈΡΡΡΠΏ, Π°ΡΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡΠ° ΡΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ Π±ΠΎΡΠ°.
ΠΠ° Π±ΠΈ Π΄ΠΎΠ±ΠΈΠΎ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡΠ΅ ΠΎ ΡΠ²ΠΎΡΠΎΠ²ΠΈΠΌΠ°, ΠΡΠΏΠΏΠ΅Ρ ΠΈΠΌΠ° ΠΌΠ΅Ρ Π°Π½ΠΈΠ·Π°ΠΌ ΠΊΠΎΡΠΈ ΡΠ΅ Π·ΠΎΠ²Π΅ ΡΠΈΡΠ΅Π½ΠΈΡΠ΅. ΡΠΈΡΠ΅Π½ΠΈΡΠ΅ - ΠΎΠ²ΠΎ ΡΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡΠ° ΠΎ ΡΠ²ΠΎΡΡ, Π΄ΠΎΡΡΡΠΏΠ½Π° Ρ ΠΌΠ°Π½ΠΈΡΠ΅ΡΡΠΈΠΌΠ° Ρ ΠΎΠ±Π»ΠΈΠΊΡ ΠΎΠ±ΠΈΡΠ½ΠΈΡ ΠΏΡΠΎΠΌΠ΅Π½ΡΠΈΠ²ΠΈΡ Ρ Π³Π»ΠΎΠ±Π°Π»Π½ΠΎΠΌ ΠΏΡΠΎΡΡΠΎΡΡ ΠΈΠΌΠ΅Π½Π°. ΠΠ° ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΠΌΠ΅ Ρ ΠΎΡΡΠ°, Π²Π΅ΡΠ·ΠΈΡΠ° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΎΠ³ ΡΠΈΡΡΠ΅ΠΌΠ°, Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° ΠΏΡΠΎΡΠ΅ΡΠΎΡΠ°, Π»ΠΈΡΡΠ° ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊΠ°, Π»ΠΈΡΡΠ° ΠΌΡΠ΅ΠΆΠ½ΠΈΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΡΡΠ° ΠΈ ΡΠΈΡ ΠΎΠ²ΠΈΡ Π°Π΄ΡΠ΅ΡΠ° ΠΈ ΡΠΎΡ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠΎΠ³Π°. Π§ΠΈΡΠ΅Π½ΠΈΡΠ΅ ΡΡ Π΄ΠΎΡΡΡΠΏΠ½Π΅ Ρ ΠΌΠ°Π½ΠΈΡΠ΅ΡΡΠΈΠΌΠ° ΠΈ ΡΠ°Π±Π»ΠΎΠ½ΠΈΠΌΠ° ΠΊΠ°ΠΎ ΡΠ΅Π³ΡΠ»Π°ΡΠ½Π΅ Π²Π°ΡΠΈΡΠ°Π±Π»Π΅.
ΠΡΠΈΠΌΠ΅Ρ ΡΠ°Π΄Π° ΡΠ° ΡΠΈΡΠ΅Π½ΠΈΡΠ°ΠΌΠ°:
notify { "Running OS ${facts['os']['name']} version ${facts['os']['release']['full']}": }
# ΡΠ΅ΡΡΡΡ ΡΠΈΠΏΠ° notify ΠΏΡΠΎΡΡΠΎ Π²ΡΠ²ΠΎΠ΄ΠΈΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Π² Π»ΠΎΠ³
Π€ΠΎΡΠΌΠ°Π»Π½ΠΎ Π³Π»Π΅Π΄Π°Π½ΠΎ, ΡΠΈΡΠ΅Π½ΠΈΡΠ° ΠΈΠΌΠ° ΠΈΠΌΠ΅ (ΡΡΡΠΈΠ½Π³) ΠΈ Π²ΡΠ΅Π΄Π½ΠΎΡΡ (Π΄ΠΎΡΡΡΠΏΠ½ΠΈ ΡΡ ΡΠ°Π·Π»ΠΈΡΠΈΡΠΈ ΡΠΈΠΏΠΎΠ²ΠΈ: Π½ΠΈΠ·ΠΎΠ²ΠΈ, Π½ΠΈΠ·ΠΎΠ²ΠΈ, ΡΠ΅ΡΠ½ΠΈΡΠΈ). ΠΠ΅Π΄ΠΈ
Π’ΠΎΠΊΠΎΠΌ ΡΠ°Π΄Π°, ΠΌΠ°ΡΠΈΠΎΠ½Π΅ΡΡΠΊΠΈ Π°Π³Π΅Π½Ρ ΠΏΡΠ²ΠΎ ΠΊΠΎΠΏΠΈΡΠ° ΡΠ²Π΅ Π΄ΠΎΡΡΡΠΏΠ½Π΅ ΡΠ°ΠΊΡΠΏΡΠ°ΡΠ΅ ΡΠΈΡΠ΅Π½ΠΈΡΠ° ΡΠ° ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΏΠ°ΠΏΠ΅ΡΠ° Ρ ΡΠ²ΠΎΡ, Π½Π°ΠΊΠΎΠ½ ΡΠ΅Π³Π° ΠΈΡ ΠΏΠΎΠΊΡΠ΅ΡΠ΅ ΠΈ ΡΠ°ΡΠ΅ ΠΏΡΠΈΠΊΡΠΏΡΠ΅Π½Π΅ ΡΠΈΡΠ΅Π½ΠΈΡΠ΅ ΡΠ΅ΡΠ²Π΅ΡΡ; ΠΠ°ΠΊΠΎΠ½ ΡΠΎΠ³Π°, ΡΠ΅ΡΠ²Π΅Ρ ΠΏΠΎΡΠΈΡΠ΅ ΡΠ° ΡΠ°ΡΡΠ°Π²ΡΠ°ΡΠ΅ΠΌ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°.
Π§ΠΈΡΠ΅Π½ΠΈΡΠ΅ Ρ ΠΎΠ±Π»ΠΈΠΊΡ ΠΈΠ·Π²ΡΡΠ½ΠΈΡ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ°
Π’Π°ΠΊΠ²Π΅ ΡΠΈΡΠ΅Π½ΠΈΡΠ΅ ΡΡ ΡΠΌΠ΅ΡΡΠ΅Π½Π΅ Ρ ΠΌΠΎΠ΄ΡΠ»Π΅ Ρ ΠΈΠΌΠ΅Π½ΠΈΠΊΡ facts.d
. ΠΠ°ΡΠ°Π²Π½ΠΎ, Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅ ΠΌΠΎΡΠ°ΡΡ Π±ΠΈΡΠΈ ΠΈΠ·Π²ΡΡΠ½Π΅. ΠΠ°Π΄Π° ΡΠ΅ ΠΏΠΎΠΊΡΠ΅ΡΡ, ΠΌΠΎΡΠ°ΡΡ Π΄Π° ΠΈΠ·Π»Π°Π·Π΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡΠ΅ Ρ ΡΡΠ°Π½Π΄Π°ΡΠ΄Π½ΠΈ ΠΈΠ·Π»Π°Π· Ρ ΠΠΠΠ ΠΈΠ»ΠΈ ΡΠΎΡΠΌΠ°ΡΡ ΠΊΡΡΡ=Π²ΡΠ΅Π΄Π½ΠΎΡΡ.
ΠΠ΅ Π·Π°Π±ΠΎΡΠ°Π²ΠΈΡΠ΅ Π΄Π° ΡΠ΅ ΡΠΈΡΠ΅Π½ΠΈΡΠ΅ ΠΎΠ΄Π½ΠΎΡΠ΅ Π½Π° ΡΠ²Π΅ ΡΠ²ΠΎΡΠΎΠ²Π΅ ΠΊΠΎΡΠ΅ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠ΅ ΠΏΠΎΠΏΠ΅Ρ ΡΠ΅ΡΠ²Π΅Ρ Π½Π° ΠΊΠΎΡΠΈ ΡΠ΅ Π²Π°Ρ ΠΌΠΎΠ΄ΡΠ» ΡΠ°ΡΠΏΠΎΡΠ΅ΡΠ΅Π½. Π‘ΡΠΎΠ³Π°, Ρ ΡΠΊΡΠΈΠΏΡΠΈ, Π²ΠΎΠ΄ΠΈΡΠ΅ ΡΠ°ΡΡΠ½Π° Π΄Π° ΠΏΡΠΎΠ²Π΅ΡΠΈΡΠ΅ Π΄Π° Π»ΠΈ ΡΠΈΡΡΠ΅ΠΌ ΠΈΠΌΠ° ΡΠ²Π΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ΅ ΠΈ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅ Π½Π΅ΠΎΠΏΡ ΠΎΠ΄Π½Π΅ Π΄Π° Π²Π°ΡΠ° ΡΠΈΡΠ΅Π½ΠΈΡΠ° ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΠ΅.
#!/bin/sh
echo "testfact=success"
#!/bin/sh
echo '{"testyamlfact":"success"}'
Π ΡΠ±ΠΈ ΡΠ°ΡΡΡ
Π’Π°ΠΊΠ²Π΅ ΡΠΈΡΠ΅Π½ΠΈΡΠ΅ ΡΡ ΡΠΌΠ΅ΡΡΠ΅Π½Π΅ Ρ ΠΌΠΎΠ΄ΡΠ»Π΅ Ρ ΠΈΠΌΠ΅Π½ΠΈΠΊΡ lib/facter
.
# Π²ΡΡ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Ρ Π²ΡΠ·ΠΎΠ²Π° ΡΡΠ½ΠΊΡΠΈΠΈ Facter.add Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΡΠ°ΠΊΡΠ° ΠΈ Π±Π»ΠΎΠΊΠΎΠΌ ΠΊΠΎΠ΄Π°
Facter.add('ladvd') do
# Π² Π±Π»ΠΎΠΊΠ°Ρ
confine ΠΎΠΏΠΈΡΡΠ²Π°ΡΡΡΡ ΡΡΠ»ΠΎΠ²ΠΈΡ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠΌΠΎΡΡΠΈ ΡΠ°ΠΊΡΠ° β ΠΊΠΎΠ΄ Π²Π½ΡΡΡΠΈ Π±Π»ΠΎΠΊΠ° Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Π΅ΡΠ½ΡΡΡ true, ΠΈΠ½Π°ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ°ΠΊΡΠ° Π½Π΅ Π²ΡΡΠΈΡΠ»ΡΠ΅ΡΡΡ ΠΈ Π½Π΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ
confine do
Facter::Core::Execution.which('ladvdc') # ΠΏΡΠΎΠ²Π΅ΡΠΈΠΌ, ΡΡΠΎ Π² PATH Π΅ΡΡΡ ΡΠ°ΠΊΠΎΠΉ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΉ ΡΠ°ΠΉΠ»
end
confine do
File.socket?('/var/run/ladvd.sock') # ΠΏΡΠΎΠ²Π΅ΡΠΈΠΌ, ΡΡΠΎ Π΅ΡΡΡ ΡΠ°ΠΊΠΎΠΉ UNIX-domain socket
end
# Π² Π±Π»ΠΎΠΊΠ΅ setcode ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ°ΠΊΡΠ°
setcode do
hash = {}
if (out = Facter::Core::Execution.execute('ladvdc -b'))
out.split.each do |l|
line = l.split('=')
next if line.length != 2
name, value = line
hash[name.strip.downcase.tr(' ', '_')] = value.strip.chomp(''').reverse.chomp(''').reverse
end
end
hash # Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ Π² Π±Π»ΠΎΠΊΠ΅ setcode ΡΠ²Π»ΡΠ΅ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠ°ΠΊΡΠ°
end
end
Π’Π΅ΠΊΡΡ ΡΠΈΡΠ΅Π½ΠΈΡΠ΅
Π’Π°ΠΊΠ²Π΅ ΡΠΈΡΠ΅Π½ΠΈΡΠ΅ ΡΠ΅ ΠΏΠΎΡΡΠ°Π²ΡΠ°ΡΡ Π½Π° ΡΠ²ΠΎΡΠΎΠ²Π΅ Ρ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠΌΡ /etc/facter/facts.d
Ρ ΡΡΠ°ΡΠΎΠΌ ΠΡΡΠΊΠ°ΡΡ ΠΈΠ»ΠΈ /etc/puppetlabs/facts.d
Ρ Π½ΠΎΠ²ΠΎΠΌ ΠΡΡΠΊΡ.
examplefact=examplevalue
---
examplefact2: examplevalue2
anotherfact: anothervalue
ΠΠΎΠ»Π°Π·Π°ΠΊ Π΄ΠΎ ΡΠΈΡΠ΅Π½ΠΈΡΠ°
ΠΠΎΡΡΠΎΡΠ΅ Π΄Π²Π° Π½Π°ΡΠΈΠ½Π° Π΄Π° ΡΠ΅ ΠΏΡΠΈΡΡΡΠΏΠΈ ΡΠΈΡΠ΅Π½ΠΈΡΠ°ΠΌΠ°:
- ΠΊΡΠΎΠ· ΡΠ΅ΡΠ½ΠΈΠΊ
$facts
:$facts['fqdn']
; - ΠΊΠΎΡΠΈΡΡΠ΅ΡΠΈ ΠΈΠΌΠ΅ ΡΠΈΡΠ΅Π½ΠΈΡΠ΅ ΠΊΠ°ΠΎ ΠΈΠΌΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΡΠΈΠ²Π΅:
$fqdn
.
ΠΠ°ΡΠ±ΠΎΡΠ΅ ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈΡΠΈ ΡΠ΅ΡΠ½ΠΈΠΊ $facts
, ΠΈΠ»ΠΈ ΡΠΎΡ Π±ΠΎΡΠ΅, Π½Π°Π·Π½Π°ΡΠΈΡΠ΅ Π³Π»ΠΎΠ±Π°Π»Π½ΠΈ ΠΏΡΠΎΡΡΠΎΡ ΠΈΠΌΠ΅Π½Π° ($::facts
).
Π£Π³ΡΠ°ΡΠ΅Π½Π΅ Π²Π°ΡΠΈΡΠ°Π±Π»Π΅
ΠΡΠΈΠΌ ΡΠΈΡΠ΅Π½ΠΈΡΠ°, ΠΏΠΎΡΡΠΎΡΠΈ ΠΈ
- ΠΏΠΎΡΠ·Π΄Π°Π½Π΅ ΡΠΈΡΠ΅Π½ΠΈΡΠ΅ β ΠΏΡΠΎΠΌΠ΅Π½ΡΠΈΠ²Π΅ ΠΊΠΎΡΠ΅ ΡΡ ΠΏΡΠ΅ΡΠ·Π΅ΡΠ΅ ΠΈΠ· ΠΊΠ»ΠΈΡΠ΅Π½ΡΠΎΠ²ΠΎΠ³ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠ° (ΠΏΠΎΡΡΠΎ ΡΠ΅ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°Ρ ΠΎΠ±ΠΈΡΠ½ΠΎ ΠΈΠ·Π΄Π°ΡΠ΅ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΡ Π·Π° ΠΏΠΎΠΏΠ΅Ρ, Π°Π³Π΅Π½Ρ Π½Π΅ ΠΌΠΎΠΆΠ΅ ΡΠ°ΠΌΠΎ Π΄Π° ΡΠ·ΠΌΠ΅ ΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ ΡΠ²ΠΎΡ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°Ρ, ΠΏΠ° ΡΡ ΠΏΡΠΎΠΌΠ΅Π½ΡΠΈΠ²Π΅ βΠΏΠΎΠ²Π΅ΡΡΠΈΠ²Π΅β): Π½Π°Π·ΠΈΠ² ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠ°, Π½Π°Π·ΠΈΠ² ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠ° Ρ ΠΎΡΡ ΠΈ Π΄ΠΎΠΌΠ΅Π½, Π΅ΠΊΡΡΠ΅Π½Π·ΠΈΡΠ΅ ΠΈΠ· ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠ°.
- ΡΠΈΡΠ΅Π½ΠΈΡΠ΅ ΠΎ ΡΠ΅ΡΠ²Π΅ΡΡ βΠΏΡΠΎΠΌΠ΅Π½ΡΠΈΠ²Π΅ ΠΊΠΎΡΠ΅ ΡΠ΅ ΠΎΠ΄Π½ΠΎΡΠ΅ Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡΠ΅ ΠΎ ΡΠ΅ΡΠ²Π΅ΡΡβΠ²Π΅ΡΠ·ΠΈΡΠ°, ΠΈΠΌΠ΅, ΠΠ Π°Π΄ΡΠ΅ΡΠ° ΡΠ΅ΡΠ²Π΅ΡΠ°, ΠΎΠΊΡΡΠΆΠ΅ΡΠ΅.
- Π°Π³Π΅Π½ΡΡΠΊΠ΅ ΡΠΈΡΠ΅Π½ΠΈΡΠ΅ β ΠΏΡΠΎΠΌΠ΅Π½ΡΠΈΠ²Π΅ ΠΊΠΎΡΠ΅ Π΄ΠΎΠ΄Π°ΡΠ΅ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ Π°Π³Π΅Π½Ρ-ΠΏΡΠΏΠΏΠ΅Ρ, Π° Π½Π΅ ΡΠ°ΠΊΡΠΎΡ β Π½Π°Π·ΠΈΠ² ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠ°, Π²Π΅ΡΠ·ΠΈΡΠ° Π°Π³Π΅Π½ΡΠ°, Π²Π΅ΡΠ·ΠΈΡΠ° Π»ΡΡΠΊΠ΅.
- ΠΌΠ°ΡΡΠ΅Ρ ΠΏΡΠΎΠΌΠ΅Π½ΡΠΈΠ²Π΅ - ΠΠ°ΠΏΠΏΠ΅ΡΠΌΠ°ΡΡΠ΅Ρ Π²Π°ΡΠΈΡΠ°Π±Π»Π΅ (ΡΠΈΡ!). Π’ΠΎ ΡΠ΅ ΠΎΡΠΏΡΠΈΠ»ΠΈΠΊΠ΅ ΠΈΡΡΠΎ ΠΊΠ°ΠΎ Ρ ΡΠΈΡΠ΅Π½ΠΈΡΠ΅ ΠΎ ΡΠ΅ΡΠ²Π΅ΡΡ, ΠΏΠ»ΡΡ Π²ΡΠ΅Π΄Π½ΠΎΡΡΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½ΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΠ°ΡΠ° ΡΡ Π΄ΠΎΡΡΡΠΏΠ½Π΅.
- ΠΏΡΠΎΠΌΠ΅Π½ΡΠΈΠ²Π΅ ΠΊΠΎΠΌΠΏΠ°ΡΠ»Π΅ΡΠ° β ΠΏΡΠΎΠΌΠ΅Π½ΡΠΈΠ²Π΅ ΠΊΠΎΠΌΠΏΠ°ΡΠ»Π΅ΡΠ° ΠΊΠΎΡΠ΅ ΡΠ΅ ΡΠ°Π·Π»ΠΈΠΊΡΡΡ Ρ ΡΠ²Π°ΠΊΠΎΠΌ ΠΎΠΏΡΠ΅Π³Ρ: Π½Π°Π·ΠΈΠ² ΡΡΠ΅Π½ΡΡΠ½ΠΎΠ³ ΠΌΠΎΠ΄ΡΠ»Π° ΠΈ Π½Π°Π·ΠΈΠ² ΠΌΠΎΠ΄ΡΠ»Π° Ρ ΠΊΠΎΠΌΠ΅ ΡΠ΅ ΠΏΡΠΈΡΡΡΠΏΠΈΠ»ΠΎ ΡΡΠ΅Π½ΡΡΠ½ΠΎΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΡ. ΠΠΎΠ³Ρ ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈΡΠΈ, Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ, Π·Π° ΠΏΡΠΎΠ²Π΅ΡΡ Π΄Π° ΡΠ΅ Π²Π°ΡΠΈ ΠΏΡΠΈΠ²Π°ΡΠ½ΠΈ ΡΠ°ΡΠΎΠ²ΠΈ Π½Π΅ ΠΊΠΎΡΠΈΡΡΠ΅ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ ΠΈΠ· Π΄ΡΡΠ³ΠΈΡ ΠΌΠΎΠ΄ΡΠ»Π°.
ΠΠΎΠ΄Π°ΡΠ°ΠΊ 1: ΠΊΠ°ΠΊΠΎ ΠΏΠΎΠΊΡΠ΅Π½ΡΡΠΈ ΠΈ ΠΎΡΠΊΠ»ΠΎΠ½ΠΈΡΠΈ ΡΠ²Π΅ ΠΎΠ²ΠΎ?
Π§Π»Π°Π½Π°ΠΊ ΡΠ΅ ΡΠ°Π΄ΡΠΆΠ°ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ° Π»ΡΡΠΊΠ°ΡΡΠΊΠΎΠ³ ΠΊΠΎΠ΄Π°, Π°Π»ΠΈ Π½Π°ΠΌ ΡΠΎΠΏΡΡΠ΅ Π½ΠΈΡΠ΅ ΡΠ΅ΠΊΠ°ΠΎ ΠΊΠ°ΠΊΠΎ Π΄Π° ΠΏΠΎΠΊΡΠ΅Π½Π΅ΠΌΠΎ ΠΎΠ²Π°Ρ ΠΊΠΎΠ΄. ΠΠ°, ΠΈΡΠΏΡΠ°Π²ΡΠ°ΠΌ ΡΠ΅.
ΠΠ° ΠΏΠΎΠΊΡΠ΅ΡΠ°ΡΠ΅ ΠΡΠΏΠΏΠ΅Ρ-Π° Π΄ΠΎΠ²ΠΎΡΠ°Π½ ΡΠ΅ Π°Π³Π΅Π½Ρ, Π°Π»ΠΈ Ρ Π²Π΅ΡΠΈΠ½ΠΈ ΡΠ»ΡΡΠ°ΡΠ΅Π²Π° ΡΠ΅ Π²Π°ΠΌ ΡΡΠ΅Π±Π°ΡΠΈ ΠΈ ΡΠ΅ΡΠ²Π΅Ρ.
ΠΠ³Π΅Π½ΡΠ΅
ΠΠ°ΡΠ΅ΠΌ ΠΎΠ΄ Π²Π΅ΡΠ·ΠΈΡΠ΅ 5, ΠΏΠ°ΠΊΠ΅ΡΠΈ ΠΏΡΠΏΠΏΠ΅Ρ-Π°Π³Π΅Π½Ρ ΠΈΠ·
Π£ Π½Π°ΡΡΠ΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΈΡΠ΅ΠΌ ΡΠ»ΡΡΠ°ΡΡ, Π΄Π° Π±ΠΈΡΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈΠ»ΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡ Π»ΡΡΠΊΠ΅, Π΄ΠΎΠ²ΠΎΡΠ½ΠΎ ΡΠ΅ ΠΏΠΎΠΊΡΠ΅Π½ΡΡΠΈ Π°Π³Π΅Π½ΡΠ° Ρ ΡΠ΅ΠΆΠΈΠΌΡ Π±Π΅Π· ΡΠ΅ΡΠ²Π΅ΡΠ°: ΠΏΠΎΠ΄ ΡΡΠ»ΠΎΠ²ΠΎΠΌ Π΄Π° ΡΠ΅ ΠΊΠΎΠ΄ Π»ΡΡΠΊΠ΅ ΠΊΠΎΠΏΠΈΡΠ°Π½ Ρ ΡΠ²ΠΎΡ, ΠΏΠΎΠΊΡΠ΅Π½ΠΈΡΠ΅ puppet apply <ΠΏΡΡΡ ΠΊ ΠΌΠ°Π½ΠΈΡΠ΅ΡΡΡ>
:
atikhonov@atikhonov ~/puppet-test $ cat helloworld.pp
node default {
notify { 'Hello world!': }
}
atikhonov@atikhonov ~/puppet-test $ puppet apply helloworld.pp
Notice: Compiled catalog for atikhonov.localdomain in environment production in 0.01 seconds
Notice: Hello world!
Notice: /Stage[main]/Main/Node[default]/Notify[Hello world!]/message: defined 'message' as 'Hello world!'
Notice: Applied catalog in 0.01 seconds
ΠΠΎΡΠ΅ ΡΠ΅, Π½Π°ΡΠ°Π²Π½ΠΎ, ΠΏΠΎΠ΄Π΅ΡΠΈΡΠΈ ΡΠ΅ΡΠ²Π΅Ρ ΠΈ ΠΏΠΎΠΊΡΠ΅Π½ΡΡΠΈ Π°Π³Π΅Π½ΡΠ΅ Π½Π° ΡΠ²ΠΎΡΠΎΠ²ΠΈΠΌΠ° Ρ Π΄Π΅ΠΌΠΎΠ½ΡΠΊΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΡ - ΡΠ°Π΄Π° ΡΠ΅ ΡΠ΅Π΄Π½ΠΎΠΌ Π½Π° ΡΠ²Π°ΠΊΠΈΡ ΠΏΠΎΠ»Π° ΡΠ°ΡΠ° ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡ ΠΏΡΠ΅ΡΠ·Π΅ΡΡ ΡΠ° ΡΠ΅ΡΠ²Π΅ΡΠ°.
ΠΠΎΠΆΠ΅ΡΠ΅ ΠΈΠΌΠΈΡΠΈΡΠ°ΡΠΈ ΠΏΡΡΡ
ΠΌΠΎΠ΄Π΅Π» ΡΠ°Π΄Π° - ΠΈΠ΄ΠΈΡΠ΅ Π½Π° ΡΠ²ΠΎΡ ΠΊΠΎΡΠΈ Π²Π°Ρ Π·Π°Π½ΠΈΠΌΠ° ΠΈ ΠΏΠΎΡΠ½ΠΈΡΠ΅ sudo puppet agent -t
. ΠΡΡΡ -t
(--test
) Π·Π°ΠΏΡΠ°Π²ΠΎ ΡΠΊΡΡΡΡΡΠ΅ Π½Π΅ΠΊΠΎΠ»ΠΈΠΊΠΎ ΠΎΠΏΡΠΈΡΠ° ΠΊΠΎΡΠ΅ ΡΠ΅ ΠΌΠΎΠ³Ρ ΠΏΠΎΡΠ΅Π΄ΠΈΠ½Π°ΡΠ½ΠΎ ΠΎΠΌΠΎΠ³ΡΡΠΈΡΠΈ. ΠΠ²Π΅ ΠΎΠΏΡΠΈΡΠ΅ ΡΠΊΡΡΡΡΡΡ ΡΠ»Π΅Π΄Π΅ΡΠ΅:
- Π½Π΅ ΠΏΠΎΠΊΡΠ΅ΡΡ ΡΠ΅ Ρ Π΄Π΅ΠΌΠΎΠ½ΡΠΊΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΡ (ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π½ΠΎ Π°Π³Π΅Π½Ρ ΠΏΠΎΡΠΈΡΠ΅ Ρ Π΄Π΅ΠΌΠΎΠ½ΡΠΊΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΡ);
- ΠΈΡΠΊΡΡΡΠΈΡΠ΅ ΡΠ΅ Π½Π°ΠΊΠΎΠ½ ΠΏΡΠΈΠΌΠ΅Π½Π΅ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π° (ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π½ΠΎ, Π°Π³Π΅Π½Ρ ΡΠ΅ Π½Π°ΡΡΠ°Π²ΠΈΡΠΈ Π΄Π° ΡΠ°Π΄ΠΈ ΠΈ ΠΏΡΠΈΠΌΠ΅ΡΡΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡ ΡΠ΅Π΄Π½ΠΎΠΌ Π½Π° ΡΠ²Π°ΠΊΠΈΡ ΠΏΠΎΠ»Π° ΡΠ°ΡΠ°);
- Π½Π°ΠΏΠΈΡΠ°ΡΠΈ Π΄Π΅ΡΠ°ΡΠ°Π½ Π΄Π½Π΅Π²Π½ΠΈΠΊ ΡΠ°Π΄Π°;
- ΠΏΡΠΈΠΊΠ°ΠΆΠΈ ΠΏΡΠΎΠΌΠ΅Π½Π΅ Ρ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ°ΠΌΠ°.
ΠΠ³Π΅Π½Ρ ΠΈΠΌΠ° ΡΠ΅ΠΆΠΈΠΌ ΡΠ°Π΄Π° Π±Π΅Π· ΠΏΡΠΎΠΌΠ΅Π½Π° - ΠΌΠΎΠΆΠ΅ΡΠ΅ Π³Π° ΠΊΠΎΡΠΈΡΡΠΈΡΠΈ ΠΊΠ°Π΄Π° Π½ΠΈΡΡΠ΅ ΡΠΈΠ³ΡΡΠ½ΠΈ Π΄Π° ΡΡΠ΅ Π½Π°ΠΏΠΈΡΠ°Π»ΠΈ ΠΈΡΠΏΡΠ°Π²Π½Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡ ΠΈ ΠΆΠ΅Π»ΠΈΡΠ΅ Π΄Π° ΠΏΡΠΎΠ²Π΅ΡΠΈΡΠ΅ ΡΡΠ° ΡΠ΅ ΡΠ°ΡΠ½ΠΎ Π°Π³Π΅Π½Ρ ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠΈ ΡΠΎΠΊΠΎΠΌ ΡΠ°Π΄Π°. ΠΠ²Π°Ρ ΡΠ΅ΠΆΠΈΠΌ ΡΠ΅ ΠΎΠΌΠΎΠ³ΡΡΠ΅Π½ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ --noop
Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΡ Π»ΠΈΠ½ΠΈΡΠΈ: sudo puppet agent -t --noop
.
ΠΠΎΡΠ΅Π΄ ΡΠΎΠ³Π°, ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΠΌΠΎΠ³ΡΡΠΈΡΠΈ Π΄Π½Π΅Π²Π½ΠΈΠΊ ΠΎΡΠΊΠ»Π°ΡΠ°ΡΠ° Π³ΡΠ΅ΡΠ°ΠΊΠ° Ρ ΡΠ°Π΄Ρ - Ρ ΡΠ΅ΠΌΡ Π»ΡΡΠΊΠ° ΠΏΠΈΡΠ΅ ΠΎ ΡΠ²ΠΈΠΌ ΡΠ°Π΄ΡΠ°ΠΌΠ° ΠΊΠΎΡΠ΅ ΠΎΠ±Π°Π²ΡΠ°: ββΠΎ ΡΠ΅ΡΡΡΡΡ ΠΊΠΎΡΠΈ ΡΡΠ΅Π½ΡΡΠ½ΠΎ ΠΎΠ±ΡΠ°ΡΡΡΠ΅, ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΠΌΠ° ΠΎΠ²ΠΎΠ³ ΡΠ΅ΡΡΡΡΠ°, ΠΎ ΡΠΎΠΌΠ΅ ΠΊΠΎΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ΅ ΠΏΠΎΠΊΡΠ΅ΡΠ΅. ΠΠ°ΡΠ°Π²Π½ΠΎ, ΠΎΠ²ΠΎ ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΠ°Ρ --debug
.
Π‘Π΅ΡΠ²Π΅Ρ
Π£ ΠΎΠ²ΠΎΠΌ ΡΠ»Π°Π½ΠΊΡ Π½Π΅ΡΡ ΡΠ°Π·ΠΌΠ°ΡΡΠ°ΡΠΈ ΠΊΠΎΠΌΠΏΠ»Π΅ΡΠ½Ρ ΠΏΠΎΡΡΠ°Π²ΠΊΡ ΠΏΠ°ΠΏΠΏΠ΅ΡΡΠ΅ΡΠ²Π΅ΡΠ° ΠΈ ΠΏΠΎΡΡΠ°Π²ΡΠ°ΡΠ΅ ΠΊΠΎΠ΄Π° Π½Π° ΡΠ΅Π³Π°, ΡΠ°ΠΌΠΎ ΡΡ ΡΠ΅ΡΠΈ Π΄Π° ΠΏΠΎΡΡΠΎΡΠΈ ΠΏΠΎΡΠΏΡΠ½ΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½Π° Π²Π΅ΡΠ·ΠΈΡΠ° ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΊΠΎΡΠ° Π½Π΅ Π·Π°Ρ ΡΠ΅Π²Π° Π΄ΠΎΠ΄Π°ΡΠ½Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡ Π·Π° ΡΠ°Π΄ ΡΠ° ΠΌΠ°Π»ΠΈΠΌ Π±ΡΠΎΡΠ΅ΠΌ; ΡΠ²ΠΎΡΠΎΠ²ΠΈ (ΡΠ΅ΡΠΈΠΌΠΎ, Π΄ΠΎ ΡΡΠΎ). ΠΠ΅ΡΠΈ Π±ΡΠΎΡ ΡΠ²ΠΎΡΠΎΠ²Π° ΡΠ΅ Π·Π°Ρ ΡΠ΅Π²Π°ΡΠΈ ΠΏΠΎΠ΄Π΅ΡΠ°Π²Π°ΡΠ΅ - ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π½ΠΎΡ Π²ΡΠ΅Π΄Π½ΠΎΡΡΠΈ, ΠΏΡΠΏΠΏΠ΅ΡΡΠ΅ΡΠ²Π΅Ρ ΠΏΠΎΠΊΡΠ΅ΡΠ΅ Π½Π΅ Π²ΠΈΡΠ΅ ΠΎΠ΄ ΡΠ΅ΡΠΈΡΠΈ ΡΠ°Π΄Π½ΠΈΠΊΠ°, Π·Π° Π²Π΅ΡΠ΅ ΠΏΠ΅ΡΡΠΎΡΠΌΠ°Π½ΡΠ΅ ΠΌΠΎΡΠ°ΡΠ΅ ΠΏΠΎΠ²Π΅ΡΠ°ΡΠΈ ΡΠΈΡ ΠΎΠ² Π±ΡΠΎΡ ΠΈ Π½Π΅ Π·Π°Π±ΠΎΡΠ°Π²ΠΈΡΠ΅ Π΄Π° ΠΏΠΎΠ²Π΅ΡΠ°ΡΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅ΡΠ° ΠΌΠ΅ΠΌΠΎΡΠΈΡΠ΅, ΠΈΠ½Π°ΡΠ΅ ΡΠ΅ ΡΠ΅ΡΠ²Π΅Ρ Π²Π΅ΡΠΈΠ½Ρ Π²ΡΠ΅ΠΌΠ΅Π½Π° ΡΠ°ΠΊΡΠΏΡΠ°ΡΠΈ ΡΠΌΠ΅ΡΠ΅.
ΠΡΠΈΠΌΠ΅Π½Π° ΠΊΠΎΠ΄Π° - Π°ΠΊΠΎ Π²Π°ΠΌ ΡΠ΅ ΠΏΠΎΡΡΠ΅Π±Π½Π° Π±ΡΠ·ΠΎ ΠΈ Π»Π°ΠΊΠΎ, ΠΏΠΎΠ³Π»Π΅Π΄Π°ΡΡΠ΅ (Π½Π° Ρ10ΠΊ)[
ΠΠΎΠ΄Π°ΡΠ°ΠΊ 2: Π‘ΠΌΠ΅ΡΠ½ΠΈΡΠ΅ Π·Π° ΠΊΠΎΠ΄ΠΈΡΠ°ΡΠ΅
- ΠΠΎΡΡΠ°Π²ΠΈΡΠ΅ ΡΠ²Ρ Π»ΠΎΠ³ΠΈΠΊΡ Ρ ΠΊΠ»Π°ΡΠ΅ ΠΈ Π΄Π΅ΡΠΈΠ½ΠΈΡΠΈΡΠ΅.
- ΠΡΠΆΠΈΡΠ΅ ΠΊΠ»Π°ΡΠ΅ ΠΈ Π΄Π΅ΡΠΈΠ½ΠΈΡΠΈΡΠ΅ Ρ ΠΌΠΎΠ΄ΡΠ»ΠΈΠΌΠ°, Π° Π½Π΅ Ρ ΠΌΠ°Π½ΠΈΡΠ΅ΡΡΠΈΠΌΠ° ΠΊΠΎΡΠΈ ΠΎΠΏΠΈΡΡΡΡ ΡΠ²ΠΎΡΠΎΠ²Π΅.
- ΠΠΎΡΠΈΡΡΠΈΡΠ΅ ΡΠΈΡΠ΅Π½ΠΈΡΠ΅.
- ΠΠ΅ ΠΏΡΠ°Π²ΠΈΡΠ΅ ΠΈΡ-ΠΎΠ²Π΅ Π½Π° ΠΎΡΠ½ΠΎΠ²Ρ ΠΈΠΌΠ΅Π½Π° Ρ ΠΎΡΡΠΎΠ²Π°.
- Π‘Π»ΠΎΠ±ΠΎΠ΄Π½ΠΎ Π΄ΠΎΠ΄Π°ΡΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ΅ Π·Π° ΠΊΠ»Π°ΡΠ΅ ΠΈ Π΄Π΅ΡΠΈΠ½ΠΈΡΠΈΡΠ΅ β ΠΎΠ²ΠΎ ΡΠ΅ Π±ΠΎΡΠ΅ ΠΎΠ΄ ΠΈΠΌΠΏΠ»ΠΈΡΠΈΡΠ½Π΅ Π»ΠΎΠ³ΠΈΠΊΠ΅ ΡΠΊΡΠΈΠ²Π΅Π½Π΅ Ρ ΡΠ΅Π»Ρ ΠΊΠ»Π°ΡΠ΅/Π΄Π΅ΡΠΈΠ½Π΅.
ΠΠ±ΡΠ°ΡΠ½ΠΈΡΡ Π·Π°ΡΡΠΎ ΠΏΡΠ΅ΠΏΠΎΡΡΡΡΡΠ΅ΠΌ Π΄Π° ΡΠΎ ΡΡΠ°Π΄ΠΈΡΠ΅ Ρ ΡΠ»Π΅Π΄Π΅ΡΠ΅ΠΌ ΡΠ»Π°Π½ΠΊΡ.
ΠΠ°ΠΊΡΡΡΠ°ΠΊ
ΠΠ°Π²ΡΡΠΈΠΌΠΎ ΡΠ° ΡΠ²ΠΎΠ΄ΠΎΠΌ. Π£ ΡΠ»Π΅Π΄Π΅ΡΠ΅ΠΌ ΡΠ»Π°Π½ΠΊΡ ΡΡ Π²Π°ΠΌ ΡΠ΅ΡΠΈ ΠΎ Π₯ΠΈΠ΅ΡΠΈ, ΠΠΠ¦-Ρ ΠΈ ΠΡΠΏΠΏΠ΅ΡΠΠ-Ρ.
Π‘Π°ΠΌΠΎ ΡΠ΅Π³ΠΈΡΡΡΠΎΠ²Π°Π½ΠΈ ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΈ ΠΌΠΎΠ³Ρ ΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°ΡΠΈ Ρ Π°Π½ΠΊΠ΅ΡΠΈ.
ΠΠ°ΠΏΡΠ°Π²ΠΎ, ΠΌΠ°ΡΠ΅ΡΠΈΡΠ°Π»Π° ΠΈΠΌΠ° ΠΌΠ½ΠΎΠ³ΠΎ Π²ΠΈΡΠ΅ β ΠΌΠΎΠ³Ρ Π΄Π° ΠΏΠΈΡΠ΅ΠΌ ΡΠ»Π°Π½ΠΊΠ΅ ΠΎ ΡΠ»Π΅Π΄Π΅ΡΠΈΠΌ ΡΠ΅ΠΌΠ°ΠΌΠ°, Π³Π»Π°ΡΠ°ΠΌ ΠΎ ΠΎΠ½ΠΎΠΌΠ΅ ΠΎ ΡΠ΅ΠΌΡ Π±ΠΈ Π²Π°Ρ Π·Π°Π½ΠΈΠΌΠ°Π»ΠΎ Π΄Π° ΠΏΡΠΎΡΠΈΡΠ°ΡΠ΅:
- 100%ΠΠ°ΠΏΡΠ΅Π΄Π½Π΅ Π»ΡΡΠΊΠ°ΡΡΠΊΠ΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡΠ΅ β Π½Π΅ΠΊΠΎ ΡΡΠ°ΡΠ΅ ΡΠ»Π΅Π΄Π΅ΡΠ΅Π³ Π½ΠΈΠ²ΠΎΠ°: ΠΏΠ΅ΡΡΠ΅, ΠΌΠ°ΠΏΠΈΡΠ°ΡΠ΅ ΠΈ Π΄ΡΡΠ³ΠΈ Π»Π°ΠΌΠ±Π΄Π° ΠΈΠ·ΡΠ°Π·ΠΈ, ΡΠ°ΠΊΡΠΏΡΠ°ΡΠΈ ΡΠ΅ΡΡΡΡΠ°, ΠΈΠ·Π²Π΅Π·Π΅Π½ΠΈ ΡΠ΅ΡΡΡΡΠΈ ΠΈ ΠΊΠΎΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΡΠ° ΠΌΠ΅ΡΡ Ρ ΠΎΡΡΠΎΠ²ΠΈΠΌΠ° ΠΏΡΠ΅ΠΊΠΎ ΠΡΠΏΠΏΠ΅Ρ-Π°, ΠΎΠ·Π½Π°ΠΊΠ°, Π΄ΠΎΠ±Π°Π²ΡΠ°ΡΠ°, Π°ΠΏΡΡΡΠ°ΠΊΡΠ½ΠΈΡ ΡΠΈΠΏΠΎΠ²Π° ΠΏΠΎΠ΄Π°ΡΠ°ΠΊΠ°.13
- 100%βΠΠ° ΡΠ°ΠΌ ΠΌΠ°ΠΌΠΈΠ½ Π°Π΄ΠΌΠΈΠ½β ΠΈΠ»ΠΈ ΠΊΠ°ΠΊΠΎ ΡΠΌΠΎ ΡΠ΅ ΠΌΠΈ Ρ ΠΠ²ΠΈΡΠΎ-Ρ ΡΠΏΡΠΈΡΠ°ΡΠ΅ΡΠΈΠ»ΠΈ ΡΠ° Π½Π΅ΠΊΠΎΠ»ΠΈΠΊΠΎ ΡΠ΅ΡΠ²Π΅ΡΠ° Π·Π° ΠΏΡΠΏΠΊΠ΅ ΡΠ°Π·Π»ΠΈΡΠΈΡΠΈΡ Π²Π΅ΡΠ·ΠΈΡΠ° ΠΈ, Ρ ΠΏΡΠΈΠ½ΡΠΈΠΏΡ, Π΄Π΅ΠΎ ΠΎ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠΈΡΠ°ΡΡ ΠΏΠΎΠΏΠ΅Ρ ΡΠ΅ΡΠ²Π΅ΡΠ°.7
- 100%ΠΠ°ΠΊΠΎ ΠΏΠΈΡΠ΅ΠΌΠΎ Π»ΡΡΠΊΠ°ΡΡΠΊΠΈ ΠΊΠΎΠ΄: ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ°, Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ°, ΡΠ΅ΡΡΠΈΡΠ°ΡΠ΅, Π¦Π/Π¦Π.18
22 ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊΠ° ΡΠ΅ Π³Π»Π°ΡΠ°Π»ΠΎ. 9 ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊΠ° ΡΠ΅ Π±ΠΈΠ»ΠΎ ΡΠ·Π΄ΡΠΆΠ°Π½ΠΎ.
ΠΠ·Π²ΠΎΡ: Π²Π²Π².Ρ Π°Π±Ρ.ΡΠΎΠΌ