ื”ืงื“ืžื” ืฆื• ืœื™ืึทืœืงืข

ืœื™ืึทืœืงืข ืื™ื– ืึท ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ ืคืึทืจื•ื•ืึทืœื˜ื•ื ื’ ืกื™ืกื˜ืขื. ืขืก ืื™ื– ื’ืขื ื™ืฆื˜ ืฆื• ื‘ืจืขื ื’ืขืŸ ืžื—ื ื•ืช ืฆื• ื“ืขืจ ื’ืขื•ื•ืืœื˜ ืฉื˜ืึทื˜ ืื•ืŸ ื˜ื™ื™ึทื ืขืŸ ื“ืขื ืฉื˜ืึทื˜.

ืื™ืš ื”ืื‘ ืฉื•ื™ืŸ ืืจื‘ืขื˜ืŸ ืžื™ื˜ Puppet ืคึฟืึทืจ ืื™ื‘ืขืจ ืคื™ื ืฃ ื™ืึธืจ ืื™ืฆื˜. ื“ืขืจ ื˜ืขืงืกื˜ ืื™ื– ื‘ื™ื™ืกื™ืงืœื™ ืึท ืื™ื‘ืขืจื’ืขื–ืขืฆื˜ ืื•ืŸ ืจื™ืึธืจื“ืขืจื“ ื–ืึทืžืœื•ื ื’ ืคื•ืŸ ืฉืœื™ืกืœ ืคื•ื ืงื˜ืŸ ืคื•ืŸ ื“ืขืจ ื‘ืึทืึทืžื˜ืขืจ ื“ืึทืงื™ื•ืžืขื ื˜ื™ื™ืฉืึทืŸ, ื•ื•ืึธืก ื•ื•ืขื˜ ืœืึธื–ืŸ ื‘ื™ื’ื™ื ืขืจื– ืฆื• ื’ืขืฉื•ื•ื™ื ื“ ืคึฟืึทืจืฉื˜ื™ื™ืŸ ื“ื™ ืขืกืึทื ืก ืคื•ืŸ ืœื™ืึทืœืงืข.

ื”ืงื“ืžื” ืฆื• ืœื™ืึทืœืงืข

ื‘ืึทืกื™ืง ืื™ื ืคึฟืึธืจืžืึทืฆื™ืข

ื“ื™ ืึธืคึผืขืจื™ื™ื˜ื™ื ื’ ืกื™ืกื˜ืขื ืคื•ืŸ ืœื™ืึทืœืงืข ืื™ื– ืงืœื™ืขื ื˜-ืกืขืจื•ื•ืขืจ, ื›ืึธื˜ืฉ ืขืก ืื•ื™ืš ืฉื˜ื™ืฆื˜ ืกืขืจื•ื•ืขืจืœืขืกืก ืึธืคึผืขืจืึทืฆื™ืข ืžื™ื˜ ืœื™ืžื™ื˜ืขื“ ืคืึทื ื’ืงืฉืึทื ืึทืœื™ื˜ื™.

ื ืฆื™ืขืŸ ืžืึธื“ืขืœ ืคื•ืŸ ืึธืคึผืขืจืึทืฆื™ืข ืื™ื– ื’ืขื ื™ืฆื˜: ื“ื•ืจืš ืคืขืœื™ืงื™ื™ึทื˜, ืึทืžืึธืœ ื™ืขื“ืขืจ ื”ืึทืœื‘ ืฉืขื”, ืงืœื™ื™ืึทื ืฅ ืงืึธื ื˜ืึทืงื˜ ื“ื™ ืกืขืจื•ื•ืขืจ ืคึฟืึทืจ ืึท ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ ืื•ืŸ ืฆื•ืœื™ื™ื’ืŸ ืขืก. ืื•ื™ื‘ ืื™ืจ ื”ืึธื˜ ื’ืขืืจื‘ืขื˜ ืžื™ื˜ Ansible, ื–ื™ื™ ื ื•ืฆืŸ ืึท ืึทื ื“ืขืจืฉ ืฉื˜ื•ืคึผ ืžืึธื“ืขืœ: ื“ืขืจ ืึทื“ืžื™ื ื™ืกื˜ืจืึทื˜ืึธืจ ื™ื ื™ืฉื™ืึทืฅ ื“ืขื ืคึผืจืึธืฆืขืก ืคื•ืŸ ืึทืคึผืœื™ื™ื™ื ื’ ื“ื™ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ, ื“ื™ ืงืœื™ื™ืึทื ืฅ ื–ื™ืš ื•ื•ืขื˜ ื ื™ืฉื˜ ืฆื•ืœื™ื™ื’ืŸ ืขืคึผืขืก.

ื‘ืขืฉืึทืก ื ืขืฅ ืงืึธืžื•ื ื™ืงืึทืฆื™ืข, ืฆื•ื•ื™ื™-ื•ื•ืขื’ TLS ืขื ืงืจื™ืคึผืฉืึทืŸ ืื™ื– ื’ืขื ื™ืฆื˜: ื“ืขืจ ืกืขืจื•ื•ืขืจ ืื•ืŸ ืงืœื™ืขื ื˜ ื”ืึธื‘ืŸ ื–ื™ื™ืขืจ ืื™ื™ื’ืขื ืข ืคึผืจื™ื•ื•ืึทื˜ ืฉืœื™ืกืœืขืŸ ืื•ืŸ ืงืึธืจืึทืกืคึผืึทื ื“ื™ื ื’ ืกืขืจื˜ื™ืคื™ืงืึทืฅ. ื˜ื™ืคึผื™ืงืึทืœืœื™, ื“ืขืจ ืกืขืจื•ื•ืขืจ ืึทืจื•ื™ืกื’ืขื‘ืŸ ืกืขืจื˜ื™ืคื™ืงืึทืฅ ืคึฟืึทืจ ืงืœื™ื™ืึทื ืฅ, ืึธื‘ืขืจ ืื™ืŸ ืคึผืจื™ื ืฆื™ืคึผ ืขืก ืื™ื– ืžืขื’ืœืขืš ืฆื• ื ื•ืฆืŸ ืึท ืคื•ื ื“ืจื•ื™ืกื ื“ื™ืง CA.

ื”ืงื“ืžื” ืฆื• ืžืึทื ื™ืคืขืกื˜ืึธืก

ืื™ืŸ ืœื™ืึทืœืงืข ื˜ืขืจืžื™ื ืึธืœืึธื’ื™ืข ืฆื• ื“ื™ ืœื™ืึทืœืงืข ืกืขืจื•ื•ืขืจ ืคืึทืจื‘ื™ื ื“ืŸ ื ืึธื•ื“ื– (ื ืึธื“ืขืก). ื“ื™ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ ืคึฟืึทืจ ื“ื™ ื ืึธื•ื“ื– ืื™ื– ื’ืขืฉืจื™ื‘ืŸ ืื™ืŸ ืžืึทื ื™ืคืขืกื˜ืึธืก ืื™ืŸ ืึท ืกืคึผืขืฆื™ืขืœ ืคึผืจืึธื’ืจืึทืžืžื™ื ื’ ืฉืคึผืจืึทืš - Puppet DSL.

Puppet DSL ืื™ื– ืึท ื“ืขืงืœืึทืจืึทื˜ื™ื•ื•ืข ืฉืคึผืจืึทืš. ืขืก ื‘ืืฉืจื™ื™ื‘ื˜ ื“ื™ ื’ืขื•ื•ืืœื˜ ืฉื˜ืึทื˜ ืคื•ืŸ ื“ื™ ื ืึธื“ืข ืื™ืŸ ื“ื™ ืคืึธืจืขื ืคื•ืŸ ื“ืขืงืœืขืจื™ื™ืฉืึทื ื– ืคื•ืŸ ื™ื—ื™ื“ ืจืขืกื•ืจืกืŸ, ืœืžืฉืœ:

  • ื“ืขืจ ื˜ืขืงืข ื™ื’ื–ื™ืกืฅ ืื•ืŸ ืขืก ื”ืื˜ ืกืคึผืขืฆื™ืคื™ืฉ ืื™ื ื”ืึทืœื˜.
  • ื“ืขืจ ืคึผืขืงืœ ืื™ื– ืื™ื ืกื˜ืึทืœื™ืจืŸ.
  • ื“ื™ ื“ื™ื ืกื˜ ื”ืื˜ ืกื˜ืึทืจื˜ืขื“.

ืจืขืกื•ืจืกืŸ ืงืขื ืขืŸ ื–ื™ื™ืŸ ื™ื ื˜ืขืจืงืึทื ืขืงื˜ื™ื“:

  • ืขืก ื–ืขื ืขืŸ ื“ื™ืคึผืขื ื“ืึทื ืกื™ื–, ื–ื™ื™ ื•ื•ื™ืจืงืŸ ื“ื™ ืกื“ืจ ืื™ืŸ ื•ื•ืึธืก ืจืขืกื•ืจืกืŸ ื–ืขื ืขืŸ ื’ืขื ื™ืฆื˜.
    ืคึฟืึทืจ ื‘ื™ื™ึทืฉืคึผื™ืœ, "ืขืจืฉื˜ืขืจ ื™ื ืกื˜ืึทืœื™ืจืŸ ื“ืขื ืคึผืขืงืœ, ืจืขื“ืึทื’ื™ืจืŸ ื“ื™ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ ื˜ืขืงืข ืื•ืŸ ืึธื ื”ื™ื™ื‘ืŸ ื“ื™ ื“ื™ื ืกื˜."
  • ืขืก ื–ืขื ืขืŸ ื ืึธื•ื˜ืึทืคืึทืงื™ื™ืฉืึทื ื– - ืื•ื™ื‘ ืึท ืžื™ื˜ืœ ืื™ื– ืคืืจืขื ื“ืขืจื˜, ืขืก ืกืขื ื“ื– ื ืึธื•ื˜ืึทืคืึทืงื™ื™ืฉืึทื ื– ืฆื• ื“ื™ ืจืขืกื•ืจืกืŸ ืึทื‘ืึธื ื™ืจืŸ ืฆื• ืขืก.
    ืคึฟืึทืจ ื‘ื™ื™ึทืฉืคึผื™ืœ, ืื•ื™ื‘ ื“ื™ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ ื˜ืขืงืข ืขื ื“ืขืจื•ื ื’ืขืŸ, ืื™ืจ ืงืขื ืขืŸ ืื•ื™ื˜ืึธืžืึทื˜ื™ืฉ ืจื™ืกื˜ืึทืจื˜ ื“ื™ ื“ื™ื ืกื˜.

ืึทื“ื“ื™ื˜ื™ืึธื ืึทืœืœื™, ื“ื™ Puppet DSL ื”ืื˜ ืคืึทื ื’ืงืฉืึทื ื– ืื•ืŸ ื•ื•ืขืจื™ืึทื‘ืึทืœื–, ื•ื•ื™ ื’ืขื–ื•ื ื˜ ื•ื•ื™ ืงืึทื ื“ื™ืฉืึทื ืึทืœ ืกื˜ื™ื™ื˜ืžืึทื ืฅ ืื•ืŸ ืกืขืœืขืงื˜ืึธืจืก. ืคืึทืจืฉื™ื“ืŸ ื˜ืขืžืคึผืœืึทื˜ื™ื ื’ ืžืขืงืึทื ื™ื–ืึทืžื– ื–ืขื ืขืŸ ืื•ื™ืš ื’ืขืฉื˜ื™ืฆื˜ - EPP ืื•ืŸ ERB.

ืœื™ืึทืœืงืข ืื™ื– ื’ืขืฉืจื™ื‘ืŸ ืื™ืŸ ืจื•ื‘ื™, ืึทื–ื•ื™ ืคื™ืœืข ืคื•ืŸ โ€‹โ€‹ื“ื™ ืงืึทื ืกื˜ืจืึทืงืฉืึทื ื– ืื•ืŸ ื˜ืขืจืžื™ื ืขืŸ ื–ืขื ืขืŸ ื’ืขื ื•ืžืขืŸ ืคึฟื•ืŸ ื“ืึธืจื˜. Ruby ืึทืœืึทื•ื– ืื™ืจ ืฆื• ื™ืงืกืคึผืึทื ื“ ืœื™ืึทืœืงืข - ืœื™ื™ื’ืŸ ืงืึธืžืคึผืœืขืงืก ืœืึธื’ื™ืง, ื ื™ื™ึทืข ื˜ื™ื™ืคึผืก ืคื•ืŸ ืจืขืกื•ืจืกืŸ, ืคืึทื ื’ืงืฉืึทื ื–.

ื‘ืฉืขืช ืœื™ืึทืœืงืข ืื™ื– ืคืœื™ืกื ื“ื™ืง, ืžืึทื ืึทืคืขืกื˜ื™ื™ืฉืึทื ื– ืคึฟืึทืจ ื™ืขื“ืขืจ ืกืคึผืขืฆื™ืคื™ืฉ ื ืึธื“ืข ืื•ื™ืฃ ื“ื™ ืกืขืจื•ื•ืขืจ ื–ืขื ืขืŸ ืงืึทืžืคึผื™ื™ืœื“ ืื™ืŸ ืึท ื•ื•ืขื’ื•ื•ื™ื™ึทื–ืขืจ. ื“ื™ืจืขืงื˜ืืจื™ ืื™ื– ืึท ืจืฉื™ืžื” ืคื•ืŸ ืจืขืกื•ืจืกืŸ ืื•ืŸ ื–ื™ื™ืขืจ ืฉื™ื™ื›ื•ืช ื ืึธืš ืงืึทืœืงื™ืึทืœื™ื™ื˜ื™ื ื’ ื“ื™ ื•ื•ืขืจื˜ ืคื•ืŸ ืคืึทื ื’ืงืฉืึทื ื–, ื•ื•ืขืจื™ืึทื‘ืึทืœื– ืื•ืŸ ื™ืงืกืคึผืึทื ืฉืึทืŸ ืคื•ืŸ ืงืึทื ื“ื™ืฉืึทื ืึทืœ ืกื˜ื™ื™ื˜ืžืึทื ืฅ.

ืกื™ื ื˜ืึทืงืก ืื•ืŸ ืงืึธื“ืขืกื˜ื™ื™ืœ

ื“ืึธ ื–ืขื ืขืŸ ืกืขืงืฉืึทื ื– ืคื•ืŸ ื“ืขืจ ื‘ืึทืึทืžื˜ืขืจ ื“ืึทืงื™ื•ืžืขื ื˜ื™ื™ืฉืึทืŸ ื•ื•ืึธืก ื•ื•ืขื˜ ื”ืขืœืคึฟืŸ ืื™ืจ ืคึฟืึทืจืฉื˜ื™ื™ืŸ ื“ื™ ืกื™ื ื˜ืึทืงืก ืื•ื™ื‘ ื“ื™ ืฆื•ื’ืขืฉื˜ืขืœื˜ ื‘ื™ื™ืฉืคื™ืœืŸ ื–ืขื ืขืŸ ื ื™ืฉื˜ ื’ืขื ื•ื’:

ื“ืึธ ืก ืึท ื‘ื™ื™ืฉืคึผื™ืœ ืคื•ืŸ ื•ื•ื™ ื“ื™ ืžืึทื ื™ืคืขืกื˜ ืงื•ืงื˜ ื•ื•ื™:

# ะšะพะผะผะตะฝั‚ะฐั€ะธะธ ะฟะธัˆัƒั‚ัั, ะบะฐะบ ะธ ะผะฝะพะณะพ ะณะดะต, ะฟะพัะปะต ั€ะตัˆั‘ั‚ะบะธ.
#
# ะžะฟะธัะฐะฝะธะต ะบะพะฝั„ะธะณัƒั€ะฐั†ะธะธ ะฝะพะดั‹ ะฝะฐั‡ะธะฝะฐะตั‚ัั ั ะบะปัŽั‡ะตะฒะพะณะพ ัะปะพะฒะฐ 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 }).
  • ื“ื™ ืึทืจืึธื•ื– ืื•ื™ืฃ ื“ื™ ืคึผืึทืจืึทืžืขื˜ืขืจืก ื–ืึธืœ ื–ื™ื™ืŸ ืื™ืŸ ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ ืžื“ืจื’ื”.
  • ืจื™ืกืึธืจืก ืฉื™ื™ื›ื•ืช ืึทืจืึธื•ื– ื–ืขื ืขืŸ ื’ืขืฉืจื™ื‘ืŸ ืื™ืŸ ืคืจืึธื ื˜ ืคื•ืŸ ื–ื™ื™.

ืึธืจื˜ ืคื•ืŸ ื˜ืขืงืขืก ืื•ื™ืฃ ืคึผืึทืคึผืคึผืขื˜ืกืขืจื•ื•ืขืจ

ืคึฟืึทืจ ื•ื•ื™ื™ึทื˜ืขืจ ื“ืขืจืงืœืขืจื•ื ื’, ืื™ืš ื•ื•ืขืœ ื‘ืึทืงืขื ืขืŸ ื“ืขื ื‘ืึทื’ืจื™ืฃ ืคื•ืŸ "ื•ื•ืึธืจืฆืœ ื•ื•ืขื’ื•ื•ื™ื™ึทื–ืขืจ". ื“ืขืจ ื•ื•ืึธืจืฆืœ ื•ื•ืขื’ื•ื•ื™ื™ึทื–ืขืจ ืื™ื– ื“ืขืจ ื•ื•ืขื’ื•ื•ื™ื™ึทื–ืขืจ ื•ื•ืึธืก ื›ึผื•ืœืœ ื“ื™ ืคึผืึทืคึผืขื˜ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ ืคึฟืึทืจ ืึท ืกืคึผืขืฆื™ืคื™ืฉ ื ืึธื“ืข.

ื“ืขืจ ื•ื•ืึธืจืฆืœ ื•ื•ืขื’ื•ื•ื™ื™ึทื–ืขืจ ื•ื•ืขืจื™ื– ื“ื™ืคึผืขื ื“ื™ื ื’ ืื•ื™ืฃ ื“ื™ ื•ื•ืขืจืกื™ืข ืคื•ืŸ โ€‹โ€‹ืคึผืึทืคึผืขื˜ ืื•ืŸ ื“ื™ ื™ื ื•ื•ื™ื™ืจืึทื ืžืึทื ืฅ ื’ืขื ื™ืฆื˜. ื™ื ื•ื•ื™ื™ืจืึทื ืžืึทื ืฅ ื–ืขื ืขืŸ ืคืจื™ื™ึท ืฉื˜ืขืœื˜ ืคื•ืŸ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ ื•ื•ืึธืก ื–ืขื ืขืŸ ืกื˜ืึธืจื“ ืื™ืŸ ื‘ืึทื–ื•ื ื“ืขืจ ื“ื™ืจืขืงื˜ืขืจื™ื–. ื™ื•ื–ืฉืึทื•ื•ืึทืœื™ ื’ืขื•ื•ื™ื™ื ื˜ ืื™ืŸ ืงืึธืžื‘ื™ื ืึทืฆื™ืข ืžื™ื˜ ื’ื™ื˜, ืื™ืŸ ื•ื•ืึธืก ืคืึทืœ ื™ื ื•ื•ื™ื™ืจืึทื ืžืึทื ืฅ ื–ืขื ืขืŸ ื‘ืืฉืืคืŸ ืคื•ืŸ ื’ื™ื˜ ืฆื•ื•ื™ื™ื’ืŸ. ืึทืงืงืึธืจื“ื™ื ื’ืœื™, ื™ืขื“ืขืจ ื ืึธื“ืข ืื™ื– ืœื™ื’ืŸ ืื™ืŸ ืื™ื™ืŸ ืึธื“ืขืจ ืื ื“ืขืจืŸ ืกื•ื•ื™ื•ื•ืข. ื“ืึธืก ืงืขืŸ ื–ื™ื™ืŸ ืงืึทื ืคื™ื’ื™ืขืจื“ ืื•ื™ืฃ ื“ื™ ื ืึธื“ืข ื–ื™ืš, ืึธื“ืขืจ ืื™ืŸ ENC, ื•ื•ืึธืก ืื™ืš ื•ื•ืขืœ ืจืขื“ืŸ ื•ื•ืขื’ืŸ ืื™ืŸ ื“ืขืจ ื•ื•ื™ื™ึทื˜ืขืจ ืึทืจื˜ื™ืงืœ.

  • ืื™ืŸ ื“ื™ ื“ืจื™ื˜ ื•ื•ืขืจืกื™ืข ("ืึทืœื˜ ืœื™ืึทืœืงืข") ื“ื™ ื‘ืึทื–ืข ื•ื•ืขื’ื•ื•ื™ื™ึทื–ืขืจ ืื™ื– ื’ืขื•ื•ืขืŸ /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.
  • ืขืก ืื™ื– ื ื™ื™ื˜ื™ืง ืึทื– ื“ื™ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ ื˜ืขืงืขืก ื–ืขื ืขืŸ ืงืึทืคึผื™ื“ ืคื•ืŸ ื“ื™ ืกืขืจื•ื•ืขืจ.
  • ื“ื™ ืกืขืจื•ื•ื™ืก ื“ืึทืจืฃ ื–ื™ื™ืŸ ืคืœื™ืกื ื“ื™ืง 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 - ืกื™ืžืœื™ื ืง
  • ืฆื•ืคืจื™ื“ืŸ - ื˜ืขืงืข ืื™ื ื”ืึทืœื˜ (ืคึผืึทืกื™ืง ื‘ืœื•ื™ื– ืคึฟืึทืจ ืจืขื’ื•ืœืขืจ ื˜ืขืงืขืก, ืงืขื ืขืŸ ื ื™ื˜ ื–ื™ื™ืŸ ื’ืขื•ื•ื™ื™ื ื˜ ืฆื•ื–ืึทืžืขืŸ ืžื™ื˜ ืžืึธืงืขืจ ืึธื“ืขืจ ืฆื™ืœ)
  • ืžืึธืงืขืจ - ืึท ืœื™ื ืง ืฆื• ื“ืขื ื“ืจืš ืคื•ืŸ ื•ื•ืึธืก ืื™ืจ ื•ื•ื™ืœืŸ ืฆื• ื ืึธื›ืžืึทื›ืŸ ื“ื™ ืื™ื ื”ืึทืœื˜ ืคื•ืŸ ื“ืขืจ ื˜ืขืงืข (ืงืขื ืขืŸ ื ื™ื˜ ื–ื™ื™ืŸ ื’ืขื•ื•ื™ื™ื ื˜ ืฆื•ื–ืึทืžืขืŸ ืžื™ื˜ ืฆื•ืคืจื™ื“ืŸ ืึธื“ืขืจ ืฆื™ืœ). ืงืขื ืขืŸ ื–ื™ื™ืŸ ืกืคึผืขืกื™ืคื™ืขื“ ื•ื•ื™ ืึท URI ืžื™ื˜ ืึท ืกื›ืขืžืข puppet: (ื“ืขืžืึธืœื˜ ื˜ืขืงืขืก ืคื•ืŸ ื“ื™ ืœื™ืึทืœืงืข ืกืขืจื•ื•ืขืจ ื•ื•ืขื˜ ื–ื™ื™ืŸ ื’ืขื•ื•ื™ื™ื ื˜), ืื•ืŸ ืžื™ื˜ ื“ื™ ืกื›ืขืžืข http: (ืื™ืš ื”ืึธืคึฟืŸ ืขืก ืื™ื– ืงืœืึธืจ ื•ื•ืึธืก ื•ื•ืขื˜ ืคึผืึทืกื™ืจืŸ ืื™ืŸ ื“ืขื ืคืึทืœ), ืื•ืŸ ืืคื™ืœื• ืžื™ื˜ ื“ื™ ื“ื™ืึทื’ืจืึทืžืข file: ืึธื“ืขืจ ื•ื•ื™ ืึทืŸ ืึทื‘ืกืึธืœื•ื˜ ื“ืจืš ืึธืŸ ืึท ืกื›ืขืžืข (ื“ืขืจื ืึธืš ื“ื™ ื˜ืขืงืข ืคึฟื•ืŸ ื“ื™ ื”ื™ื’ืข FS ืื•ื™ืฃ ื“ื™ ื ืึธื“ืข ื•ื•ืขื˜ ื–ื™ื™ืŸ ื’ืขื•ื•ื™ื™ื ื˜)
  • ืฆื™ืœ - ื•ื•ื• ื“ื™ ืกื™ืžืœื™ื ืง ื–ืึธืœ ืคื•ื ื˜ (ืงืขื ืขืŸ ื ื™ื˜ ื–ื™ื™ืŸ ื’ืขื•ื•ื™ื™ื ื˜ ืฆื•ื–ืึทืžืขืŸ ืžื™ื˜ ืฆื•ืคืจื™ื“ืŸ ืึธื“ืขืจ ืžืึธืงืขืจ)
  • ื‘ืึทื–ื™ืฆืขืจ - ื“ืขืจ ื‘ืึทื ื™ืฆืขืจ ื•ื•ืึธืก ื–ืึธืœ ืคืึทืจืžืึธื’ืŸ ื“ื™ ื˜ืขืงืข
  • ื’ืจื•ืคึผืข - ื“ื™ ื’ืจื•ืคึผืข ืฆื• ื•ื•ืึธืก ื“ื™ ื˜ืขืงืข ื–ืึธืœ ื’ืขื”ืขืจืŸ
  • ืžืึธื“ืข - ื˜ืขืงืข ืคึผืขืจืžื™ืฉืึทื ื– (ื•ื•ื™ ืึท ืฉื˜ืจื™ืงืœ)
  • ืจื™ืงื•ืจืก - ื™ื ื™ื™ื‘ืึทืœื– ืจืขืงื•ืจืกื™ื•ื•ืข ื•ื•ืขื’ื•ื•ื™ื™ึทื–ืขืจ ืคึผืจืึทืกืขืกื™ื ื’
  • ืจื™ื™ื ื™ืงื•ื ื’ - ื™ื ื™ื™ื‘ืึทืœื– ื“ื™ืœื™ื˜ื™ื ื’ ื˜ืขืงืขืก ื•ื•ืึธืก ื–ืขื ืขืŸ ื ื™ืฉื˜ ื“ื™ืกืงืจื™ื™ื‘ื“ ืื™ืŸ ืคึผื•ืคึผืคึผืขื˜
  • ื’ื•ื•ืึทืœื“ - ื™ื ื™ื™ื‘ืึทืœื– ื“ื™ืœื™ื˜ื™ื ื’ ื“ื™ืจืขืงื˜ืขืจื™ื– ื•ื•ืึธืก ื–ืขื ืขืŸ ื ื™ืฉื˜ ื“ื™ืกืงืจื™ื™ื‘ื“ ืื™ืŸ ืคึผืึทืคึผืขื˜

ืคึผืขืงืœ

ื™ื ืกื˜ืึธืœื– ืื•ืŸ ืจื™ืžื•ื•ื•ื– ืคึผืึทืงืึทื“ื–ืฉืึทื–. ืงืขื ืขืŸ ืฆื• ืฉืขืคึผืŸ ื ืึธื•ื˜ืึทืคืึทืงื™ื™ืฉืึทื ื– - ืจื™ื™ื ืกื˜ืึทืœ ื“ื™ ืคึผืขืงืœ ืื•ื™ื‘ ื“ืขืจ ืคึผืึทืจืึทืžืขื˜ืขืจ ืื™ื– ืกืคึผืขืกื™ืคื™ืขื“ reinstall_on_refresh.

ืคึผืึทืจืึทืžืขื˜ืขืจืก:

  • ืžื™ื˜ืœ ื ืึธืžืขืŸ - ืคึผืขืงืœ ื ืึธืžืขืŸ (ืึทืคึผืฉืึทื ืึทืœ)
  • ื ืึธืžืขืŸ - ืคึผืขืงืœ ื ืึธืžืขืŸ (ืื•ื™ื‘ ื ื™ื˜ ืกืคึผืขืกื™ืคื™ืขื“ ืื™ืŸ ื“ืขื ื ืึธืžืขืŸ)
  • ืฉืคึผื™ื™ึทื–ืขืจ - ืคึผืขืงืœ ืคืึทืจื•ื•ืึทืœื˜ืขืจ ืฆื• ื ื•ืฆืŸ
  • ืขื ืฉื•ืจ - ื“ืขืจ ื’ืขื•ื•ืืœื˜ ืฉื˜ืึทื˜ ืคื•ืŸ ื“ื™ ืคึผืขืงืœ:
    • present, installed - ืงื™ื™ืŸ ื•ื•ืขืจืกื™ืข ืื™ื ืกื˜ืึทืœื™ืจืŸ
    • latest - ืœืขืฆื˜ ื•ื•ืขืจืกื™ืข ืื™ื ืกื˜ืึทืœื™ืจืŸ
    • absent - ืื•ื™ืกื’ืขืžืขืงื˜ (apt-get remove)
    • purged - ืื•ื™ืกื’ืขืžืขืงื˜ ืฆื•ื–ืืžืขืŸ ืžื™ื˜ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ ื˜ืขืงืขืก (apt-get purge)
    • held - ืคึผืขืงืœ ื•ื•ืขืจืกื™ืข ืื™ื– ืคืืจืฉืคืืจื˜ (apt-mark hold)
    • ะปัŽะฑะฐั ะดั€ัƒะณะฐั ัั‚ั€ะพะบะฐ - ื“ื™ ืกืคึผืขืกื™ืคื™ืขื“ ื•ื•ืขืจืกื™ืข ืื™ื– ืื™ื ืกื˜ืึทืœื™ืจืŸ
  • reinstall_on_refresh โ€” ืื•ื™ื‘ true, ืื•ืŸ ื ืึธืš ืงืึทื‘ืึธืœืข ืคื•ืŸ โ€‹โ€‹ื“ื™ ืึธื ื–ืึธื’, ื“ื™ ืคึผืขืงืœ ื•ื•ืขื˜ ื–ื™ื™ืŸ ืจื™ื™ื ืกื˜ืึทืœื“. ื ื•ืฆื™ืง ืคึฟืึทืจ ืžืงื•ืจ-ื‘ืื–ื™ืจื˜ ื“ื™ืกื˜ืจื™ื‘ื™ื•ืฉืึทื ื–, ื•ื•ื• ืจื™ื‘ื™ืœื“ื™ื ื’ ืคึผืึทืงืึทื“ื–ืฉืึทื– ืงืขืŸ ื–ื™ื™ืŸ ื ื™ื™ื˜ื™ืง ื•ื•ืขืŸ ื˜ืฉืึทื ื’ื™ื ื’ ื‘ื•ื™ืขืŸ ืคึผืึทืจืึทืžืขื˜ืขืจืก. ืคืขืœื™ืงื™ื™ึทื˜ false.

ื“ื™ื ืกื˜

ืžืึทื ื™ื“ื–ืฉื™ื– ื‘ืึทื“ื™ื ื•ื ื’ืขืŸ. ืงืขื ืขืŸ ืฆื• ืคึผืจืึธืฆืขืก ื ืึธื•ื˜ืึทืคืึทืงื™ื™ืฉืึทื ื– - ืจื™ืกื˜ืึทืจื˜ ื“ื™ ื“ื™ื ืกื˜.

ืคึผืึทืจืึทืžืขื˜ืขืจืก:

  • ืžื™ื˜ืœ ื ืึธืžืขืŸ - ืกืขืจื•ื•ื™ืก ืฆื• ื–ื™ื™ืŸ ื’ืขืจืื˜ืŸ (ืึทืคึผืฉืึทื ืึทืœ)
  • ื ืึธืžืขืŸ - ื“ื™ ืกืขืจื•ื•ื™ืก ื•ื•ืึธืก ื“ืึทืจืฃ ื–ื™ื™ืŸ ื’ืขืจืื˜ืŸ (ืื•ื™ื‘ ื ื™ื˜ ืกืคึผืขืกื™ืคื™ืขื“ ืื™ืŸ ื“ืขื ื ืึธืžืขืŸ)
  • ืขื ืฉื•ืจ - ื’ืขื•ื•ืืœื˜ ืฉื˜ืึทื˜ ืคื•ืŸ ื“ื™ ื“ื™ื ืกื˜:
    • running - ืœืึธื ื˜ืฉื˜
    • stopped โ€” ื”ืื˜ ื–ื™ืš ืืคื’ืขืฉื˜ืขืœื˜
  • ื’ืขื‘ืŸ - ืงืึธื ื˜ืจืึธืœืก ื“ื™ ืคื™ื™ื™ืงื™ื™ื˜ ืฆื• ืึธื ื”ื™ื™ื‘ืŸ ื“ื™ ื“ื™ื ืกื˜:
    • true - ืึทื•ื˜ืึธืจื•ืŸ ืื™ื– ืขื ื™ื™ื‘ืึทืœื“ (systemctl enable)
    • mask โ€” ืคืืจืฉื˜ืขืœื˜ (systemctl mask)
    • false - ืึทื•ื˜ืึธืจื•ืŸ ืื™ื– ืคืึทืจืงืจื™ืคึผืœื˜ (systemctl disable)
  • ืจื™ืกื˜ืึทืจื˜ - ื‘ืึทืคึฟืขืœ ืฆื• ืจื™ืกื˜ืึทืจื˜ ื“ื™ ื“ื™ื ืกื˜
  • ืžืึทืฆืขื•ื• - ื‘ืึทืคึฟืขืœ ืฆื• ืงืึธื ื˜ืจืึธืœื™ืจืŸ ื“ื™ื ืกื˜ ืกื˜ืึทื˜ื•ืก
  • ื”ืื˜ ืจื™ืกื˜ืึทืจื˜ - ืึธื ื•ื•ื™ื™ึทื–ืŸ ืฆื™ ื“ื™ ืกืขืจื•ื•ื™ืก ื™ื ื™ื˜ืกืงืจื™ืคึผื˜ ืฉื˜ื™ืฆื˜ ืจื™ืกื˜ืึทืจื˜ื™ื ื’. ืื•ื™ื‘ false ืื•ืŸ ื“ืขืจ ืคึผืึทืจืึทืžืขื˜ืขืจ ืื™ื– ืกืคึผืขืกื™ืคื™ืขื“ ืจื™ืกื˜ืึทืจื˜ - ื“ื™ ื•ื•ืขืจื˜ ืคื•ืŸ ื“ืขื ืคึผืึทืจืึทืžืขื˜ืขืจ ืื™ื– ื’ืขื ื™ืฆื˜. ืื•ื™ื‘ false ืื•ืŸ ืคึผืึทืจืึทืžืขื˜ืขืจ ืจื™ืกื˜ืึทืจื˜ ื ื™ื˜ ืกืคึผืขืกื™ืคื™ืขื“ - ื“ื™ ื“ื™ื ืกื˜ ืื™ื– ืกื˜ืึทืคึผื˜ ืื•ืŸ ืกื˜ืึทืจื˜ืขื“ ืฆื• ืจื™ืกื˜ืึทืจื˜ (ืึธื‘ืขืจ systemd ื ื™ืฆื˜ ื“ื™ ื‘ืึทืคึฟืขืœ systemctl restart).
  • ื”ืื˜ ืกื˜ืึทื˜ื•ืก - ืึธื ื•ื•ื™ื™ึทื–ืŸ ืฆื™ ื“ื™ ืกืขืจื•ื•ื™ืก ื™ื ื™ื˜ืกืงืจื™ืคึผื˜ ืฉื˜ื™ืฆื˜ ื“ืขื ื‘ืึทืคึฟืขืœ status. ืื•ื™ื‘ false, ื“ืขืžืึธืœื˜ ื“ืขืจ ืคึผืึทืจืึทืžืขื˜ืขืจ ื•ื•ืขืจื˜ ืื™ื– ื’ืขื ื™ืฆื˜ ืžืึทืฆืขื•ื•. ืคืขืœื™ืงื™ื™ึทื˜ true.

exec

ืœื•ื™ืคื˜ ืคื•ื ื“ืจื•ื™ืกื ื“ื™ืง ืงืึทืžืึทื ื“ื–. ืื•ื™ื‘ ืื™ืจ ื˜ืึธืŸ ื ื™ื˜ ืกืคึผืขืฆื™ืคื™ืฆื™ืจืŸ ืคึผืึทืจืึทืžืขื˜ืขืจืก ืงืจื™ื™ื™ืฅ, ื ืืจ ืื•ื™ื‘, ืกื™ื™ึทื“ืŸ ืึธื“ืขืจ ืจืขืคืจืขืฉืึธื ืœื™, ื“ืขืจ ื‘ืึทืคึฟืขืœ ื•ื•ืขื˜ ื–ื™ื™ืŸ ืœื•ื™ืคืŸ ื™ืขื“ืขืจ ืžืึธืœ ืคึผืึทืคึผืขื˜ ืื™ื– ืœื•ื™ืคืŸ. ืงืขื ืขืŸ ืฆื• ืคึผืจืึธืฆืขืก ื ืึธื•ื˜ืึทืคืึทืงื™ื™ืฉืึทื ื– - ืœื•ื™ืคื˜ ืึท ื‘ืึทืคึฟืขืœ.

ืคึผืึทืจืึทืžืขื˜ืขืจืก:

  • ืžื™ื˜ืœ ื ืึธืžืขืŸ - ื‘ืึทืคึฟืขืœ ืฆื• ื–ื™ื™ืŸ ืขืงืกืึทืงื™ื•ื˜ืึทื“ (ืึทืคึผืฉืึทื ืึทืœ)
  • ื‘ืึทืคืขืœ - ื“ื™ ื‘ืึทืคึฟืขืœ ืฆื• ื–ื™ื™ืŸ ืขืงืกืึทืงื™ื•ื˜ืึทื“ (ืื•ื™ื‘ ืขืก ืื™ื– ื ื™ืฉื˜ ืกืคึผืขืกื™ืคื™ืขื“ ืื™ืŸ ื“ืขื ื ืึธืžืขืŸ)
  • ื•ื•ืขื’ - ืคึผืึทื˜ืก ืื™ืŸ ื•ื•ืึธืก ืฆื• ืงื•ืงืŸ ืคึฟืึทืจ ื“ื™ ืขืงืกืขืงื•ื˜ืึทื‘ืœืข ื˜ืขืงืข
  • ื ืืจ ืื•ื™ื‘ - ืื•ื™ื‘ ื“ืขืจ ื‘ืึทืคึฟืขืœ ืกืคึผืขืกื™ืคื™ืขื“ ืื™ืŸ ื“ืขื ืคึผืึทืจืึทืžืขื˜ืขืจ ื’ืขืขื ื“ื™ืงื˜ ืžื™ื˜ ืึท ื ื•ืœ ืฆื•ืจื™ืงืงื•ืžืขืŸ ืงืึธื“, ื“ื™ ื”ื•ื™ืคึผื˜ ื‘ืึทืคึฟืขืœ ื•ื•ืขื˜ ื–ื™ื™ืŸ ืขืงืกืึทืงื™ื•ื˜ืึทื“
  • ืกื™ื™ึทื“ืŸ - ืื•ื™ื‘ ื“ืขืจ ื‘ืึทืคึฟืขืœ ืกืคึผืขืกื™ืคื™ืขื“ ืื™ืŸ ื“ืขื ืคึผืึทืจืึทืžืขื˜ืขืจ ืื™ื– ื’ืขืขื ื“ื™ืงื˜ ืžื™ื˜ ืึท ื ื™ื˜-ื ื•ืœ ืฆื•ืจื™ืงืงื•ืžืขืŸ ืงืึธื“, ื“ื™ ื”ื•ื™ืคึผื˜ ื‘ืึทืคึฟืขืœ ื•ื•ืขื˜ ื–ื™ื™ืŸ ืขืงืกืึทืงื™ื•ื˜ืึทื“
  • ืงืจื™ื™ื™ืฅ - ืื•ื™ื‘ ื“ืขืจ ื˜ืขืงืข ืกืคึผืขืกื™ืคื™ืขื“ ืื™ืŸ ื“ืขื ืคึผืึทืจืึทืžืขื˜ืขืจ ืื™ื– ื ื™ืฉื˜ ืขืงืกื™ืกื˜ื™ืจื˜, ื“ื™ ื”ื•ื™ืคึผื˜ ื‘ืึทืคึฟืขืœ ื•ื•ืขื˜ ื–ื™ื™ืŸ ืขืงืกืึทืงื™ื•ื˜ืึทื“
  • ืจืขืคืจืขืฉืึธื ืœื™ โ€” ืื•ื™ื‘ true, ื“ืขืžืึธืœื˜ ื“ืขืจ ื‘ืึทืคึฟืขืœ ื•ื•ืขื˜ ื–ื™ื™ืŸ ืœื•ื™ืคืŸ ื‘ืœื•ื™ื– ื•ื•ืขืŸ ื“ืขื ืขืงืกืขืง ื ืขืžื˜ ืึธื ื–ืึธื’ ืคื•ืŸ ืื ื“ืขืจืข ืจืขืกื•ืจืกืŸ
  • cwd - ื•ื•ืขื’ื•ื•ื™ื™ึทื–ืขืจ ืคื•ืŸ ื•ื•ืึธืก ืฆื• ืœื•ื™ืคืŸ ื“ื™ ื‘ืึทืคึฟืขืœ
  • ื‘ืึทื ื™ืฆืขืจ - ื“ืขืจ ื‘ืึทื ื™ืฆืขืจ ืคึฟื•ืŸ ื•ื•ืขืžืขืŸ ืฆื• ืœื•ื™ืคืŸ ื“ื™ ื‘ืึทืคึฟืขืœ
  • ืฉืคึผื™ื™ึทื–ืขืจ - ื•ื•ื™ ืฆื• ืœื•ื™ืคืŸ ื“ืขื ื‘ืึทืคึฟืขืœ:
    • positix - ืึท ืงื™ื ื“ ืคึผืจืึธืฆืขืก ืื™ื– ืคืฉื•ื˜ ื‘ืืฉืืคืŸ, ื–ื™ื™ืŸ ื–ื™ื›ืขืจ ืฆื• ืกืคึผืขืฆื™ืคื™ืฆื™ืจืŸ ื•ื•ืขื’
    • ืฉืึธืœ - ื“ืขืจ ื‘ืึทืคึฟืขืœ ืื™ื– ืœืึธื ื˜ืฉื˜ ืื™ืŸ ื“ื™ ืฉืึธืœ /bin/sh, ืงืขืŸ ื ื™ืฉื˜ ื–ื™ื™ืŸ ืกืคึผืขืกื™ืคื™ืขื“ ื•ื•ืขื’, ืื™ืจ ืงืขื ืขืŸ ื ื•ืฆืŸ ื’ืœืึธื‘ื™ื ื’, ืคึผื™ื™ืคึผืก ืื•ืŸ ืื ื“ืขืจืข ืฉืึธืœ ืคึฟืขื™ึดืงื™ื™ื˜ืŸ. ื™ื•ื–ืฉืึทื•ื•ืึทืœื™ ื“ื™ื˜ืขืงื˜ืึทื“ ืื•ื™ื˜ืึธืžืึทื˜ื™ืฉ ืื•ื™ื‘ ืขืก ื–ืขื ืขืŸ ืกืคึผืขืฆื™ืขืœืข ืื•ืชื™ื•ืช (|, ;, &&, || ืื•ืŸ ืื–ื•ื™ ื•ื•ื™ื™ื˜ืขืจ).

ืงืจืึทืŸ

ืงืึธื ื˜ืจืึธืœืก ืงืจืึธื ื“ื–ืฉืึธื‘ืก.

ืคึผืึทืจืึทืžืขื˜ืขืจืก:

  • ืžื™ื˜ืœ ื ืึธืžืขืŸ - ื ืึธืจ ืึท ืžื™ืŸ ืคื•ืŸ ืื™ื“ืขื ื˜ื™ื˜ืขื˜
  • ืขื ืฉื•ืจ - ืงืจืึทื•ื ื“ื–ืฉืึธื‘ ืฉื˜ืึทื˜:
    • present - ืฉืึทืคึฟืŸ ืื•ื™ื‘ ื˜ื•ื˜ ื ื™ืฉื˜ ืขืงืกื™ืกื˜ื™ืจืŸ
    • absent - ื•ื™ืกืžืขืงืŸ ืื•ื™ื‘ ื™ื’ื–ื™ืกืฅ
  • ื‘ืึทืคืขืœ - ื•ื•ืึธืก ื‘ืึทืคึฟืขืœ ืฆื• ืœื•ื™ืคืŸ
  • ืกื•ื•ื™ื•ื•ืข - ืื™ืŸ ื•ื•ืึธืก ืกื•ื•ื™ื•ื•ืข ืฆื• ืœื•ื™ืคืŸ ื“ื™ ื‘ืึทืคึฟืขืœ (ืจืฉื™ืžื” ืคื•ืŸ ืกื•ื•ื™ื•ื•ืข ื•ื•ืขืจื™ืึทื‘ืึทืœื– ืื•ืŸ ื–ื™ื™ืขืจ ื•ื•ืึทืœื•ืขืก ื“ื•ืจืš =)
  • ื‘ืึทื ื™ืฆืขืจ - ืคึฟื•ืŸ ื•ื•ืึธืก ื‘ืึทื ื™ืฆืขืจ ืฆื• ืœื•ื™ืคืŸ ื“ืขื ื‘ืึทืคึฟืขืœ
  • ืžื™ื ื•ื˜, ืฉืึธ, ื•ื•ืึธื›ืขื“ื™ืง ื˜ืึธื’, ืžืึธื ืึทื˜, ื—ื•ื“ืฉ ื˜ืึธื’ โ€” ื•ื•ืขืŸ ืฆื• ืœื•ื™ืคืŸ ืงืจื•ืŸ. ืื•ื™ื‘ ืงื™ื™ืŸ ืคื•ืŸ ื“ื™ ืึทื˜ืจื™ื‘ื™ื•ืฅ ืื™ื– ื ื™ืฉื˜ ืกืคึผืขืกื™ืคื™ืขื“, ื–ื™ื™ืŸ ื•ื•ืขืจื˜ ืื™ืŸ ื“ื™ ืงืจืึธื ื˜ืึทื‘ ื•ื•ืขื˜ ื–ื™ื™ืŸ *.

ืื™ืŸ Puppet 6.0 ืงืจืึทืŸ ื•ื•ื™ ืื•ื™ื‘ ืึทื•ื•ืขืงื’ืขื ื•ืžืขืŸ ืคื•ืŸ ื“ื™ ืงืขืกื˜ืœ ืื™ืŸ ืคึผื•ืคึผืคึผืขื˜ืกืขืจื•ื•ืขืจ, ืึทื–ื•ื™ ืขืก ืื™ื– ืงื™ื™ืŸ ื“ืึทืงื™ื•ืžืขื ื˜ื™ื™ืฉืึทืŸ ืื•ื™ืฃ ื“ื™ ืึทืœื’ืขืžื™ื™ื ืข ืคึผืœืึทืฅ. ืื‘ืขืจ ืขืจ ืื™ื– ืื™ืŸ ื“ื™ ืงืขืกื˜ืœ ืื™ืŸ ืœื™ืึทืœืงืข-ืึทื’ืขื ื˜, ืึทื–ื•ื™ ืขืก ืื™ื– ื ื™ื˜ ื“ืึทืจืคึฟืŸ ืฆื• ื™ื ืกื˜ืึทืœื™ืจืŸ ืขืก ืกืขืคึผืขืจืึทื˜ืœื™. ืื™ืจ ืงืขื ืขืŸ ื–ืขืŸ ื“ื™ ื“ืึทืงื™ื•ืžืขื ื˜ื™ื™ืฉืึทืŸ ืคึฟืึทืจ ืขืก ืื™ืŸ ื“ื™ ื“ืึทืงื™ื•ืžืขื ื˜ื™ื™ืฉืึทืŸ ืคึฟืึทืจ ื“ื™ ืคื™ื ืคื˜ ื•ื•ืขืจืกื™ืข ืคื•ืŸ โ€‹โ€‹Puppetืึธื“ืขืจ ืื•ื™ืฃ GitHub.

ื•ื•ืขื’ืŸ ืจืขืกื•ืจืกืŸ ืื™ืŸ ืึทืœื’ืขืžื™ื™ืŸ

ืจืขืงื•ื•ื™ืจืขืžืขื ืฅ ืคึฟืึทืจ ืžื™ื˜ืœ ืื™ื™ื’ื ืืจื˜ื™ืงื™ื™ื˜

ื“ื™ ืžืขืจืกื˜ ืคึผืจืึธืกื˜ ื˜ืขื•ืช ืžื™ืจ ื˜ืจืขืคืŸ ืื™ื– ื“ื•ืคึผืœื™ืงืึทื˜ ื“ืขืงืœืึทืจืึทืฆื™ืข. ื“ืขืจ ื˜ืขื•ืช ืึทืงืขืจื– ื•ื•ืขืŸ ืฆื•ื•ื™ื™ ืึธื“ืขืจ ืžืขืจ ืจืขืกื•ืจืกืŸ ืคื•ืŸ ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ ื˜ื™ืคึผ ืžื™ื˜ ื“ื™ ื–ืขืœื‘ืข ื ืึธืžืขืŸ ื“ืขืจืฉื™ื™ึทื ืขืŸ ืื™ืŸ ื“ืขืจ ื•ื•ืขื’ื•ื•ื™ื™ึทื–ืขืจ.

ื“ืขืจื™ื‘ืขืจ ื•ื•ืขืœ ืื™ืš ื•ื•ื™ื“ืขืจ ืฉืจื™ื™ื‘ืŸ: ืžืึทื ื™ืคืขืกืฅ ืคึฟืึทืจ ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ ื ืึธื“ืข ื–ืึธืœ ื ื™ืฉื˜ ืึทื ื˜ื”ืึทืœื˜ืŸ ืจืขืกื•ืจืกืŸ ืคื•ืŸ ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ ื˜ื™ืคึผ ืžื™ื˜ ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ ื˜ื™ื˜ืœ!

ืžืืœ ืขืก ืื™ื– ืึท ื ื•ื™ื˜ ืฆื• ื™ื ืกื˜ืึทืœื™ืจืŸ ืคึผืึทืงืึทื“ื–ืฉืึทื– ืžื™ื˜ ื“ื™ ื–ืขืœื‘ืข ื ืึธืžืขืŸ, ืึธื‘ืขืจ ืžื™ื˜ ืคืึทืจืฉื™ื“ืขื ืข ืคึผืขืงืœ ืžืึทื ืึทื“ื–ืฉืขืจื–. ืื™ืŸ ื“ืขื ืคืึทืœ, ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ื ื•ืฆืŸ ื“ืขื ืคึผืึทืจืึทืžืขื˜ืขืจ nameืฆื• ื•ื™ืกืžื™ื™ื“ืŸ ื“ืขื ื˜ืขื•ืช:

package { 'ruby-mysql':
  ensure   => installed,
  name     => 'mysql',
  provider => 'gem',
}
package { 'python-mysql':
  ensure   => installed,
  name     => 'mysql',
  provider => 'pip',
}

ืื ื“ืขืจืข ืžื™ื˜ืœ ื˜ื™ื™ืคึผืก ื”ืึธื‘ืŸ ืขื ืœืขืš ืึธืคึผืฆื™ืขืก ืฆื• ื•ื™ืกืžื™ื™ื“ืŸ ื“ื•ืคึผืœื™ืงื™ื™ืฉืึทืŸ - name ัƒ ื“ื™ื ืกื˜, command ัƒ exec, ืื•ืŸ ืื–ื•ื™ ื•ื•ื™ื™ื˜ืขืจ.

ืžืขื˜ืึทืคึผืึทืจืึทืžืึทื˜ืขืจืก

ื™ืขื“ืขืจ ืžื™ื˜ืœ ื˜ื™ืคึผ ื”ืื˜ ืขื˜ืœืขื›ืข ืกืคึผืขืฆื™ืขืœ ืคึผืึทืจืึทืžืขื˜ืขืจืก, ืจืึทื’ืึทืจื“ืœืึทืก ืคื•ืŸ ื–ื™ื™ึทืŸ ื ืึทื˜ื•ืจ.

ื’ืึทื ืฅ ืจืฉื™ืžื” ืคื•ืŸ ืžืขื˜ืึท ืคึผืึทืจืึทืžืขื˜ืขืจืก ืื™ืŸ ื“ื™ ืคึผืึทืคึผืขื˜ ื“ืึทืงื™ื•ืžืขื ื˜ื™ื™ืฉืึทืŸ.

ืงื•ืจืฅ ืจืฉื™ืžื”:

  • ื“ืึทืจืคืŸ - ื“ืขืจ ืคึผืึทืจืึทืžืขื˜ืขืจ ื™ื ื“ื™ืงื™ื™ืฅ ื•ื•ืึธืก ืจืขืกื•ืจืกืŸ ื“ืขื ืžื™ื˜ืœ ื“ืขืคึผืขื ื“ืก ืื•ื™ืฃ.
  • ืคืจื™ืขืจ - ื“ืขืจ ืคึผืึทืจืึทืžืขื˜ืขืจ ืกืคึผืขืฆื™ืคื™ืฆื™ืจื˜ ื•ื•ืึธืก ืจืขืกื•ืจืกืŸ ืึธืคืขื ื’ืขืŸ ืื•ื™ืฃ ื“ืขื ืžื™ื˜ืœ.
  • ืึทื‘ืึธื ื™ืจืŸ - ื“ืขืจ ืคึผืึทืจืึทืžืขื˜ืขืจ ืกืคึผืขืฆื™ืคื™ืฆื™ืจื˜ ืคื•ืŸ ื•ื•ืึธืก ืจืขืกื•ืจืกืŸ ื“ืขื ืžื™ื˜ืœ ื ืขืžื˜ ื ืึธื•ื˜ืึทืคืึทืงื™ื™ืฉืึทื ื–.
  • ืžืขืœื“ืŸ - ื“ืขืจ ืคึผืึทืจืึทืžืขื˜ืขืจ ืกืคึผืขืฆื™ืคื™ืฆื™ืจื˜ ื•ื•ืึธืก ืจืขืกื•ืจืกืŸ ื‘ืึทืงื•ืžืขืŸ ื ืึธื•ื˜ืึทืคืึทืงื™ื™ืฉืึทื ื– ืคื•ืŸ ื“ืขื ืžื™ื˜ืœ.

ืึทืœืข ืคื•ืŸ โ€‹โ€‹ื“ื™ ืœื™ืกื˜ืขื“ ืžืขื˜ืึทืคึผืึทืจืึทืžืึทื˜ืขืจืก ืึธื ื ืขืžืขืŸ ืึธื“ืขืจ ืึท ืื™ื™ืŸ ืžื™ื˜ืœ ืœื™ื ืง ืึธื“ืขืจ ืึท ืžืขื ื’ืข ืคื•ืŸ โ€‹โ€‹โ€‹โ€‹ืœื™ื ืงืก ืื™ืŸ ืงื•ื•ืึทื“ืจืึทื˜ ื‘ืจืึทืงืึทืฅ.

ืœื™ื ืงืก ืฆื• ืจืขืกื•ืจืกืŸ

ื ืžื™ื˜ืœ ืœื™ื ืง ืื™ื– ืคืฉื•ื˜ ืึท ื“ืขืจืžืึธื ืขืŸ ืคื•ืŸ ื“ื™ ืžื™ื˜ืœ. ื–ื™ื™ ื–ืขื ืขืŸ ื“ืขืจ ื”ื•ื™ืคึผื˜ ื’ืขื ื™ืฆื˜ ืฆื• ืึธื ื•ื•ื™ื™ึทื–ืŸ ื“ื™ืคึผืขื ื“ืึทื ืกื™ื–. ืจื™ืคืขืจื™ื ื’ ืึท ื ื™ื˜-ืขื’ื–ื™ืกื˜ืึทื ื˜ ืžื™ื˜ืœ ื•ื•ืขื˜ ืคืึทืจืฉืึทืคืŸ ืึท ื–ืึทืžืœื•ื ื’ ื˜ืขื•ืช.

ื“ืขืจ ืกื™ื ื˜ืึทืงืก ืคื•ืŸ ื“ื™ ืœื™ื ืง ืื™ื– ื•ื•ื™ ื’ื™ื™ื˜: ืžื™ื˜ืœ ื˜ื™ืคึผ ืžื™ื˜ ืึท ืงืึทืคึผื™ื˜ืึทืœ ื‘ืจื™ื•ื• (ืื•ื™ื‘ ื“ื™ ื˜ื™ืคึผ ื ืึธืžืขืŸ ื›ึผื•ืœืœ ื˜ืึธืคึผืœ ืงืึธืœืึธื ืก, ื™ืขื“ืขืจ ื˜ื™ื™ืœ ืคื•ืŸ ื“ื™ ื ืึธืžืขืŸ ืฆื•ื•ื™ืฉืŸ ื“ื™ ืงืึธืœืึธื ืก ืื™ื– ืงืึทืคึผื™ื˜ืึทืœื™ื™ื–ื“), ื“ืขืžืึธืœื˜ ื“ืขืจ ืžื™ื˜ืœ ื ืึธืžืขืŸ ืื™ืŸ ืงื•ื•ืึทื“ืจืึทื˜ ื‘ืจืึทืงืึทืฅ (ื“ื™ ืคืึทืœ ืคื•ืŸ ื“ื™ ื ืึธืžืขืŸ) ื˜ื•ื˜ ื ื™ืฉื˜ ื˜ื•ื™ืฉืŸ!). ืขืก ื–ืึธืœ ื–ื™ื™ืŸ ืงื™ื™ืŸ ืกืคึผื™ื™ืกืึทื– ืงื•ื•ืึทื“ืจืึทื˜ ื‘ืจืึทืงืึทืฅ ื–ืขื ืขืŸ ื’ืขืฉืจื™ื‘ืŸ ืžื™ื“ ื ืึธืš ื“ื™ ื˜ื™ืคึผ ื ืึธืžืขืŸ.

ื‘ื™ื™ึทืฉืคึผื™ืœ:

file { '/file1': ensure => present }
file { '/file2':
  ensure => directory,
  before => File['/file1'],
}
file { '/file3': ensure => absent }
File['/file1'] -> File['/file3']

ืึธืคืขื ื’ื™ืงื™ื™ึทื˜ ืื•ืŸ ื ืึธื•ื˜ืึทืคืึทืงื™ื™ืฉืึทื ื–

ื“ืืงื•ืžืขื ื˜ืืฆื™ืข ื“ื.

ื•ื•ื™ ืกื˜ื™ื™ื˜ื™ื“ ืคืจื™ืขืจ, ืคึผืฉื•ื˜ ื“ื™ืคึผืขื ื“ืึทื ืกื™ื– ืฆื•ื•ื™ืฉืŸ ืจืขืกื•ืจืกืŸ ื–ืขื ืขืŸ ื˜ืจืึทื ื–ื™ื˜ื™ื•ื•. ื“ื•ืจืš ื“ืขื ื•ื•ืขื’, ื–ื™ื™ืŸ ืึธืคึผื’ืขื”ื™ื˜ ื•ื•ืขืŸ ืึทื“ื™ื ื’ ื“ื™ืคึผืขื ื“ืึทื ืกื™ื– - ืื™ืจ ืงืขื ืขืŸ ืžืึทื›ืŸ ืกื™ื™ืงืœื™ืง ื“ื™ืคึผืขื ื“ืึทื ืกื™ื–, ื•ื•ืึธืก ื•ื•ืขื˜ ืคืึทืจืฉืึทืคืŸ ืึท ื–ืึทืžืœื•ื ื’ ื˜ืขื•ืช.

ื ื™ื˜ ืขื ืœืขืš ื“ื™ืคึผืขื ื“ืึทื ืกื™ื–, ื ืึธื•ื˜ืึทืคืึทืงื™ื™ืฉืึทื ื– ื–ืขื ืขืŸ ื ื™ืฉื˜ ื˜ืจืึทื ื–ื™ื˜ื™ื•ื•. ื“ื™ ืคืืœื’ืขื ื“ืข ื›ึผืœืœื™ื ืึทืคึผืœื™ื™ื– ืคึฟืึทืจ ื ืึธื•ื˜ืึทืคืึทืงื™ื™ืฉืึทื ื–:

  • ืื•ื™ื‘ ื“ื™ ืžื™ื˜ืœ ื ืขืžื˜ ืึท ืึธื ื–ืึธื’, ืขืก ืื™ื– ื“ืขืจื”ื™ื™ึทื ื˜ื™ืงื˜. ื“ื™ ื“ืขืจื”ื™ื™ึทื ื˜ื™ืงืŸ ืึทืงืฉืึทื ื– ืึธืคืขื ื’ืขืŸ ืื•ื™ืฃ ื“ื™ ืžื™ื˜ืœ ื˜ื™ืคึผ - exec ืœื•ื™ืคื˜ ื“ื™ ื‘ืึทืคึฟืขืœ, ื“ื™ื ืกื˜ ืจื™ืกื˜ืึทืจื˜ ื“ื™ ื“ื™ื ืกื˜, ืคึผืขืงืœ ืจื™ื™ื ืกื˜ืึทืœ ื“ื™ ืคึผืขืงืœ. ืื•ื™ื‘ ื“ื™ ืžื™ื˜ืœ ื”ืื˜ ื ื™ืฉื˜ ื“ื™ืคื™ื™ื ื“ ืึท ื“ืขืจื”ื™ื™ึทื ื˜ื™ืงืŸ ืงืึทืžืฃ, ื’ืึธืจื ื™ืฉื˜ ื›ืึทืคึผืึทื ื–.
  • ื‘ืขืฉืึทืก ืื™ื™ืŸ ืœื•ื™ืคืŸ ืคื•ืŸ ืคึผืึทืคึผืขื˜, ื“ื™ ืžื™ื˜ืœ ืื™ื– ื“ืขืจื”ื™ื™ึทื ื˜ื™ืงื˜ ื ื™ื˜ ืžืขืจ ื•ื•ื™ ืึทืžืึธืœ. ื“ืึธืก ืื™ื– ืžืขื’ืœืขืš ื•ื•ื™ื™ึทืœ ื ืึธื•ื˜ืึทืคืึทืงื™ื™ืฉืึทื ื– ืึทืจื™ื™ึทื ื ืขืžืขืŸ ื“ื™ืคึผืขื ื“ืึทื ืกื™ื– ืื•ืŸ ื“ื™ ื“ืขืคึผืขื ื“ืขื ืกื™ ื’ืจืึทืคื™ืง ื˜ื•ื˜ ื ื™ืฉื˜ ืึทื ื˜ื”ืึทืœื˜ืŸ ืกื™ื™ืงืึทืœื–.
  • ืื•ื™ื‘ ืคึผืึทืคึผืขื˜ ืขื ื“ืขืจื•ื ื’ืขืŸ ื“ื™ ืฉื˜ืึทื˜ ืคื•ืŸ ืึท ืžื™ื˜ืœ, ื“ื™ ืžื™ื˜ืœ ืกืขื ื“ื– ื ืึธื•ื˜ืึทืคืึทืงื™ื™ืฉืึทื ื– ืฆื• ืึทืœืข ืจืขืกื•ืจืกืŸ ืึทื‘ืึธื ื™ืจืŸ ืฆื• ืขืก.
  • ืื•ื™ื‘ ืึท ืžื™ื˜ืœ ืื™ื– ื“ืขืจื”ื™ื™ึทื ื˜ื™ืงื˜, ืขืก ืกืขื ื“ื– ื ืึธื•ื˜ืึทืคืึทืงื™ื™ืฉืึทื ื– ืฆื• ืึทืœืข ืจืขืกื•ืจืกืŸ ืึทื‘ืึธื ื™ืจืŸ ืฆื• ืขืก.

ื”ืึทื ื“ืœื™ื ื’ ื•ื ืกืคึผืขืกื™ืคื™ืขื“ ืคึผืึทืจืึทืžืขื˜ืขืจืก

ื•ื•ื™ ืึท ื”ืขืจืฉืŸ, ืื•ื™ื‘ ืขื˜ืœืขื›ืข ืžื™ื˜ืœ ืคึผืึทืจืึทืžืขื˜ืขืจ ื˜ื•ื˜ ื ื™ืฉื˜ ื”ืึธื‘ืŸ ืึท ืคืขืœื™ืงื™ื™ึทื˜ ื•ื•ืขืจื˜ ืื•ืŸ ื“ืขื ืคึผืึทืจืึทืžืขื˜ืขืจ ืื™ื– ื ื™ืฉื˜ ืกืคึผืขืกื™ืคื™ืขื“ ืื™ืŸ ื“ื™ ื‘ืึทืฉื™ื™ึทืžืคึผืขืจืœืขืš, ื“ื™ ืคึผืึทืคึผืขื˜ ื•ื•ืขื˜ ื ื™ืฉื˜ ื˜ื•ื™ืฉืŸ ื“ืขื ืคืึทืจืžืึธื’ ืคึฟืึทืจ ื“ื™ ืงืึธืจืึทืกืคึผืึทื ื“ื™ื ื’ ืžื™ื˜ืœ ืื•ื™ืฃ ื“ื™ ื ืึธื“ืข. ืคึฟืึทืจ ื‘ื™ื™ึทืฉืคึผื™ืœ, ืื•ื™ื‘ ืึท ืžื™ื˜ืœ ืคื•ืŸ ื˜ื™ืคึผ ื˜ืขืงืข ืคึผืึทืจืึทืžืขื˜ืขืจ ื ื™ื˜ ืกืคึผืขืกืึทืคื™ื™ื“ owner, ื“ืขืžืึธืœื˜ ืคึผืึทืคึผืขื˜ ื•ื•ืขื˜ ื ื™ืฉื˜ ื˜ื•ื™ืฉืŸ ื“ื™ ื‘ืึทื–ื™ืฆืขืจ ืคื•ืŸ ื“ื™ ืงืึธืจืึทืกืคึผืึทื ื“ื™ื ื’ ื˜ืขืงืข.

ื”ืงื“ืžื” ืฆื• ืงืœืืกืŸ, ื•ื•ืขืจื™ืึทื‘ืึทืœื– ืื•ืŸ ื–ื•ืš

ืจืขื›ืŸ ืžื™ืจ ื”ืึธื‘ืŸ ืขื˜ืœืขื›ืข ื ืึธื•ื“ื– ื•ื•ืึธืก ื”ืึธื‘ืŸ ื“ื™ ื–ืขืœื‘ืข ื˜ื™ื™ืœ ืคื•ืŸ ื“ื™ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ, ืึธื‘ืขืจ ืขืก ื–ืขื ืขืŸ ืื•ื™ืš ื“ื™ืคืขืจืึทื ืกื™ื– - ืึทื ื“ืขืจืฉ ืžื™ืจ ืงืขืŸ ื‘ืึทืฉืจื™ื™ึทื‘ืŸ ืขืก ืึทืœืข ืื™ืŸ ืื™ื™ืŸ ื‘ืœืึธืง node {}. ืคื•ืŸ ืงื•ืจืก, ืื™ืจ ืงืขื ืขืŸ ืคืฉื•ื˜ ื ืึธื›ืžืึทื›ืŸ ื™ื™ื“ืขื ื™ืงืึทืœ ืคึผืึทืจืฅ ืคื•ืŸ ื“ื™ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ, ืึธื‘ืขืจ ืื™ืŸ ืึทืœื’ืขืžื™ื™ืŸ, ื“ืึธืก ืื™ื– ืึท ืฉืœืขื›ื˜ ืœื™ื™ื–ื•ื ื’ - ื“ื™ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ ื•ื•ืืงืกื˜, ืื•ืŸ ืื•ื™ื‘ ืื™ืจ ื˜ื•ื™ืฉืŸ ื“ื™ ืึทืœื’ืขืžื™ื™ื ืข ื˜ื™ื™ืœ ืคื•ืŸ ื“ื™ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ, ืื™ืจ ื•ื•ืขื˜ ื”ืึธื‘ืŸ ืฆื• ืจืขื“ืึทื’ื™ืจืŸ ื“ื™ ื–ืขืœื‘ืข ื–ืึทืš ืื™ืŸ ืคื™ืœืข ืขืจื˜ืขืจ. ืื™ืŸ ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ ืฆื™ื™ื˜, ืขืก ืื™ื– ื’ืจื™ื ื’ ืฆื• ืžืึทื›ืŸ ืึท ื’ืจื™ื™ึทื–, ืื•ืŸ ืื™ืŸ ืึทืœื’ืขืžื™ื™ืŸ, ื“ื™ ื“ืจื™ื™ (ื˜ืึธืŸ ื ื™ื˜ ืื™ื‘ืขืจื—ื–ืจืŸ ื–ื™ืš) ืคึผืจื™ื ืฆื™ืคึผ ืื™ื– ื™ื ื•ื•ืขื ื˜ืึทื“ ืคึฟืึทืจ ืึท ืกื™ื‘ื”.

ืฆื• ืกืึธืœื•ื•ืข ื“ืขื ืคึผืจืึธื‘ืœืขื ืขืก ืื™ื– ืึทื–ืึท ืึท ืคึผืœืึทืŸ ื•ื•ื™ ืงืœืึทืก.

ืงืœืืกืŸ

ืกืึธืจื˜ ืื™ื– ืึท ื ืึธืžืขืŸ ื‘ืœืึธืง ืคื•ืŸ ืคึผืึธืคึผืคึผืขื˜ ืงืึธื“. ืงืœืืกืŸ ื–ืขื ืขืŸ ื“ืืจืฃ ืฆื• ืจื™ื™ื•ื– ืงืึธื“.

ืงื•ื“ื ื“ืึทืจืฃ ืžืขืŸ ื‘ืึทืฉืจื™ื™ื‘ืŸ ื“ืขื ืงืœืึทืก. ื“ื™ ื‘ืึทืฉืจื™ื™ึทื‘ื•ื ื’ ื–ื™ืš ื˜ื•ื˜ ื ื™ืฉื˜ ืœื™ื™ื’ืŸ ืงื™ื™ืŸ ืจืขืกื•ืจืกืŸ ืขืจื’ืขืฅ. ื“ืขืจ ืงืœืึทืก ืื™ื– ื“ื™ืกืงืจื™ื™ื‘ื“ ืื™ืŸ ืžืึทื ืึทืคืขืกื˜ื™ื™ืฉืึทื ื–:

# ะžะฟะธัะฐะฝะธะต ะบะปะฐััะฐ ะฝะฐั‡ะธะฝะฐะตั‚ัั ั ะบะปัŽั‡ะตะฒะพะณะพ ัะปะพะฒะฐ class ะธ ะตะณะพ ะฝะฐะทะฒะฐะฝะธั.
# ะ”ะฐะปัŒัˆะต ะธะดั‘ั‚ ั‚ะตะปะพ ะบะปะฐััะฐ ะฒ ั„ะธะณัƒั€ะฝั‹ั… ัะบะพะฑะบะฐั….
class example_class {
    ...
}

ื ืึธืš ื“ืขื, ื“ื™ ืงืœืึทืก ืงืขื ืขืŸ ื–ื™ื™ืŸ ื’ืขื•ื•ื™ื™ื ื˜:

# ะฟะตั€ะฒั‹ะน ะฒะฐั€ะธะฐะฝั‚ ะธัะฟะพะปัŒะทะพะฒะฐะฝะธั โ€” ะฒ ัั‚ะธะปะต ั€ะตััƒั€ัะฐ ั ั‚ะธะฟะพะผ class
class { 'example_class': }
# ะฒั‚ะพั€ะพะน ะฒะฐั€ะธะฐะฝั‚ ะธัะฟะพะปัŒะทะพะฒะฐะฝะธั โ€” ั ะฟะพะผะพั‰ัŒัŽ ั„ัƒะฝะบั†ะธะธ include
include example_class
# ะฟั€ะพ ะพั‚ะปะธั‡ะธะต ัั‚ะธั… ะดะฒัƒั… ะฒะฐั€ะธะฐะฝั‚ะพะฒ ะฑัƒะดะตั‚ ั€ะฐััะบะฐะทะฐะฝะพ ะดะฐะปัŒัˆะต

ืึท ื‘ื™ื™ืฉืคึผื™ืœ ืคื•ืŸ ื“ื™ ืคืจื™ืขืจื“ื™ืงืข ืึทืจื‘ืขื˜ - ืœืึธื–ืŸ ืื•ื ื“ื– ืžืึทืš ื“ื™ ื™ื ืกื˜ืึทืœื™ืจื•ื ื’ ืื•ืŸ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ ืคื•ืŸ nginx ืื™ืŸ ืึท ืงืœืึทืก:

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
}

ื•ื•ืขืจื™ืึทื‘ืึทืœื–

ื“ืขืจ ืงืœืึทืก ืคื•ืŸ ื“ื™ ืคืจื™ืขืจื“ื™ืงืข ื‘ื™ื™ึทืฉืคึผื™ืœ ืื™ื– ื ื™ืฉื˜ ืคืœืขืงืกืึทื‘ืึทืœ ืื™ืŸ ืึทืœืข ื•ื•ื™ื™ึทืœ ืขืก ืฉื˜ืขื ื“ื™ืง ื‘ืจืขื ื’ื˜ ื“ื™ ื–ืขืœื‘ืข nginx ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ. ืœืึธืžื™ืจ ืžืึทื›ืŸ ื“ืขื ื•ื•ืขื’ ืฆื• ื“ื™ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ ื‘ื™ื™ึทื˜ืขื•ื•ื“ื™ืง, ืื•ืŸ ื“ืขื ืงืœืึทืก ืงืขื ืขืŸ ื–ื™ื™ืŸ ื’ืขื•ื•ื™ื™ื ื˜ ืฆื• ื™ื ืกื˜ืึทืœื™ืจืŸ nginx ืžื™ื˜ ืงื™ื™ืŸ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ.

ืขืก ืงืขื ืขืŸ ื–ื™ื™ืŸ ื’ืขื˜ืืŸ ื ื™ืฆืŸ ื•ื•ืขืจื™ืึทื‘ืึทืœื–.

ืื›ื˜ื•ื ื’: ื•ื•ืขืจื™ืึทื‘ืึทืœื– ืื™ืŸ ืœื™ืึทืœืงืข ื–ืขื ืขืŸ ื™ืžื™ื•ื˜ืึทื‘ืึทืœ!

ืื™ืŸ ื“ืขืจืฆื•, ืึท ื‘ื™ื™ึทื˜ืขื•ื•ื“ื™ืง ืงืขื ืขืŸ ื–ื™ื™ืŸ ืึทืงืกืขืกื˜ ื‘ืœื•ื™ื– ื ืึธืš ืขืก ืื™ื– ื’ืขื•ื•ืขืŸ ื“ืขืจืงืœืขืจื˜, ืึทื ื“ืขืจืฉ ื“ื™ ื•ื•ืขืจื˜ ืคื•ืŸ ื“ื™ ื‘ื™ื™ึทื˜ืขื•ื•ื“ื™ืง ื•ื•ืขื˜ ื–ื™ื™ืŸ 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 ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ ืœื™ื’ื˜ ืื™ืŸ ื“ื™ ื‘ื™ื™ึทื˜ืขื•ื•ื“ื™ืง $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, 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',   # ะทะฐะดะฐั‘ะผ ะฟะฐั€ะฐะผะตั‚ั€ั‹ ะบะปะฐััะฐ ั‚ะพั‡ะฝะพ ั‚ะฐะบ ะถะต, ะบะฐะบ ะฟะฐั€ะฐะผะตั‚ั€ั‹ ะดะปั ะดั€ัƒะณะธั… ั€ะตััƒั€ัะพะฒ
  }
}

ืื™ืŸ Puppet, ื•ื•ืขืจื™ืึทื‘ืึทืœื– ื–ืขื ืขืŸ ื˜ื™ื™ืคึผื˜. ืขืกืŸ ืคื™ืœืข ื“ืึทื˜ืŸ ื˜ื™ื™ืคึผืก. ื“ืึทื˜ืŸ ื˜ื™ื™ืคึผืก ื–ืขื ืขืŸ ื˜ื™ืคึผื™ืงืœื™ ื’ืขื ื™ืฆื˜ ืฆื• ื•ื•ืึทืœืึทื“ื™ื™ื˜ ืคึผืึทืจืึทืžืขื˜ืขืจ ื•ื•ืึทืœื•ืขืก ื“ื•ืจื›ื’ืขื’ืื ื’ืขืŸ ืฆื• ืงืœืืกืŸ ืื•ืŸ ื–ื•ืš. ืื•ื™ื‘ ื“ืขืจ ื“ื•ืจื›ื’ืขื’ืื ื’ืขืŸ ืคึผืึทืจืึทืžืขื˜ืขืจ ืงืขืŸ ื ื™ืฉื˜ ืฉื˜ื™ืžืขืŸ ืžื™ื˜ ื“ื™ ืกืคึผืขืกื™ืคื™ืขื“ ื˜ื™ืคึผ, ืึท ื–ืึทืžืœื•ื ื’ ื˜ืขื•ืช ื•ื•ืขื˜ ืคึผืึทืกื™ืจืŸ.

ื“ืขืจ ื˜ื™ืคึผ ืื™ื– ื’ืขืฉืจื™ื‘ืŸ ื’ืœื™ื™ืš ืื™ื™ื“ืขืจ ื“ื™ ืคึผืึทืจืึทืžืขื˜ืขืจ ื ืึธืžืขืŸ:

class example (
  String $param1,
  Integer $param2,
  Array $param3,
  Hash $param4,
  Hash[String, String] $param5,
) {
  ...
}

ืงืœืืกืŸ: ืึทืจื™ื™ึทื ื ืขืžืขืŸ ืงืœืึทืกื ืึทืžืข ื•ื•ืก ืงืœืึทืก {'ืงืœืืกื ืึทืžืข':}

ื™ืขื“ืขืจ ืงืœืึทืก ืื™ื– ืึท ืžื™ื˜ืœ ืคื•ืŸ ื˜ื™ืคึผ ืงืœืึทืก. ื•ื•ื™ ืžื™ื˜ ืงื™ื™ืŸ ืื ื“ืขืจืข ื˜ื™ืคึผ ืคื•ืŸ ืžื™ื˜ืœ, ืขืก ืงืขื ืขืŸ ื ื™ื˜ ื–ื™ื™ืŸ ืฆื•ื•ื™ื™ ื™ื ืกื˜ืึทื ืกื™ื– ืคื•ืŸ ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ ืงืœืึทืก ืื•ื™ืฃ ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ ื ืึธื“ืข.

ืื•ื™ื‘ ืื™ืจ ืคึผืจื•ื‘ื™ืจืŸ ืฆื• ืœื™ื™ื’ืŸ ืึท ืงืœืึทืก ืฆื• ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ ื ืึธื“ืข ืฆื•ื•ื™ื™ ืžืึธืœ ื ื™ืฆืŸ class { 'classname':} (ืงื™ื™ืŸ ื—ื™ืœื•ืง, ืžื™ื˜ ืคืึทืจืฉื™ื“ืขื ืข ืึธื“ืขืจ ื™ื™ื“ืขื ื™ืงืึทืœ ืคึผืึทืจืึทืžืขื˜ืขืจืก), ืขืก ื•ื•ืขื˜ ื–ื™ื™ืŸ ืึท ื–ืึทืžืœื•ื ื’ ื˜ืขื•ืช. ืื‘ืขืจ ืื•ื™ื‘ ืื™ืจ ื ื•ืฆืŸ ืึท ืงืœืึทืก ืื™ืŸ ื“ื™ ืžื™ื˜ืœ ื ื•ืกื—, ืื™ืจ ืงืขื ืขืŸ ื’ืœื™ื™ืš ืฉื˜ืขืœืŸ ืึทืœืข ื–ื™ื™ึทืŸ ืคึผืึทืจืึทืžืขื˜ืขืจืก ืื™ืŸ ื“ื™ ื‘ืึทืฉื˜ื™ืžื˜.

ืึธื‘ืขืจ, ืื•ื™ื‘ ืื™ืจ ื ื•ืฆืŸ include, ื“ืขืžืึธืœื˜ ื“ืขืจ ืงืœืึทืก ืงืขื ืขืŸ ื–ื™ื™ืŸ ืžื•ืกื™ืฃ ื•ื•ื™ ืคื™ืœืข ืžืืœ ื•ื•ื™ ืื™ืจ ื•ื•ื™ืœื˜. ื“ืขืจ ืคืึทืงื˜ ืื™ื– ืึทื– include ืื™ื– ืึทืŸ ืื™ื“ืขืžืคึผืึธื˜ืขื ื˜ ืคึฟื•ื ืงืฆื™ืข ื•ื•ืึธืก ืงืึธื ื˜ืจืึธืœื™ืจืŸ ืฆื™ ืึท ืงืœืึทืก ืื™ื– ืฆื•ื’ืขืœื™ื™ื’ื˜ ืฆื• ื“ืขืจ ื•ื•ืขื’ื•ื•ื™ื™ึทื–ืขืจ. ืื•ื™ื‘ ื“ืขืจ ืงืœืึทืก ืื™ื– ื ื™ืฉื˜ ืื™ืŸ ื“ื™ ื•ื•ืขื’ื•ื•ื™ื™ึทื–ืขืจ, ืขืก ืžื•ืกื™ืฃ ืขืก, ืื•ืŸ ืื•ื™ื‘ ืขืก ืฉื•ื™ืŸ ื™ื’ื–ื™ืกืฅ, ืขืก ื˜ื•ื˜ ื’ืึธืจื ื™ืฉื˜. ืื‘ืขืจ ืื™ืŸ ืคืึทืœ ืคื•ืŸ ื ื™ืฆืŸ include ืื™ืจ ืงืขื ืขืŸ ื ื™ืฉื˜ ืฉื˜ืขืœืŸ ืงืœืึทืก ืคึผืึทืจืึทืžืขื˜ืขืจืก ื‘ืขืฉืึทืก ืงืœืึทืก ื“ืขืงืœืึทืจืึทืฆื™ืข - ืึทืœืข ืคืืจืœืื ื’ื˜ ืคึผืึทืจืึทืžืขื˜ืขืจืก ืžื•ื–ืŸ ื–ื™ื™ืŸ ืฉื˜ืขืœืŸ ืื™ืŸ ืึท ืคื•ื ื“ืจื•ื™ืกื ื“ื™ืง ื“ืึทื˜ืŸ ืžืงื•ืจ - Hiera ืึธื“ืขืจ ENC. ืžื™ืจ ื•ื•ืขืœืŸ ืจืขื“ืŸ ื•ื•ืขื’ืŸ ื–ื™ื™ ืื™ืŸ ื“ืขืจ ื•ื•ื™ื™ึทื˜ืขืจ ืึทืจื˜ื™ืงืœ.

ื“ืขืคื™ื ื™ืจื˜

ื•ื•ื™ ื’ืขื–ืึธื’ื˜ ืื™ืŸ ื“ืขื ืคืจื™ืขืจื“ื™ืงืŸ ื‘ืœืึธืง, ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ ืงืœืึทืก ืงืขืŸ ื ื™ืฉื˜ ื–ื™ื™ืŸ ืคืึธืจืฉื˜ืขืœืŸ ืื•ื™ืฃ ืึท ื ืึธื“ืข ืžืขืจ ื•ื•ื™ ืึทืžืึธืœ. ืึธื‘ืขืจ, ืื™ืŸ ืขื˜ืœืขื›ืข ืงืึทืกืขืก ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ืงืขื ืขืŸ ืฆื• ื ื•ืฆืŸ ื“ื™ ื–ืขืœื‘ืข ื‘ืœืึธืง ืคื•ืŸ ืงืึธื“ ืžื™ื˜ ืคืึทืจืฉื™ื“ืขื ืข ืคึผืึทืจืึทืžืขื˜ืขืจืก ืื•ื™ืฃ ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ ื ืึธื“ืข. ืื™ืŸ ืื ื“ืขืจืข ื•ื•ืขืจื˜ืขืจ, ืขืก ืื™ื– ืึท ื ื•ื™ื˜ ืคึฟืึทืจ ืึทืŸ ืื™ื™ื’ืขื ืข ืžื™ื˜ืœ.

ืคึฟืึทืจ ื‘ื™ื™ึทืฉืคึผื™ืœ, ืฆื• ื™ื ืกื˜ืึทืœื™ืจืŸ ื“ื™ PHP ืžืึธื“ื•ืœืข, ืžื™ืจ ื˜ืึธืŸ ื“ื™ ืคืืœื’ืขื ื“ืข ืื™ืŸ Avito:

  1. ื™ื ืกื˜ืึทืœื™ืจืŸ ื“ืขื ืคึผืขืงืœ ืžื™ื˜ ื“ืขื ืžืึธื“ื•ืœืข.
  2. ืœืึธืžื™ืจ ืžืึทื›ืŸ ืึท ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ ื˜ืขืงืข ืคึฟืึทืจ ื“ืขื ืžืึธื“ื•ืœืข.
  3. ืžื™ืจ ืžืึทื›ืŸ ืึท ืกื™ืžืœื™ื ืง ืฆื• ื“ื™ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ ืคึฟืึทืจ php-fpm.
  4. ืžื™ืจ ืžืึทื›ืŸ ืึท ืกื™ืžืœื™ื ืง ืฆื• ื“ื™ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ ืคึฟืึทืจ php ืงืœื™.

ืื™ืŸ ืึทื–ืึท ืงืึทืกืขืก, ืึท ืคึผืœืึทืŸ ืึทื–ืึท ื•ื•ื™ ื“ืขืคื™ื ื™ืจืŸ (ื“ืขืคื™ื ื™ืจืŸ, ื“ื™ืคื™ื™ื ื“ ื˜ื™ืคึผ, ื“ื™ืคื™ื™ื ื“ ืžื™ื˜ืœ ื˜ื™ืคึผ). ื ื“ืขืคื™ื ื™ืจืŸ ืื™ื– ืขื ืœืขืš ืฆื• ืึท ืงืœืึทืก, ืึธื‘ืขืจ ืขืก ื–ืขื ืขืŸ ื“ื™ืคืขืจืึทื ืกื™ื–: ืขืจืฉื˜ืขืจ, ื™ืขื“ืขืจ ื“ืขืคื™ื ื™ืจืŸ ืื™ื– ืึท ืžื™ื˜ืœ ื˜ื™ืคึผ, ื ื™ืฉื˜ ืึท ืžื™ื˜ืœ; ืฆื•ื•ื™ื™ื˜ื ืก, ื™ืขื“ืขืจ ื“ืขืคึฟื™ื ื™ืฆื™ืข ื”ืื˜ ืึทืŸ ื™ืžืคึผืœื™ืกืึทื˜ ืคึผืึทืจืึทืžืขื˜ืขืจ $title, ื•ื•ื• ื“ื™ ืžื™ื˜ืœ ื ืึธืžืขืŸ ื’ื™ื™ื˜ ื•ื•ืขืŸ ืขืก ืื™ื– ื“ืขืจืงืœืขืจื˜. ืื–ื•ื™ ื•ื•ื™ ืื™ืŸ ื“ื™ ืงืœืืกืŸ ื“ืืจืฃ ืžืขืŸ ืงื•ื“ื ื‘ืืฉืจื™ื™ื‘ืŸ ื ื“ืขืคื™ื ื™ืฆื™ืข, ื ืื›ื“ืขื ืงืขืŸ ืžืขืŸ ื–ื™ ื‘ืื ื•ืฆืŸ.

ื ืกื™ืžืคึผืœืึทืคื™ื™ื“ ื‘ื™ื™ึทืฉืคึผื™ืœ ืžื™ื˜ ืึท ืžืึธื“ื•ืœืข ืคึฟืึทืจ PHP:

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 }

ืžืึธื“ื•ืœืขืก

ื•ื•ืขืŸ ื“ื™ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ ืื™ื– ืงืœื™ื™ืŸ, ืขืก ืงืขื ืขืŸ ืœื™ื™ื›ื˜ ื–ื™ื™ืŸ ื’ืขื”ืืœื˜ืŸ ืื™ืŸ ืื™ื™ืŸ ื‘ืึทืฉื™ื™ึทืžืคึผืขืจืœืขืš. ืื‘ืขืจ ื“ื™ ืžืขืจ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทื ื– ืžื™ืจ ื‘ืึทืฉืจื™ื™ึทื‘ืŸ, ื“ื™ ืžืขืจ ืงืœืืกืŸ ืื•ืŸ ื ืึธื•ื“ื– ืขืก ื–ืขื ืขืŸ ืื™ืŸ ื“ื™ ืžืึทื ืึทืคืขืกื˜ื™ื™ืฉืึทืŸ, ืขืก ื•ื•ืืงืกื˜, ืื•ืŸ ืขืก ื•ื•ืขืจื˜ ื•ืžื‘ืึทืงื•ื•ืขื ืฆื• ืึทืจื‘ืขื˜ืŸ ืžื™ื˜.

ืื™ืŸ ืึทื“ื™ืฉืึทืŸ, ืขืก ืื™ื– ื“ื™ ืคึผืจืึธื‘ืœืขื ืคื•ืŸ ืงืึธื“ ืจื™ื™ื•ื– - ื•ื•ืขืŸ ืึทืœืข ื“ื™ ืงืึธื“ ืื™ื– ืื™ืŸ ืื™ื™ืŸ ื‘ืึทืฉื™ื™ึทืžืคึผืขืจืœืขืš, ืขืก ืื™ื– ืฉื•ื•ืขืจ ืฆื• ื˜ื™ื™ืœืŸ ื“ืขื ืงืึธื“ ืžื™ื˜ ืื ื“ืขืจืข. ืฆื• ืกืึธืœื•ื•ืข ื“ื™ ืฆื•ื•ื™ื™ ืคึผืจืึธื‘ืœืขืžืก, ืคึผืึทืคึผืขื˜ ื”ืื˜ ืึท ืขื ื˜ื™ื˜ื™ ื’ืขืจื•ืคืŸ ืžืึทื“ื–ืฉื•ืœื–.

ืžืึธื“ื•ืœืขืก - ื“ืึธืก ื–ืขื ืขืŸ ืฉื˜ืขืœื˜ ืคื•ืŸ ืงืœืืกืŸ, ื“ืขืคึฟื™ื ื™ืฆื™ืข ืื•ืŸ ืื ื“ืขืจืข ืœื™ืึทืœืงืข ืขื ื˜ื™ื˜ื™ื– ื’ืขืฉื˜ืขืœื˜ ืื™ืŸ ืึท ื‘ืึทื–ื•ื ื“ืขืจ ื•ื•ืขื’ื•ื•ื™ื™ึทื–ืขืจ. ืื™ืŸ ืื ื“ืขืจืข ื•ื•ืขืจื˜ืขืจ, ืึท ืžืึธื“ื•ืœืข ืื™ื– ืึท ืคืจื™ื™ึท ืฉื˜ื™ืง ืคื•ืŸ ืœื™ืึทืœืงืข ืœืึธื’ื™ืง. ืคึฟืึทืจ ื‘ื™ื™ึทืฉืคึผื™ืœ, ืขืก ืงืขืŸ ื–ื™ื™ืŸ ืึท ืžืึธื“ื•ืœืข ืคึฟืึทืจ ืืจื‘ืขื˜ืŸ ืžื™ื˜ nginx, ืื•ืŸ ืขืก ื•ื•ืขื˜ ืึทื ื˜ื”ืึทืœื˜ืŸ ื•ื•ืึธืก ืื•ืŸ ื‘ืœื•ื™ื– ื•ื•ืึธืก ืื™ื– ื“ืืจืฃ ืฆื• ืึทืจื‘ืขื˜ืŸ ืžื™ื˜ nginx, ืึธื“ืขืจ ืขืก ืงืขืŸ ื–ื™ื™ืŸ ืึท ืžืึธื“ื•ืœืข ืคึฟืึทืจ ืืจื‘ืขื˜ืŸ ืžื™ื˜ PHP, ืื•ืŸ ืึทื–ื•ื™ ืื•ื™ืฃ.

ืžืึธื“ื•ืœืขืก ื–ืขื ืขืŸ ื•ื•ืขืจืกื™ืขืก, ืื•ืŸ ื“ื™ ื“ื™ืคึผืขื ื“ืึทื ืกื™ื– ืคื•ืŸ ืžืึทื“ื–ืฉื•ืœื– ืื•ื™ืฃ ื™ืขื“ืขืจ ืื ื“ืขืจืขืจ ื–ืขื ืขืŸ ืื•ื™ืš ื’ืขืฉื˜ื™ืฆื˜. ืขืก ืื™ื– ืึทืŸ ืึธืคึฟืŸ ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™ ืคื•ืŸ ืžืึทื“ื–ืฉื•ืœื– - ืœื™ืึทืœืงืข ืคืึธืจื’ืข.

ืื•ื™ืฃ ื“ื™ ืœื™ืึทืœืงืข ืกืขืจื•ื•ืขืจ, ืžืึทื“ื–ืฉื•ืœื– ื–ืขื ืขืŸ ืœื™ื’ืŸ ืื™ืŸ ื“ื™ ืžืึทื“ื–ืฉื•ืœื– ืกื•ื‘ื“ื™ืจืขืงื˜ืึธืจื™ ืคื•ืŸ ื“ืขืจ ื•ื•ืึธืจืฆืœ ื•ื•ืขื’ื•ื•ื™ื™ึทื–ืขืจ. ื™ืŸ ื™ืขื“ืขืจ ืžืึธื“ื•ืœืข ืขืก ืื™ื– ืึท ื ืึธืจืžืึทืœ ื•ื•ืขื’ื•ื•ื™ื™ึทื–ืขืจ ืกื›ืขืžืข - ืžืึทื ืึทืคืขืกืฅ, ื˜ืขืงืขืก, ื˜ืขืžืคึผืœืึทื˜ืขืก, ืœื™ื‘, ืื•ืŸ ืึทื–ื•ื™ ืื•ื™ืฃ.

ื˜ืขืงืข ืกื˜ืจื•ืงื˜ื•ืจ ืื™ืŸ ืึท ืžืึธื“ื•ืœืข

ื“ืขืจ ื•ื•ืึธืจืฆืœ ืคื•ืŸ ื“ื™ ืžืึธื“ื•ืœืข ืงืขืŸ ืึทื ื˜ื”ืึทืœื˜ืŸ ื“ื™ ืคืืœื’ืขื ื“ืข ื“ื™ืจืขืงื˜ืขืจื™ื– ืžื™ื˜ ื“ื™ืกืงืจื™ืคึผื˜ื™ื•ื• ื ืขืžืขืŸ:

  • 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')

View ื“ืจืš <modulename>/<filename> ื™ืžืคึผืœื™ื™ื– ื˜ืขืงืข <rootdir>/modules/<modulename>/templates/<filename>.

ืื™ืŸ ื“ืขืจืฆื•, ืขืก ืื™ื– ืึท ืคึฟื•ื ืงืฆื™ืข inline_template - ืขืก ื ืขืžื˜ ื“ืขื ืžื•ืกื˜ืขืจ ื˜ืขืงืกื˜ ื•ื•ื™ ืึทืจื™ื™ึทื ืฉืจื™ื™ึทื‘, ื ื™ืฉื˜ ื“ื™ ื˜ืขืงืข ื ืึธืžืขืŸ.

ื™ืŸ ื˜ืขืžืคึผืœืึทื˜ืขืก, ืื™ืจ ืงืขื ืขืŸ ื ื•ืฆืŸ ืึทืœืข ืคึผืึทืคึผืขื˜ ื•ื•ืขืจื™ืึทื‘ืึทืœื– ืื™ืŸ ื“ืขื ืงืจืึทื ื˜ ืคืึทืจื ืขื.

ืœื™ืึทืœืงืข ืฉื˜ื™ืฆื˜ ื˜ืขืžืคึผืœืึทื˜ืขืก ืื™ืŸ ERB ืื•ืŸ EPP ืคึฟืึธืจืžืึทื˜:

ื‘ืขืงื™ืฆืขืจ ื•ื•ืขื’ืŸ ืขืจื‘

ืงืึธื ื˜ืจืึธืœ ืกื˜ืจื•ืงื˜ื•ืจ:

  • <%= ะ’ะซะ ะะ–ะ•ะะ˜ะ• %> โ€” ืึทืจืฒึทื ืœื™ื™ื’ืŸ ื“ืขื ื•ื•ืขืจื˜ ืคึฟื•ืŸ ื“ืขื ืื•ื™ืกื“ืจื•ืง
  • <% ะ’ะซะ ะะ–ะ•ะะ˜ะ• %> โ€” ืื•ื™ืกืจืขื›ืขื ืขืŸ ื“ืขื ื•ื•ืขืจื˜ ืคื•ืŸ ืืŸ ืื•ื™ืกื“ืจื•ืง (ืึธืŸ ืขืก ืืจื™ื™ื ืœื™ื™ื’ืŸ). ืงืึทื ื“ื™ืฉืึทื ืึทืœ ืกื˜ื™ื™ื˜ืžืึทื ืฅ (ืื•ื™ื‘) ืื•ืŸ ืœื•ืคึผืก (ื™ืขื“ืขืจ) ื™ื•ื–ืฉืึทื•ื•ืึทืœื™ ื’ื™ื™ืŸ ื“ืึธ.
  • <%# ะšะžะœะœะ•ะะขะะ ะ˜ะ™ %>

ืื•ื™ืกื“ืจื•ืงืŸ ืื™ืŸ ERB ื–ืขื ืขืŸ ื’ืขืฉืจื™ื‘ืŸ ืื™ืŸ ืจื•ื‘ื™ (ืขืจื‘ ืื™ื– ืคืืงื˜ื™ืฉ ืขืžื‘ืขื“ื™ื“ ืจื•ื‘ื™).

ืฆื• ืึทืงืกืขืก ื•ื•ืขืจื™ืึทื‘ืึทืœื– ืคื•ืŸ ื“ื™ ืžืึทื ืึทืคืขืกื˜ื™ื™ืฉืึทืŸ, ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ืœื™ื™ื’ืŸ @ ืฆื• ื“ื™ ื•ื•ืขืจื™ืึทื‘ืึทืœ ื ืึธืžืขืŸ. ืฆื• ื‘ืึทื–ื™ื™ึทื˜ื™ืงืŸ ืึท ืฉื•ืจื” ื‘ืจืขื›ืŸ ื•ื•ืึธืก ืื™ื– ืืจื•ื™ืก ื ืึธืš ืึท ืงืึธื ื˜ืจืึธืœ ืงืึทื ืกื˜ืจืึทืงืฉืึทืŸ, ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ื ื•ืฆืŸ ืึท ืงืœืึธื•ื–ื™ื ื’ ืงื•ื•ื™ื˜ืœ -%>.

ื‘ื™ื™ึทืฉืคึผื™ืœ ืคื•ืŸ ื ื™ืฆืŸ ื“ื™ ืžื•ืกื˜ืขืจ

ื–ืืœ ืก ื–ืึธื’ืŸ ืื™ืš ื‘ื™ืŸ ืฉืจื™ื™ื‘ืŸ ืึท ืžืึธื“ื•ืœืข ืฆื• ืงืึธื ื˜ืจืึธืœื™ืจืŸ ZooKeeper. ื“ืขืจ ืงืœืึทืก ืคืึทืจืึทื ื˜ื•ื•ืึธืจื˜ืœืขืš ืคึฟืึทืจ ืงืจื™ื™ื™ื˜ื™ื ื’ ื“ื™ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ ืงื•ืงื˜ ืขืคึผืขืก ื•ื•ื™ ื“ืึธืก:

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 -%>

Facts ืื•ืŸ ื’ืขื‘ื•ื™ื˜-ืื™ืŸ ื•ื•ืขืจื™ืึทื‘ืึทืœื–

ืึธืคื˜ ื“ืขืจ ืกืคึผืขืฆื™ืคื™ืฉ ื˜ื™ื™ืœ ืคื•ืŸ ื“ื™ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ ื“ืขืคึผืขื ื“ืก ืื•ื™ืฃ ื•ื•ืึธืก ืื™ื– ืื™ืฆื˜ ื’ืขืฉืขืขื ื™ืฉ ืื•ื™ืฃ ื“ื™ ื ืึธื“ืข. ืคึฟืึทืจ ื‘ื™ื™ึทืฉืคึผื™ืœ, ื“ื™ืคึผืขื ื“ื™ื ื’ ืื•ื™ืฃ ื•ื•ืึธืก ื“ืขื‘ื™ืึทืŸ ืžืขืœื“ื•ื ื’ ืื™ื–, ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ื™ื ืกื˜ืึทืœื™ืจืŸ ืื™ื™ืŸ ืึธื“ืขืจ ืื ื“ืขืจืŸ ื•ื•ืขืจืกื™ืข ืคื•ืŸ โ€‹โ€‹ื“ืขื ืคึผืขืงืœ. ืื™ืจ ืงืขื ืขืŸ ืžืึธื ื™ื˜ืึธืจ ืึทืœืข ื“ืขื ืžืึทื ื™ื•ืึทืœื™, ืจื™ืจื™ื™ื˜ื™ื ื’ ืžืึทื ืึทืคืขืกื˜ื™ื– ืื•ื™ื‘ ื ืึธื•ื“ื– ื˜ื•ื™ืฉืŸ. ืื‘ืขืจ ื“ืึธืก ืื™ื– ื ื™ืฉื˜ ืึท ืขืจื ืกื˜ ืฆื•ื’ืึทื ื’;

ืฆื• ืงืจื™ื’ืŸ ืื™ื ืคึฟืึธืจืžืึทืฆื™ืข ื•ื•ืขื’ืŸ ื ืึธื•ื“ื–, ืคึผืึทืคึผืขื˜ ื”ืื˜ ืึท ืžืขืงืึทื ื™ื–ืึทื ื’ืขืจื•ืคืŸ ืคืืงื˜ืŸ. ืคืึทืงืก - ื“ืึธืก ืื™ื– ืื™ื ืคึฟืึธืจืžืึทืฆื™ืข ื•ื•ืขื’ืŸ ื“ืขื ื ืึธื“ืข, ื‘ื ื™ืžืฆื ืื™ืŸ ืžืึทื ืึทืคืขืกื˜ื™ื™ืฉืึทื ื– ืื™ืŸ ื“ื™ ืคืึธืจืขื ืคื•ืŸ ืคึผืจืึธืกื˜ ื•ื•ืขืจื™ืึทื‘ืึทืœื– ืื™ืŸ ื“ื™ ื’ืœืื‘ืืœืข ื ืึทืžืขืกืคึผืึทืกืข. ืคึฟืึทืจ ื‘ื™ื™ึทืฉืคึผื™ืœ, ื‘ืึทืœืขื‘ืึธืก ื ืึธืžืขืŸ, ืึธืคึผืขืจื™ื™ื˜ื™ื ื’ ืกื™ืกื˜ืขื ื•ื•ืขืจืกื™ืข, ืคึผืจืึทืกืขืกืขืจ ืึทืจืงืึทื˜ืขืงื˜ืฉืขืจ, ืจืฉื™ืžื” ืคื•ืŸ ื ื™ืฆืขืจืก, ืจืฉื™ืžื” ืคื•ืŸ ื ืขืฅ ื™ื ื˜ืขืจืคื™ื™ืกื™ื– ืื•ืŸ ื–ื™ื™ืขืจ ืึทื“ืจืขืกืขืก, ืื•ืŸ ืคื™ืœ, ืคื™ืœ ืžืขืจ. ืคืืงื˜ืŸ ื–ืขื ืขืŸ ื‘ื ื™ืžืฆื ืื™ืŸ ืžืึทื ื™ืคืขืกืฅ ืื•ืŸ ื˜ืขืžืคึผืœืึทื˜ืขืก ื•ื•ื™ ืจืขื’ื•ืœืขืจ ื•ื•ืขืจื™ืึทื‘ืึทืœื–.

ื ื‘ื™ื™ืฉืคื™ืœ ืคื•ืŸ ืืจื‘ืขื˜ืŸ ืžื™ื˜ ืคืืงื˜ืŸ:

notify { "Running OS ${facts['os']['name']} version ${facts['os']['release']['full']}": }
# ั€ะตััƒั€ั ั‚ะธะฟะฐ notify ะฟั€ะพัั‚ะพ ะฒั‹ะฒะพะดะธั‚ ัะพะพะฑั‰ะตะฝะธะต ะฒ ะปะพะณ

ืคืึธืจืžืึทืœ ื’ืขืจืขื“ื˜, ืึท ืคืึทืงื˜ ื”ืื˜ ืึท ื ืึธืžืขืŸ (ืฉื˜ืจื™ืงืœ) ืื•ืŸ ืึท ื•ื•ืขืจื˜ (ืคืึทืจืฉื™ื“ืขื ืข ื˜ื™ื™ืคึผืก ื–ืขื ืขืŸ ื‘ื ื™ืžืฆื: ืกื˜ืจื™ื ื’ืก, ืขืจื™ื™ื–, ื•ื•ืขืจื˜ืขืจื‘ื•ืš). ืขืกืŸ ืกื›ื•ื ืคื•ืŸ ื’ืขื‘ื•ื™ื˜-ืื™ืŸ ืคืืงื˜ืŸ. ืื™ืจ ืงืขื ื˜ ืื•ื™ืš ืฉืจื™ื™ึทื‘ืŸ ื“ื™ื™ืŸ ืื™ื™ื’ืขื ืข. ืคืึทืงื˜ ืงืึทืœืขืงื˜ืขืจื– ื–ืขื ืขืŸ ื“ื™ืกืงืจื™ื™ื‘ื“ ื•ื•ื™ ืคืึทื ื’ืงืฉืึทื ื– ืื™ืŸ ืจื•ื‘ื™, ืึธื“ืขืจ ื•ื•ื™ ืขืงืกืขืงื•ื˜ืึทื‘ืœืข ื˜ืขืงืขืก. Facts ืงืขื ืขืŸ ืื•ื™ืš ื–ื™ื™ืŸ ื“ืขืจืœืื ื’ื˜ ืื™ืŸ ื“ื™ ืคืึธืจืขื ื˜ืขืงืกื˜ ื˜ืขืงืขืก ืžื™ื˜ ื“ืึทื˜ืŸ ืื•ื™ืฃ ื“ื™ ื ืึธื•ื“ื–.

ื‘ืขืฉืึทืก ืึธืคึผืขืจืึทืฆื™ืข, ื“ืขืจ ืœื™ืึทืœืงืข ืึทื’ืขื ื˜ ืขืจืฉื˜ืขืจ ืงืืคื™ืขืก ืึทืœืข ื‘ื ื™ืžืฆื ืคืึทืงื˜ ืงืึทืœืขืงื˜ืขืจื– ืคื•ืŸ ื“ื™ ืคึผืึทืคึผืคึผืขื˜ืกืขืจื•ื•ืขืจ ืฆื• ื“ื™ ื ืึธื“ืข, ื ืึธืš ื•ื•ืึธืก ืขืก ืœืึธื ื˜ืฉื™ื– ื–ื™ื™ ืื•ืŸ ืกืขื ื“ื– ื“ื™ ื’ืขื–ืืžืœื˜ ืคืืงื˜ืŸ ืฆื• ื“ื™ ืกืขืจื•ื•ืขืจ; ื ืึธืš ื“ืขื, ื“ืขืจ ืกืขืจื•ื•ืขืจ ื”ื™ื™ื‘ื˜ ืฆื• ืฆื•ื ื•ื™ืคืฉื˜ืขืœืŸ ื“ืขื ืงืึทื˜ืึทืœืึธื’.

Facts ืื™ืŸ ื“ื™ ืคืึธืจืขื ืคื•ืŸ ืขืงืกืขืงื•ื˜ืึทื‘ืœืข ื˜ืขืงืขืก

ืึทื–ืึท ืคืืงื˜ืŸ ื–ืขื ืขืŸ ื’ืขืฉื˜ืขืœื˜ ืื™ืŸ ืžืึทื“ื–ืฉื•ืœื– ืื™ืŸ ื“ื™ ื•ื•ืขื’ื•ื•ื™ื™ึทื–ืขืจ 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: $facts['fqdn'];
  • ื ื™ืฆืŸ ื“ื™ ืคืึทืงื˜ ื ืึธืžืขืŸ ื•ื•ื™ ื“ื™ ื‘ื™ื™ึทื˜ืขื•ื•ื“ื™ืง ื ืึธืžืขืŸ: $fqdn.

ืขืก ืื™ื– ื‘ืขืกื˜ืขืจ ืฆื• ื ื•ืฆืŸ ืึท ื•ื•ืขืจื˜ืขืจื‘ื•ืš $facts, ืึธื“ืขืจ ืืคื™ืœื• ื‘ืขืกืขืจ, ืึธื ื•ื•ื™ื™ึทื–ืŸ ื“ื™ ื’ืœืื‘ืืœืข ื ืึทืžืขืกืคึผืึทืกืข ($::facts).

ื“ืึธ ืื™ื– ื“ื™ ื‘ืึทื˜ื™ื™ึทื˜ื™ืง ืึธืคึผื˜ื™ื™ืœื•ื ื’ ืคื•ืŸ ื“ื™ ื“ืึทืงื™ื•ืžืขื ื˜ื™ื™ืฉืึทืŸ.

ื’ืขื‘ื•ื™ื˜-ืื™ืŸ ื•ื•ืขืจื™ืึทื‘ืึทืœื–

ื—ื•ืฅ ื“ื™ ืคืืงื˜ืŸ ืื™ื– ื“ื ืื•ื™ืš ืขื˜ืœืขื›ืข ื•ื•ืขืจื™ืึทื‘ืึทืœื–, ื‘ื ื™ืžืฆื ืื™ืŸ ื“ื™ ื’ืœืื‘ืืœืข ื ืึทืžืขืกืคึผืึทืกืข.

  • ื˜ืจืึทืกื˜ื™ื“ ืคืืงื˜ืŸ - ื•ื•ืขืจื™ืึทื‘ืึทืœื– ื•ื•ืึธืก ื–ืขื ืขืŸ ื’ืขื ื•ืžืขืŸ ืคื•ืŸ ื“ืขื ืงืœื™ืขื ื˜ ืก ื‘ืึทื•ื•ื™ื™ึทื–ืŸ (ื–ื™ื ื˜ ื“ื™ ื‘ืึทื•ื•ื™ื™ึทื–ืŸ ืื™ื– ื™ื•ื–ืฉืึทื•ื•ืึทืœื™ ืืจื•ื™ืก ืื•ื™ืฃ ืึท ืคึผืึธืคึผืคึผืขื˜ ืกืขืจื•ื•ืขืจ, ื“ืขืจ ืึทื’ืขื ื˜ ืงืขืŸ ื ื™ืฉื˜ ื ืึธืจ ื ืขืžืขืŸ ืื•ืŸ ื˜ื•ื™ืฉืŸ ื–ื™ื™ืŸ ื‘ืึทื•ื•ื™ื™ึทื–ืŸ, ืึทื–ื•ื™ ื“ื™ ื•ื•ืขืจื™ืึทื‘ืึทืœื– ื–ืขื ืขืŸ "ื˜ืจืึทืกื˜ื™ื“"): ื“ื™ ื ืึธืžืขืŸ ืคื•ืŸ ื“ื™ ื‘ืึทื•ื•ื™ื™ึทื–ืŸ, ื“ื™ ื ืึธืžืขืŸ ืคื•ืŸ ื“ื™ ื‘ืึทื•ื•ื™ื™ึทื–ืŸ. ื‘ืึทืœืขื‘ืึธืก ืื•ืŸ ืคืขืœื“, ื™ืงืกื˜ืขื ืฉืึทื ื– ืคื•ืŸ ื“ื™ ื‘ืึทื•ื•ื™ื™ึทื–ืŸ.
  • ืกืขืจื•ื•ืขืจ ืคืืงื˜ืŸ - ื•ื•ืขืจื™ืึทื‘ืึทืœื– ืฉื™ื™ึทื›ื•ืช ืฆื• ืื™ื ืคึฟืึธืจืžืึทืฆื™ืข ื•ื•ืขื’ืŸ ื“ื™ ืกืขืจื•ื•ืขืจ - ื•ื•ืขืจืกื™ืข, ื ืึธืžืขืŸ, ืกืขืจื•ื•ืขืจ IP ืึทื“ืจืขืก, ืกื•ื•ื™ื•ื•ืข.
  • ืึทื’ืขื ื˜ ืคืืงื˜ืŸ - ื•ื•ืขืจื™ืึทื‘ืึทืœื– ืฆื•ื’ืขื’ืขื‘ืŸ ื’ืœื™ื™ึทืš ื“ื•ืจืš ืœื™ืึทืœืงืข-ืึทื’ืขื ื˜, ืื•ืŸ ื ื™ืฉื˜ ื“ื•ืจืš ืคืึทืงื˜ - ื‘ืึทื•ื•ื™ื™ึทื–ืŸ ื ืึธืžืขืŸ, ืึทื’ืขื ื˜ ื•ื•ืขืจืกื™ืข, ืœื™ืึทืœืงืข ื•ื•ืขืจืกื™ืข.
  • ื‘ืขืœ ื•ื•ืขืจื™ืึทื‘ืึทืœื– - ืคึผืึทืคึผืขื˜ืžืึทืกื˜ืขืจ ื•ื•ืขืจื™ืึทื‘ืึทืœื– (ืกื™ืง!). ืขืก ืื™ื– ื•ื•ืขื’ืŸ ื“ื™ ื–ืขืœื‘ืข ื•ื•ื™ ืื™ืŸ ืกืขืจื•ื•ืขืจ ืคืืงื˜ืŸ, ืคึผืœื•ืก ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ ืคึผืึทืจืึทืžืขื˜ืขืจ ื•ื•ืึทืœื•ืขืก ื–ืขื ืขืŸ ื‘ืืจืขื›ื˜ื™ื’ื˜.
  • ืงืึทืžืคึผื™ื™ืœืขืจ ื•ื•ืขืจื™ืึทื‘ืึทืœื– - ืงืึทืžืคึผื™ื™ืœืขืจ ื•ื•ืขืจื™ืึทื‘ืึทืœื– ื•ื•ืึธืก ื–ืขื ืขืŸ ืึทื ื“ืขืจืฉ ืื™ืŸ ื™ืขื“ืขืจ ืคืึทืจื ืขื: ื“ื™ ื ืึธืžืขืŸ ืคื•ืŸ ื“ืขื ืงืจืึทื ื˜ ืžืึธื“ื•ืœืข ืื•ืŸ ื“ื™ ื ืึธืžืขืŸ ืคื•ืŸ ื“ื™ ืžืึธื“ื•ืœืข ืื™ืŸ ื•ื•ืึธืก ื“ื™ ืงืจืึทื ื˜ ื›ื™ื™ืคืขืฅ ืื™ื– ืึทืงืกืขืกื˜. ื–ื™ื™ ืงืขื ืขืŸ ื–ื™ื™ืŸ ื’ืขื•ื•ื™ื™ื ื˜, ืœืžืฉืœ, ืฆื• ืงืึธื ื˜ืจืึธืœื™ืจืŸ ืึทื– ื“ื™ื™ืŸ ืคึผืจื™ื•ื•ืึทื˜ ืงืœืืกืŸ ื–ืขื ืขืŸ ื ื™ืฉื˜ ื’ืขื•ื•ื™ื™ื ื˜ ื’ืœื™ื™ึทืš ืคึฟื•ืŸ ืื ื“ืขืจืข ืžืึทื“ื–ืฉื•ืœื–.

Addendum 1: ื•ื•ื™ ืฆื• ืœื•ื™ืคืŸ ืื•ืŸ ื“ื™ื‘ืึทื’ื™ื ื’ ืึทืœืข ื“ืขื?

ื“ืขืจ ืึทืจื˜ื™ืงืœ ื›ึผื•ืœืœ ืคื™ืœืข ื‘ื™ื™ืฉืคื™ืœืŸ ืคื•ืŸ ืœื™ืึทืœืงืข ืงืึธื“, ืึธื‘ืขืจ ื”ืื˜ ื ื™ืฉื˜ ื–ืึธื’ืŸ ืื•ื ื“ื– ื•ื•ื™ ืฆื• ืœื•ื™ืคืŸ ื“ืขื ืงืึธื“. ื ื•, ืื™ืš ืคืืจืจื™ื›ื˜ ื–ื™ืš.

ืึทืŸ ืึทื’ืขื ื˜ ืื™ื– ื’ืขื ื•ื’ ืฆื• ืœื•ื™ืคืŸ Puppet, ืึธื‘ืขืจ ืคึฟืึทืจ ืจื•ื‘ึฟ ืงืึทืกืขืก ืื™ืจ ื•ื•ืขื˜ ืื•ื™ืš ื“ืึทืจืคึฟืŸ ืึท ืกืขืจื•ื•ืขืจ.

ืึทื’ืขื ื˜

ืื™ืŸ ืžื™ื ื“ืกื˜ืขืจ ื–ื™ื ื˜ ื•ื•ืขืจืกื™ืข 5, ืœื™ืึทืœืงืข-ืึทื’ืขื ื˜ ืคึผืึทืงืึทื“ื–ืฉืึทื– ืคื•ืŸ ื‘ืึทืึทืžื˜ืขืจ Puppetlabs ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™ ืึทื ื˜ื”ืึทืœื˜ืŸ ืึทืœืข ื“ื™ ื“ื™ืคึผืขื ื“ืึทื ืกื™ื– (ืจื•ื‘ื™ืŸ ืื•ืŸ ื“ื™ ืงืึธืจืึทืกืคึผืึทื ื“ื™ื ื’ ื’ืขืžืก), ืึทื–ื•ื™ ืขืก ื–ืขื ืขืŸ ืงื™ื™ืŸ ื™ื™ึทื ืžืึธื ื˜ื™ืจื•ื ื’ ืฉื•ื•ืขืจื™ืงื™ื™ื˜ืŸ (ืื™ืš ื‘ื™ืŸ ื’ืขืจืขื“ื˜ ื•ื•ืขื’ืŸ ื“ืขื‘ื™ืึทืŸ-ื‘ืื–ื™ืจื˜ ื“ื™ืกื˜ืจื™ื‘ื™ื•ืฉืึทื ื– - ืžื™ืจ ื˜ืึธืŸ ื ื™ื˜ ื ื•ืฆืŸ ืจืคึผื-ื‘ืื–ื™ืจื˜ ื“ื™ืกื˜ืจื™ื‘ื™ื•ืฉืึทื ื–).

ืื™ืŸ ื“ื™ ืกื™ืžืคึผืœืึทืกื˜ ืคืึทืœ, ืฆื• ื ื•ืฆืŸ ื“ื™ ืœื™ืึทืœืงืข ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ, ืขืก ืื™ื– ื’ืขื ื•ื’ ืฆื• ืงืึทื˜ืขืจ ื“ืขื ืึทื’ืขื ื˜ ืื™ืŸ ืกืขืจื•ื•ืขืจืœืขืกืก ืžืึธื“ืข: ืฆื•ื’ืขืฉื˜ืขืœื˜ ืึทื– ื“ื™ ืœื™ืึทืœืงืข ืงืึธื“ ืื™ื– ืงืึทืคึผื™ื“ ืฆื• ื“ื™ ื ืึธื“ืข, ืงืึทื˜ืขืจ 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.

ืกืขืจื•ื•ื™ืจืขืจ

ืื™ืš ื•ื•ืขืœ ื ื™ืฉื˜ ื‘ืึทื˜ืจืึทื›ื˜ืŸ ื“ื™ ืคื•ืœ ืกืขื˜ืึทืคึผ ืคื•ืŸ ื“ื™ ืคึผืึทืคึผืคึผืขื˜ืกืขืจื•ื•ืขืจ ืื•ืŸ ื“ื™ืคึผืœื•ื™ื™ื ื’ ืงืึธื“ ืื™ืŸ ื“ืขื ืึทืจื˜ื™ืงืœ, ืื™ืš ื•ื•ืขืœ ื ืึธืจ ื–ืึธื’ืŸ ืึทื– ืคึฟื•ืŸ ื“ื™ ืงืขืกื˜ืœ ืขืก ืื™ื– ืึท ื’ืึธืจ ืคืึทื ื’ืงืฉืึทื ืึทืœ ื•ื•ืขืจืกื™ืข ืคื•ืŸ โ€‹โ€‹โ€‹โ€‹ื“ื™ ืกืขืจื•ื•ืขืจ ื•ื•ืึธืก ื˜ื•ื˜ ื ื™ืฉื˜ ื“ืึทืจืคืŸ ื ืึธืš ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ ืฆื• ืึทืจื‘ืขื˜ืŸ ืžื™ื˜ ืึท ืงืœื™ื™ืŸ ื ื•ืžืขืจ ืคื•ืŸ; ื ืึธื•ื“ื– (ื–ืึธื’ืŸ, ืึทืจื•ื™ืฃ ืฆื• ืึท ื”ื•ื ื“ืขืจื˜). ื ื’ืจืขืกืขืจืข ื ื•ืžืขืจ ืคื•ืŸ ื ืึธื•ื“ื– ื•ื•ืขื˜ ื“ืึทืจืคืŸ ื˜ื•ื ื™ื ื’ - ื“ื•ืจืš ืคืขืœื™ืงื™ื™ึทื˜, ืคึผื•ืคึผืคึผืขื˜ืกืขืจื•ื•ืขืจ ืœืึธื ื˜ืฉื™ื– ื ื™ื˜ ืžืขืจ ื•ื•ื™ ืคื™ืจ ื˜ื•ืขืจืก, ืคึฟืึทืจ ืึท ื’ืจืขืกืขืจืข ืคืึธืจืฉื˜ืขืœื•ื ื’ ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ืคืึทืจื’ืจืขืกืขืจืŸ ื–ื™ื™ืขืจ ื ื•ืžืขืจ ืื•ืŸ ื˜ืึธืŸ ื ื™ื˜ ืคืึทืจื’ืขืกืŸ ืฆื• ืคืึทืจื’ืจืขืกืขืจืŸ ื“ื™ ื–ื™ืงืึธืจืŸ ืœื™ืžืึทืฅ, ืึทื ื“ืขืจืฉ ื“ืขืจ ืกืขืจื•ื•ืขืจ ื•ื•ืขื˜ ืงืœื™ื™ึทื‘ืŸ ืžื™ืกื˜ ืจื•ื‘ึฟ ืคื•ืŸ ื“ื™ ืฆื™ื™ื˜.

ืงืึธื“ ื“ื™ืคึผืœื•ื™ืžืึทื ื˜ - ืื•ื™ื‘ ืื™ืจ ื“ืึทืจืคึฟืŸ ืขืก ื’ืขืฉื•ื•ื™ื ื“ ืื•ืŸ ืœื™ื™ื›ื˜, ืงื•ืง (ืื™ืŸ r10k)[https://github.com/puppetlabs/r10k], ืคึฟืึทืจ ืงืœื™ื™ืŸ ื™ื ืกื˜ืึทืœื™ื™ืฉืึทื ื– ืขืก ื–ืึธืœ ื–ื™ื™ืŸ ื’ืึทื ืฅ ื’ืขื ื•ื’.

ืึทื“ืขื ื“ื•ื 2: ืงืึธื“ื™ืจื•ื ื’ ื’ื™ื™ื“ืœื™ื™ื ื–

  1. ืฉื˜ืขืœืŸ ืึทืœืข ืœืึธื’ื™ืง ืื™ืŸ ืงืœืืกืŸ ืื•ืŸ ื–ื•ืš.
  2. ื”ืึทืœื˜ืŸ ืงืœืืกืŸ ืื•ืŸ ื“ืขืคึฟื™ื ื™ืฆื™ืข ืื™ืŸ ืžืึทื“ื–ืฉื•ืœื–, ื ื™ืฉื˜ ืื™ืŸ ืžืึทื ื™ืคืขืกืฅ ื“ื™ืกืงืจื™ื™ื‘ื™ื ื’ ื ืึธื•ื“ื–.
  3. ื ื™ืฆืŸ ื“ื™ ืคืืงื˜ืŸ.
  4. ื“ื• ื–ืืœืกื˜ ื ื™ืฉื˜ ืžืึทื›ืŸ ืื•ื™ื‘ ื‘ืื–ื™ืจื˜ ืื•ื™ืฃ ื”ืึธืกื˜ื ืึทืžืขืก.
  5. ืคื™ืœืŸ ืคืจื™ื™ ืฆื• ืœื™ื™ื’ืŸ ืคึผืึทืจืึทืžืขื˜ืขืจืก ืคึฟืึทืจ ืงืœืืกืŸ ืื•ืŸ ื–ื•ืš - ื“ืึธืก ืื™ื– ื‘ืขืกืขืจ ื•ื•ื™ ื™ืžืคึผืœื™ืกืึทื˜ ืœืึธื’ื™ืง ืคืึทืจื‘ืึธืจื’ืŸ ืื™ืŸ ื“ื™ ื’ื•ืฃ ืคื•ืŸ ื“ื™ ืงืœืึทืก / ื“ืขืคื™ื ื™ืจืŸ.

ืื™ืš ื•ื•ืขื˜ ื“ืขืจืงืœืขืจืŸ ื•ื•ืึธืก ืื™ืš ืจืขืงืึธืžืขื ื“ื™ืจืŸ ืฆื• ื˜ืึธืŸ ื“ืึธืก ืื™ืŸ ื“ืขืจ ื•ื•ื™ื™ึทื˜ืขืจ ืึทืจื˜ื™ืงืœ.

ืกืึธืฃ

ื–ืืœ ืก ืขื ื“ื™ืงืŸ ืžื™ื˜ ื“ื™ ื”ืงื“ืžื”. ืื™ืŸ ื“ืขืจ ื•ื•ื™ื™ึทื˜ืขืจ ืึทืจื˜ื™ืงืœ ืื™ืš ื•ื•ืขืœ ื–ืึธื’ืŸ ืื™ืจ ื•ื•ืขื’ืŸ Hiera, ENC ืื•ืŸ PuppetDB.

ื‘ืœื•ื™ื– ืจืขื’ื™ืกื˜ืจื™ืจื˜ ื ื™ืฆืขืจืก ืงืขื ืขืŸ ืึธื ื˜ื™ื™ืœ ื ืขืžืขืŸ ืื™ืŸ ื“ื™ ื™ื‘ืขืจื‘ืœื™ืง. ืกื™ื™ืŸ ืืจื™ื™ืŸื‘ื™ื˜ืข.

ืื™ืŸ ืคืึทืงื˜, ืขืก ืื™ื– ืคื™ืœ ืžืขืจ ืžืึทื˜ืขืจื™ืึทืœ - ืื™ืš ืงืขื ืขืŸ ืฉืจื™ื™ึทื‘ืŸ ืึทืจื˜ื™ืงืœืขืŸ ืื•ื™ืฃ ื“ื™ ืคืืœื’ืขื ื“ืข ื˜ืขืžืขืก, ืฉื˜ื™ืžืขืŸ ืื•ื™ืฃ ื•ื•ืึธืก ืื™ืจ ื•ื•ืึธืœื˜ ื–ื™ื™ืŸ ืื™ื ื˜ืขืจืขืกื™ืจื˜ ืื™ืŸ ืœื™ื™ืขื ืขืŸ ื•ื•ืขื’ืŸ:

  • ืงืกื ื•ืžืงืก%ืึทื•ื•ืึทื ืกื™ืจื˜ืข ืœื™ืึทืœืงืข ืงืึทื ืกื˜ืจืึทืงืฉืึทื ื– - ืขื˜ืœืขื›ืข ื“ืจืขืง ืื•ื™ืฃ ื“ืขืจ ื•ื•ื™ื™ึทื˜ืขืจ ืžื“ืจื’ื”: ืœื•ืคึผืก, ืžืึทืคึผื™ื ื’ ืื•ืŸ ืื ื“ืขืจืข ืœืึทืžื‘ื“ืึท ืื•ื™ืกื“ืจื•ืงืŸ, ืžื™ื˜ืœ ืงืึทืœืขืงื˜ืขืจื–, ื™ืงืกืคึผืึธืจื˜ืึทื“ ืจืขืกื•ืจืกืŸ ืื•ืŸ ื™ื ื˜ืขืจ-ื‘ืึทืœืขื‘ืึธืก ืงืึธืžื•ื ื™ืงืึทืฆื™ืข ื“ื•ืจืš ืœื™ืึทืœืงืข, ื˜ืึทื’ืก, ืคึผืจืึทื•ื•ื™ื™ื“ืขืจื–, ืึทื‘ืกื˜ืจืึทืงื˜ ื“ืึทื˜ืŸ ื˜ื™ื™ืคึผืก.13
  • ืงืกื ื•ืžืงืก%"ืื™ืš ื‘ื™ืŸ ื“ืขืจ ืึทื“ืžื™ื ื™ืกื˜ืจืึทื˜ืึธืจ ืคื•ืŸ ืžื™ื™ืŸ ืžื•ื˜ืขืจ" ืึธื“ืขืจ ื•ื•ื™ ืžื™ืจ ืื™ืŸ ืึทื•ื•ื™ื˜ืึธ ื”ืึธื‘ืŸ ืคืจืขื ื“ื– ืžื™ื˜ ืขื˜ืœืขื›ืข ื˜ืึทืคึผืขื˜ืŸ ืกืขืจื•ื•ืขืจืก ืคื•ืŸ ืคืึทืจืฉื™ื“ืขื ืข ื•ื•ืขืจืกื™ืขืก, ืื•ืŸ, ืื™ืŸ ืคึผืจื™ื ืฆื™ืคึผ, ื“ืขืจ ื˜ื™ื™ืœ ื•ื•ืขื’ืŸ ืึทื“ืžื™ื ืึทืกื˜ืขืจื™ื ื’ ื“ื™ ื˜ืึทืคึผืขื˜ืŸ ืกืขืจื•ื•ืขืจ.
  • ืงืกื ื•ืžืงืก%ื•ื•ื™ ืžื™ืจ ืฉืจื™ื™ึทื‘ืŸ ืœื™ืึทืœืงืข ืงืึธื“: ื™ื ืกื˜ืจืึทืžืขื ื˜ื™ื™ืฉืึทืŸ, ื“ืึทืงื™ื•ืžืขื ื˜ื™ื™ืฉืึทืŸ, ื˜ืขืกื˜ื™ื ื’, ืกื™ / ืงื“.18

22 ื‘ืื ื•ืฆืขืจ ื”ืื‘ืŸ ื’ืขืฉื˜ื™ืžื˜. 9 ื‘ืื ื•ืฆืขืจ ื”ืื‘ืŸ ื–ื™ืš ืืคื’ืขื”ืืœื˜ืŸ.

ืžืงื•ืจ: www.habr.com