เชชเชชเซ‡เชŸเชจเซ‹ เชชเชฐเชฟเชšเชฏ

เชชเชชเซ‡เชŸ เช เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจ เชตเซเชฏเชตเชธเซเชฅเชพเชชเชจ เชธเชฟเชธเซเชŸเชฎ เช›เซ‡. เชคเซ‡เชจเซ‹ เช‰เชชเชฏเซ‹เช— เชฏเชœเชฎเชพเชจเซ‹เชจเซ‡ เช‡เชšเซเช›เชฟเชค เชธเซเชฅเชฟเชคเชฟเชฎเชพเช‚ เชฒเชพเชตเชตเชพ เช…เชจเซ‡ เช† เชธเซเชฅเชฟเชคเชฟ เชœเชพเชณเชตเชตเชพ เชฎเชพเชŸเซ‡ เชฅเชพเชฏ เช›เซ‡.

เชนเซเช‚ เชนเชตเซ‡ เชชเชพเช‚เชš เชตเชฐเซเชทเชฅเซ€ เชชเชชเซ‡เชŸ เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเซ€ เชฐเชนเซเชฏเซ‹ เช›เซเช‚. เช† เชŸเซ‡เช•เซเชธเซเชŸ เช…เชจเชฟเชตเชพเชฐเซเชฏเชชเชฃเซ‡ เชธเชคเซเชคเชพเชตเชพเชฐ เชฆเชธเซเชคเชพเชตเซ‡เชœเซ€เช•เชฐเชฃเชฎเชพเช‚เชฅเซ€ เชฎเซเช–เซเชฏ เชฎเซเชฆเซเชฆเชพเช“เชจเซเช‚ เชญเชพเชทเชพเช‚เชคเชฐเชฟเชค เช…เชจเซ‡ เชชเซเชจเชƒเช•เซเชฐเชฎเชพเช‚เช•เชฟเชค เชธเช‚เช•เชฒเชจ เช›เซ‡, เชœเซ‡ เชจเชตเชพ เชจเชฟเชถเชพเชณเซ€เชฏเชพเชจเซ‡ เชชเชชเซ‡เชŸเชจเชพ เชธเชพเชฐเชจเซ‡ เชเชกเชชเชฅเซ€ เชธเชฎเชœเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเชถเซ‡.

เชชเชชเซ‡เชŸเชจเซ‹ เชชเชฐเชฟเชšเชฏ

เชฎเซ‚เชณเชญเซ‚เชค เชฎเชพเชนเชฟเชคเซ€

เชชเชชเซ‡เชŸเชจเซ€ เช“เชชเชฐเซ‡เชŸเชฟเช‚เช— เชธเชฟเชธเซเชŸเชฎ เช•เซเชฒเชพเชฏเช‚เชŸ-เชธเชฐเซเชตเชฐ เช›เซ‡, เชœเซ‹ เช•เซ‡ เชคเซ‡ เชฎเชฐเซเชฏเชพเชฆเชฟเชค เช•เชพเชฐเซเชฏเช•เซเชทเชฎเชคเชพ เชธเชพเชฅเซ‡ เชธเชฐเซเชตเชฐเชฒเซ‡เชธ เช“เชชเชฐเซ‡เชถเชจเชจเซ‡ เชชเชฃ เชธเชชเซ‹เชฐเซเชŸ เช•เชฐเซ‡ เช›เซ‡.

เช‘เชชเชฐเซ‡เชถเชจเชจเชพ เชชเซเชฒ เชฎเซ‰เชกเชฒเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡: เชกเชฟเชซเซ‰เชฒเซเชŸ เชฐเซ‚เชชเซ‡, เชฆเชฐ เช…เชกเชงเชพ เช•เชฒเชพเช•เชฎเชพเช‚ เชเช•เชตเชพเชฐ, เช•เซเชฒเชพเชฏเช‚เชŸ เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจ เชฎเชพเชŸเซ‡ เชธเชฐเซเชตเชฐเชจเซ‹ เชธเช‚เชชเชฐเซเช• เช•เชฐเซ‡ เช›เซ‡ เช…เชจเซ‡ เชคเซ‡เชจเซ‡ เชฒเชพเช—เซ เช•เชฐเซ‡ เช›เซ‡. เชœเซ‹ เชคเชฎเซ‡ Ansible เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเซเชฏเซเช‚ เช›เซ‡, เชคเซ‹ เชชเช›เซ€ เชคเซ‡เช“ เชเช• เช…เชฒเช— เชชเซเชถ เชฎเซ‹เชกเซ‡เชฒเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‡ เช›เซ‡: เชเชกเชฎเชฟเชจเชฟเชธเซเชŸเซเชฐเซ‡เชŸเชฐ เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจ เชฒเชพเช—เซ เช•เชฐเชตเชพเชจเซ€ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เชถเชฐเซ‚ เช•เชฐเซ‡ เช›เซ‡, เช•เซเชฒเชพเชฏเช‚เชŸ เชชเซ‹เชคเซ‡ เช•เช‚เชˆเชชเชฃ เชฒเชพเช—เซ เช•เชฐเชถเซ‡ เชจเชนเซ€เช‚.

เชจเซ‡เชŸเชตเชฐเซเช• เช•เชฎเซเชฏเซเชจเชฟเช•เซ‡เชถเชจ เชฆเชฐเชฎเชฟเชฏเชพเชจ, เชฆเซเชตเชฟ-เชฎเชพเชฐเซเช—เซ€ TLS เชเชจเซเช•เซเชฐเชฟเชชเซเชถเชจเชจเซ‹ เช‰เชชเชฏเซ‹เช— เชฅเชพเชฏ เช›เซ‡: เชธเชฐเซเชตเชฐ เช…เชจเซ‡ เช•เซเชฒเชพเชฏเช‚เชŸ เชชเชพเชธเซ‡ เชคเซ‡เชฎเชจเซ€ เชชเซ‹เชคเชพเชจเซ€ เช–เชพเชจเช—เซ€ เช•เซ€เช“ เช…เชจเซ‡ เช…เชจเซเชฐเซ‚เชช เชชเซเชฐเชฎเชพเชฃเชชเชคเซเชฐเซ‹ เชนเซ‹เชฏ เช›เซ‡. เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡ เชธเชฐเซเชตเชฐ เช—เซเชฐเชพเชนเช•เซ‹ เชฎเชพเชŸเซ‡ เชชเซเชฐเชฎเชพเชฃเชชเชคเซเชฐเซ‹ เชœเชพเชฐเซ€ เช•เชฐเซ‡ เช›เซ‡, เชชเชฐเช‚เชคเซ เชธเซˆเชฆเซเชงเชพเช‚เชคเชฟเช• เชฐเซ€เชคเซ‡ เชฌเชพเชนเซเชฏ CA เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเซ‹ เชถเช•เซเชฏ เช›เซ‡.

เชฎเซ‡เชจเชฟเชซเซ‡เชธเซเชŸเซ‹เชจเซ‹ เชชเชฐเชฟเชšเชฏ

ะ’ ั‚ะตั€ะผะธะฝะพะปะพะณะธะธ Puppet เช•เช เชชเซ‚เชคเชณเซ€ เชธเชฐเซเชตเชฐ เชฎเชพเชŸเซ‡ เชœเซ‹เชกเชพเชตเชพ เช—เชพเช‚เช เซ‹ (เช—เชพเช‚เช เซ‹). เชจเซ‹เชกเซเชธ เชฎเชพเชŸเซ‡ เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจ เชฒเช–เชพเชฏเซ‡เชฒ เช›เซ‡ เชฎเซ‡เชจเชฟเชซเซ‡เชธเซเชŸเซ‹เชฎเชพเช‚ เช–เชพเชธ เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎเชฟเช‚เช— เชญเชพเชทเชพเชฎเชพเช‚ - เชชเชชเซ‡เชŸ เชกเซ€เชเชธเชเชฒ.

เชชเชชเซ‡เชŸ เชกเซ€เชเชธเชเชฒ เช เช˜เซ‹เชทเชฃเชพเชคเซเชฎเช• เชญเชพเชทเชพ เช›เซ‡. เชคเซ‡ เชตเซเชฏเช•เซเชคเชฟเช—เชค เชธเช‚เชธเชพเชงเชจเซ‹เชจเซ€ เช˜เซ‹เชทเชฃเชพเช“เชจเชพ เชธเซเชตเชฐเซ‚เชชเชฎเชพเช‚ เชจเซ‹เชกเชจเซ€ เช‡เชšเซเช›เชฟเชค เชธเซเชฅเชฟเชคเชฟเชจเซเช‚ เชตเชฐเซเชฃเชจ เช•เชฐเซ‡ เช›เซ‡, เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡:

  • เชซเชพเช‡เชฒ เช…เชธเซเชคเชฟเชคเซเชตเชฎเชพเช‚ เช›เซ‡ เช…เชจเซ‡ เชคเซ‡เชฎเชพเช‚ เชšเซ‹เช•เซเช•เชธ เชธเชพเชฎเช—เซเชฐเซ€ เช›เซ‡.
  • เชชเซ‡เช•เซ‡เชœ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ‡เชฒเซเช‚ เช›เซ‡.
  • เชธเซ‡เชตเชพ เชถเชฐเซ‚ เชฅเชˆ เช—เชˆ เช›เซ‡.

เชธเช‚เชธเชพเชงเชจเซ‹ เชเช•เชฌเซ€เชœเชพ เชธเชพเชฅเซ‡ เชœเซ‹เชกเชพเชฏเซ‡เชฒเชพ เชนเซ‹เชˆ เชถเช•เซ‡ เช›เซ‡:

  • เชคเซเชฏเชพเช‚ เช…เชตเชฒเช‚เชฌเชจ เช›เซ‡, เชคเซ‡เช“ เชธเช‚เชธเชพเชงเชจเซ‹เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ เชคเซ‡ เช•เซเชฐเชฎเชจเซ‡ เช…เชธเชฐ เช•เชฐเซ‡ เช›เซ‡.
    เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, "เชชเชนเซ‡เชฒเชพ เชชเซ‡เช•เซ‡เชœ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ‹, เชชเช›เซ€ เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจ เชซเชพเช‡เชฒเชฎเชพเช‚ เชซเซ‡เชฐเชซเชพเชฐ เช•เชฐเซ‹, เชชเช›เซ€ เชธเซ‡เชตเชพ เชถเชฐเซ‚ เช•เชฐเซ‹."
  • เชคเซเชฏเชพเช‚ เชธเซ‚เชšเชจเชพเช“ เช›เซ‡ - เชœเซ‹ เช•เซ‹เชˆ เชธเช‚เชธเชพเชงเชจ เชฌเชฆเชฒเชพเชฏเซเช‚ เชนเซ‹เชฏ, เชคเซ‹ เชคเซ‡ เชคเซ‡เชจเชพ เชชเชฐ เชธเชฌเซเชธเซเช•เซเชฐเชพเช‡เชฌ เช•เชฐเซ‡เชฒเชพ เชธเช‚เชธเชพเชงเชจเซ‹เชจเซ‡ เชธเซ‚เชšเชจเชพเช“ เชฎเซ‹เช•เชฒเซ‡ เช›เซ‡.
    เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชœเซ‹ เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจ เชซเชพเช‡เชฒ เชฌเชฆเชฒเชพเชฏ เช›เซ‡, เชคเซ‹ เชคเชฎเซ‡ เช†เชชเชฎเซ‡เชณเซ‡ เชธเซ‡เชตเชพเชจเซ‡ เชชเซเชจเชƒเชชเซเชฐเชพเชฐเช‚เชญ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹.

เชตเชงเซเชฎเชพเช‚, เชชเชชเซ‡เชŸ เชกเซ€เชเชธเชเชฒเชฎเชพเช‚ เช•เชพเชฐเซเชฏเซ‹ เช…เชจเซ‡ เชšเชฒเซ‹, เชคเซ‡เชฎเชœ เชถเชฐเชคเซ€ เชจเชฟเชตเซ‡เชฆเชจเซ‹ เช…เชจเซ‡ เชชเชธเช‚เชฆเช—เซ€เช•เชพเชฐเซ‹ เช›เซ‡. เชตเชฟเชตเชฟเชง เชŸเซ‡เชฎเซเชชเชฒเซ‡เชŸเซ€เช‚เช— เชฎเชฟเช•เซ‡เชจเชฟเชเชฎเซเชธ เชชเชฃ เชธเชชเซ‹เชฐเซเชŸเซ‡เชก เช›เซ‡ - EPP เช…เชจเซ‡ ERB.

เชชเชชเซ‡เชŸ เชฐเซ‚เชฌเซ€เชฎเชพเช‚ เชฒเช–เชพเชฏเซ‡เชฒ เช›เซ‡, เชคเซ‡เชฅเซ€ เช˜เชฃเซ€ เชฐเชšเชจเชพเช“ เช…เชจเซ‡ เชถเชฌเซเชฆเซ‹ เชคเซเชฏเชพเช‚เชฅเซ€ เชฒเซ‡เชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเชพ เช›เซ‡. เชฐเซ‚เชฌเซ€ เชคเชฎเชจเซ‡ เชชเชชเซ‡เชŸเชจเซ‡ เชตเชฟเชธเซเชคเซƒเชค เช•เชฐเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ‡ เช›เซ‡ - เชœเชŸเชฟเชฒ เชคเชฐเซเช•, เชจเชตเชพ เชชเซเชฐเช•เชพเชฐเชจเชพเช‚ เชธเช‚เชธเชพเชงเชจเซ‹, เช•เชพเชฐเซเชฏเซ‹ เช‰เชฎเซ‡เชฐเซ‹.

เชœเซเชฏเชพเชฐเซ‡ เชชเชชเซ‡เชŸ เชšเชพเชฒเซ€ เชฐเชนเซเชฏเซเช‚ เชนเซ‹เชฏ, เชคเซเชฏเชพเชฐเซ‡ เชธเชฐเซเชตเชฐ เชชเชฐเชจเชพ เชฆเชฐเซ‡เช• เชšเซ‹เช•เซเช•เชธ เชจเซ‹เชก เชฎเชพเชŸเซ‡ เชฎเซ‡เชจเชฟเชซเซ‡เชธเซเชŸ เชกเชฟเชฐเซ‡เช•เซเชŸเชฐเซ€เชฎเชพเช‚ เช•เชฎเซเชชเชพเชˆเชฒ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. เชกเชฟเชฐเซ‡เช•เซเชŸเชฐเซ€ เชซเช‚เช•เซเชถเชจ, เชšเชฒ เช…เชจเซ‡ เชถเชฐเชคเซ€ เชจเชฟเชตเซ‡เชฆเชจเซ‹เชจเชพ เชตเชฟเชธเซเชคเชฐเชฃเชจเชพ เชฎเซ‚เชฒเซเชฏเชจเซ€ เช—เชฃเชคเชฐเซ€ เช•เชฐเซเชฏเชพ เชชเช›เซ€ เชธเช‚เชธเชพเชงเชจเซ‹ เช…เชจเซ‡ เชคเซ‡เชฎเชจเชพ เชธเช‚เชฌเช‚เชงเซ‹เชจเซ€ เชธเซ‚เชšเชฟ เช›เซ‡.

เชธเชฟเชจเซเชŸเซ‡เช•เซเชธ เช…เชจเซ‡ เช•เซ‹เชกเชธเซเชŸเชพเช‡เชฒ

เช…เชนเซ€เช‚ เช…เชงเชฟเช•เซƒเชค เชฆเชธเซเชคเชพเชตเซ‡เชœเซ‹เชจเชพ เชตเชฟเชญเชพเช—เซ‹ เช›เซ‡ เชœเซ‡ เชคเชฎเชจเซ‡ เชธเชฟเชจเซเชŸเซ‡เช•เซเชธเชจเซ‡ เชธเชฎเชœเชตเชพเชฎเชพเช‚ เชฎเชฆเชฆ เช•เชฐเชถเซ‡ เชœเซ‹ เช†เชชเซ‡เชฒเชพ เช‰เชฆเชพเชนเชฐเชฃเซ‹ เชชเซ‚เชฐเชคเชพ เชจ เชนเซ‹เชฏ เชคเซ‹:

เชฎเซ‡เชจเชฟเชซเซ‡เชธเซเชŸ เช•เซ‡เชตเซเช‚ เชฆเซ‡เช–เชพเชฏ เช›เซ‡ เชคเซ‡เชจเซเช‚ เช…เชนเซ€เช‚ เชเช• เช‰เชฆเชพเชนเชฐเชฃ เช›เซ‡:

# ะšะพะผะผะตะฝั‚ะฐั€ะธะธ ะฟะธัˆัƒั‚ัั, ะบะฐะบ ะธ ะผะฝะพะณะพ ะณะดะต, ะฟะพัะปะต ั€ะตัˆั‘ั‚ะบะธ.
#
# ะžะฟะธัะฐะฝะธะต ะบะพะฝั„ะธะณัƒั€ะฐั†ะธะธ ะฝะพะดั‹ ะฝะฐั‡ะธะฝะฐะตั‚ัั ั ะบะปัŽั‡ะตะฒะพะณะพ ัะปะพะฒะฐ 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 เชฎเชพเช‚เชฅเซ€ เชซเชพเช‡เชฒเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡)
  • เชฒเช•เซเชทเซเชฏ โ€” เชœเซเชฏเชพเช‚ เชธเชฟเชฎเชฒเชฟเช‚เช• เชจเชฟเชฐเซเชฆเซ‡เชถ เช•เชฐเซ‡ เช›เซ‡ (เชธเชพเชฅเซ‡ เชธเชพเชฅเซ‡ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€ เชถเช•เชพเชคเซ‹ เชจเชฅเซ€ เชธเชพเชฎเช—เซเชฐเซ€ เช…เชฅเชตเชพ เชธเซเชคเซเชฐเซ‹เชค)
  • เชฎเชพเชฒเชฟเช• - เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพ เช•เซ‡ เชœเซ‡เชจเซ€ เชชเชพเชธเซ‡ เชซเชพเช‡เชฒ เชนเซ‹เชตเซ€ เชœเซ‹เชˆเช
  • เชœเซ‚เชฅ โ€” เชœเซ‡ เชœเซ‚เชฅเชจเซ€ เชซเชพเชˆเชฒ เชนเซ‹เชตเซ€ เชœเซ‹เชˆเช
  • เชธเซเชฅเชฟเชคเชฟ - เชซเชพเช‡เชฒ เชชเชฐเชตเชพเชจเช—เซ€เช“ (เชธเซเชŸเซเชฐเชฟเช‚เช— เชคเชฐเซ€เช•เซ‡)
  • เชชเซเชจเชฐเชพเชตเชฐเซเชคเชจ - เชชเซเชจเชฐเชพเชตเชฐเซเชคเชฟเชค เชกเชฟเชฐเซ‡เช•เซเชŸเชฐเซ€ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเชจเซ‡ เชธเช•เซเชทเชฎ เช•เชฐเซ‡ เช›เซ‡
  • เชถเซเชงเซเชงเซ€เช•เชฐเชฃ - เชชเชชเซ‡เชŸเชฎเชพเช‚ เชตเชฐเซเชฃเชตเซ‡เชฒ เชจ เชนเซ‹เชฏ เชคเซ‡เชตเซ€ เชซเชพเช‡เชฒเซ‹เชจเซ‡ เช•เชพเชขเซ€ เชจเชพเช–เชตเชพ เชธเช•เซเชทเชฎ เช•เชฐเซ‡ เช›เซ‡
  • เชฌเชณ - เชชเชชเซ‡เชŸเชฎเชพเช‚ เชตเชฐเซเชฃเชตเซ‡เชฒ เชจ เชนเซ‹เชฏ เชคเซ‡เชตเซ€ เชกเชฟเชฐเซ‡เช•เซเชŸเชฐเซ€เช“ เช•เชพเชขเซ€ เชจเชพเช–เชตเชพเชจเซ‡ เชธเช•เซเชทเชฎ เช•เชฐเซ‡ เช›เซ‡

เชชเซ‡เช•เซ‡เชœ

เชชเซ‡เช•เซ‡เชœเซ‹ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ‡ เช›เซ‡ เช…เชจเซ‡ เชฆเซ‚เชฐ เช•เชฐเซ‡ เช›เซ‡. เชธเซ‚เชšเชจเชพเช“เชจเซ‡ เชนเซ‡เชจเซเชกเชฒ เช•เชฐเชตเชพเชฎเชพเช‚ เชธเช•เซเชทเชฎ - เชœเซ‹ เชชเซ‡เชฐเชพเชฎเซ€เชŸเชฐ เชธเซเชชเชทเซเชŸ เช•เชฐเซ‡เชฒ เชนเซ‹เชฏ เชคเซ‹ เชชเซ‡เช•เซ‡เชœ เชชเซเชจเชƒเชธเซเชฅเชพเชชเชฟเชค เช•เชฐเซ‡ เช›เซ‡ refresh_on_reinstall.

เชชเชฐเชฟเชฎเชพเชฃเซ‹:

  • ะฝะฐะทะฒะฐะฝะธะต ั€ะตััƒั€ัะฐ - เชชเซ‡เช•เซ‡เชœ เชจเชพเชฎ (เชตเซˆเช•เชฒเซเชชเชฟเช•)
  • เชจเชพเชฎ - เชชเซ‡เช•เซ‡เชœเชจเซเช‚ เชจเชพเชฎ (เชœเซ‹ เชจเชพเชฎเชฎเชพเช‚ เช‰เชฒเซเชฒเซ‡เช–เชฟเชค เชจ เชนเซ‹เชฏ เชคเซ‹)
  • เชชเซเชฐเชฆเชพเชคเชพ - เชตเชพเชชเชฐเชตเชพ เชฎเชพเชŸเซ‡ เชชเซ‡เช•เซ‡เชœ เชฎเซ‡เชจเซ‡เชœเชฐ
  • เช–เชพเชคเชฐเซ€ - เชชเซ‡เช•เซ‡เชœเชจเซ€ เช‡เชšเซเช›เชฟเชค เชธเซเชฅเชฟเชคเชฟ:
    • present, installed - เช•เซ‹เชˆเชชเชฃ เชธเช‚เชธเซเช•เชฐเชฃ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ‡เชฒเซเช‚ เช›เซ‡
    • latest - เชจเชตเซ€เชจเชคเชฎ เชธเช‚เชธเซเช•เชฐเชฃ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซเชฏเซเช‚
    • absent - เช•เชพเชขเซ€ เชจเชพเช–เซเชฏเซเช‚ (apt-get remove)
    • purged โ€” เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจ เชซเชพเช‡เชฒเซ‹ เชธเชพเชฅเซ‡ เช•เชพเชขเซ€ เชจเชพเช–เซ‡เชฒ (apt-get purge)
    • held - เชชเซ‡เช•เซ‡เชœ เชธเช‚เชธเซเช•เชฐเชฃ เชฒเซ‰เช• เชฅเชฏเซ‡เชฒ เช›เซ‡ (apt-mark hold)
    • ะปัŽะฑะฐั ะดั€ัƒะณะฐั ัั‚ั€ะพะบะฐ - เช‰เชฒเซเชฒเซ‡เช–เชฟเชค เชธเช‚เชธเซเช•เชฐเชฃ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ‡เชฒเซเช‚ เช›เซ‡
  • refresh_on_reinstall - เชœเซ‹ true, เชชเช›เซ€ เชธเซ‚เชšเชจเชพ เชชเซเชฐเชพเชชเซเชค เชฅเชฏเชพ เชชเช›เซ€ เชชเซ‡เช•เซ‡เชœ เชซเชฐเซ€เชฅเซ€ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡. เชธเซเชคเซเชฐเซ‹เชค-เช†เชงเชพเชฐเชฟเชค เชตเชฟเชคเชฐเชฃเซ‹ เชฎเชพเชŸเซ‡ เช‰เชชเชฏเซ‹เช—เซ€ เช›เซ‡, เชœเซเชฏเชพเช‚ เชฌเชฟเชฒเซเชก เชชเชฐเชฟเชฎเชพเชฃเซ‹ เชฌเชฆเชฒเชคเซ€ เชตเช–เชคเซ‡ เชชเซ‡เช•เซ‡เชœเซ‹ เชชเซเชจเชƒเชจเชฟเชฐเซเชฎเชพเชฃ เชœเชฐเซ‚เชฐเซ€ เชนเซ‹เชˆ เชถเช•เซ‡ เช›เซ‡. เชกเชฟเชซเซ‰เชฒเซเชŸ false.

เชธเซ‡เชตเชพ

เชธเซ‡เชตเชพเช“เชจเซเช‚ เชธเช‚เชšเชพเชฒเชจ เช•เชฐเซ‡ เช›เซ‡. เชธเซ‚เชšเชจเชพเช“ เชชเชฐ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เช•เชฐเชตเชพเชฎเชพเช‚ เชธเช•เซเชทเชฎ - เชธเซ‡เชตเชพ เชชเซเชจเชƒเชชเซเชฐเชพเชฐเช‚เชญ เช•เชฐเซ‡ เช›เซ‡.

เชชเชฐเชฟเชฎเชพเชฃเซ‹:

  • ะฝะฐะทะฒะฐะฝะธะต ั€ะตััƒั€ัะฐ - เชฎเซ‡เชจเซ‡เชœ เช•เชฐเชตเชพเชจเซ€ เชธเซ‡เชตเชพ (เชตเซˆเช•เชฒเซเชชเชฟเช•)
  • เชจเชพเชฎ - เชธเซ‡เชตเชพ เช•เซ‡ เชœเซ‡เชจเซเช‚ เชธเช‚เชšเชพเชฒเชจ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡ (เชœเซ‹ เชจเชพเชฎเชฎเชพเช‚ เช‰เชฒเซเชฒเซ‡เช–เชฟเชค เชจ เชนเซ‹เชฏ เชคเซ‹)
  • เช–เชพเชคเชฐเซ€ - เชธเซ‡เชตเชพเชจเซ€ เช‡เชšเซเช›เชฟเชค เชธเซเชฅเชฟเชคเชฟ:
    • running - เชถเชฐเซ‚
    • stopped - เชฌเช‚เชง
  • เชธเช•เซเชทเชฎ เช•เชฐเซ‹ - เชธเซ‡เชตเชพ เชถเชฐเซ‚ เช•เชฐเชตเชพเชจเซ€ เช•เซเชทเชฎเชคเชพเชจเซ‡ เชจเชฟเชฏเช‚เชคเซเชฐเชฟเชค เช•เชฐเซ‡ เช›เซ‡:
    • true - เช“เชŸเซ‹เชฐเชจ เชธเช•เซเชทเชฎ เช›เซ‡ (systemctl enable)
    • mask - เชตเซ‡เชถเชฎเชพเช‚ (systemctl mask)
    • false - เช“เชŸเซ‹เชฐเชจ เช…เช•เซเชทเชฎ เช›เซ‡ (systemctl disable)
  • เชชเซเชจเชƒเชชเซเชฐเชพเชฐเช‚เชญ - เชธเซ‡เชตเชพ เชชเซเชจเชƒเชชเซเชฐเชพเชฐเช‚เชญ เช•เชฐเชตเชพเชจเซ‹ เช†เชฆเซ‡เชถ
  • เชธเซเชฅเชฟเชคเชฟ - เชธเซ‡เชตเชพเชจเซ€ เชธเซเชฅเชฟเชคเชฟ เชคเชชเชพเชธเชตเชพเชจเซ‹ เช†เชฆเซ‡เชถ
  • hasrestart โ€” เชธเซ‚เชšเชตเซ‹ เช•เซ‡ เชถเซเช‚ เชธเซ‡เชตเชพ initscript เชชเซเชจเชƒเชถเชฐเซ‚ เช•เชฐเชตเชพเชจเซเช‚ เช†เชงเชพเชฐ เช†เชชเซ‡ เช›เซ‡. เชœเซ‹ false เช…เชจเซ‡ เชชเชฐเชฟเชฎเชพเชฃ เชธเซเชชเชทเซเชŸ เชฅเชฏเซ‡เชฒ เช›เซ‡ เชชเซเชจเชƒเชชเซเชฐเชพเชฐเช‚เชญ โ€” เช† เชชเชฐเชฟเชฎเชพเชฃเชจเซ€ เช•เชฟเช‚เชฎเชค เชตเชชเชฐเชพเชฏ เช›เซ‡. เชœเซ‹ false ะธ ะฟะฐั€ะฐะผะตั‚ั€ เชชเซเชจเชƒเชชเซเชฐเชพเชฐเช‚เชญ เช‰เชฒเซเชฒเซ‡เช–เชฟเชค เชจเชฅเซ€ - เชธเซ‡เชตเชพ เชฌเช‚เชง เชฅเชˆ เช—เชˆ เช›เซ‡ เช…เชจเซ‡ เชชเซเชจเชƒเชชเซเชฐเชพเชฐเช‚เชญ เช•เชฐเชตเชพเชจเซเช‚ เชถเชฐเซ‚ เช•เชฐเซเชฏเซเช‚ เช›เซ‡ (เชชเชฐเช‚เชคเซ systemd เช†เชฆเซ‡เชถเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‡ เช›เซ‡ systemctl restart).
  • เชธเซเชŸเซ‡เชŸเชธ โ€” เชธเซ‚เชšเชตเซ‹ เช•เซ‡ เชถเซเช‚ เชธเซ‡เชตเชพ initscript เช†เชฆเซ‡เชถเชจเซ‡ เช†เชงเชพเชฐ เช†เชชเซ‡ เช›เซ‡ status. เชœเซ‹ false, เชชเช›เซ€ เชชเชฐเชฟเชฎเชพเชฃ เชฎเซ‚เชฒเซเชฏเชจเซ‹ เช‰เชชเชฏเซ‹เช— เชฅเชพเชฏ เช›เซ‡ เชธเซเชฅเชฟเชคเชฟ. เชกเชฟเชซเซ‰เชฒเซเชŸ true.

exec

เชฌเชพเชนเซเชฏ เช†เชฆเซ‡เชถเซ‹ เชšเชฒเชพเชตเซ‡ เช›เซ‡. เชœเซ‹ เชคเชฎเซ‡ เชชเชฐเชฟเชฎเชพเชฃเซ‹เชจเซ‹ เช‰เชฒเซเชฒเซ‡เช– เช•เชฐเชคเชพ เชจเชฅเซ€ เชฌเชจเชพเชตเซ‡ เช›เซ‡, เชฎเชพเชคเซเชฐ เชœเซ‹, เชธเชฟเชตเชพเชฏ เช…เชฅเชตเชพ เชคเชพเชœเช—เซ€เชฅเซ€, เช†เชฆเซ‡เชถ เชฆเชฐ เชตเช–เชคเซ‡ เชชเชชเซ‡เชŸ เชšเชฒเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡. เชธเซ‚เชšเชจเชพเช“ เชชเชฐ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เช•เชฐเชตเชพเชฎเชพเช‚ เชธเช•เซเชทเชฎ - เช†เชฆเซ‡เชถ เชšเชฒเชพเชตเซ‡ เช›เซ‡.

เชชเชฐเชฟเชฎเชพเชฃเซ‹:

  • ะฝะฐะทะฒะฐะฝะธะต ั€ะตััƒั€ัะฐ - เชšเชฒเชพเชตเชตเชพเชจเซ‹ เช†เชฆเซ‡เชถ (เชตเซˆเช•เชฒเซเชชเชฟเช•)
  • เช†เชฆเซ‡เชถ - เชšเชฒเชพเชตเชตเชพเชจเซ‹ เช†เชฆเซ‡เชถ (เชœเซ‹ เชคเซ‡ เชจเชพเชฎเชฎเชพเช‚ เช‰เชฒเซเชฒเซ‡เช–เชฟเชค เชจ เชนเซ‹เชฏ เชคเซ‹)
  • เชชเชพเชฅ โ€” เชชเชพเชฅ เช•เซ‡ เชœเซ‡เชฎเชพเช‚ เชเช•เซเชเซ‡เช•เซเชฏเซเชŸเซ‡เชฌเชฒ เชซเชพเช‡เชฒเชจเซ‡ เชœเซ‹เชตเชพเชจเซ€ เช›เซ‡
  • เชฎเชพเชคเซเชฐ เชœเซ‹ โ€” เชœเซ‹ เช† เชชเชฐเชฟเชฎเชพเชฃเชฎเชพเช‚ เช‰เชฒเซเชฒเซ‡เช–เชฟเชค เช†เชฆเซ‡เชถ เชถเซ‚เชจเซเชฏ เชฐเซ€เชŸเชฐเซเชจ เช•เซ‹เชก เชธเชพเชฅเซ‡ เชชเซ‚เชฐเซเชฃ เชฅเชพเชฏ, เชคเซ‹ เชฎเซเช–เซเชฏ เช†เชฆเซ‡เชถ เชšเชฒเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡.
  • เชธเชฟเชตเชพเชฏ โ€” เชœเซ‹ เช† เชชเชฐเชฟเชฎเชพเชฃเชฎเชพเช‚ เช‰เชฒเซเชฒเซ‡เช–เชฟเชค เช†เชฆเซ‡เชถ เชฌเชฟเชจ-เชถเซ‚เชจเซเชฏ เชฐเซ€เชŸเชฐเซเชจ เช•เซ‹เชก เชธเชพเชฅเซ‡ เชชเซ‚เชฐเซเชฃ เชฅเชพเชฏ, เชคเซ‹ เชฎเซเช–เซเชฏ เช†เชฆเซ‡เชถ เชšเชฒเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡.
  • เชฌเชจเชพเชตเซ‡ เช›เซ‡ โ€” เชœเซ‹ เช† เชชเชฐเชฟเชฎเชพเชฃเชฎเชพเช‚ เช‰เชฒเซเชฒเซ‡เช–เชฟเชค เชซเชพเช‡เชฒ เช…เชธเซเชคเชฟเชคเซเชตเชฎเชพเช‚ เชจ เชนเซ‹เชฏ, เชคเซ‹ เชฎเซเช–เซเชฏ เช†เชฆเซ‡เชถ เชšเชฒเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡
  • เชคเชพเชœเช—เซ€เชฅเซ€ - เชœเซ‹ true, เชคเซ‹ เช†เชฆเซ‡เชถ เชซเช•เซเชค เชคเซเชฏเชพเชฐเซ‡ เชœ เชšเชฒเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡ เชœเซเชฏเชพเชฐเซ‡ เช† exec เช…เชจเซเชฏ เชธเซเชฐเซ‹เชคเซ‹เชฎเชพเช‚เชฅเซ€ เชธเซ‚เชšเชจเชพ เชฎเซ‡เชณเชตเซ‡
  • cwd โ€” ะดะธั€ะตะบั‚ะพั€ะธั, ะธะท ะบะพั‚ะพั€ะพะน ะทะฐะฟัƒัะบะฐั‚ัŒ ะบะพะผะฐะฝะดัƒ
  • เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพ โ€” เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพ เชœเซ‡เชจเซ€ เชชเชพเชธเซ‡เชฅเซ€ เช†เชฆเซ‡เชถ เชšเชฒเชพเชตเชตเชพเชจเซ‹ เช›เซ‡
  • เชชเซเชฐเชฆเชพเชคเชพ - เช†เชฆเซ‡เชถ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชšเชฒเชพเชตเชตเซ‹:
    • เชชเซ‹เช•เซเชธเชฟเช•เซเชธ โ€” เชฌเชพเชณ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เชธเชฐเชณ เชฐเซ€เชคเซ‡ เชฌเชจเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เชธเซเชชเชทเซเชŸ เช•เชฐเชตเชพเชจเซ€ เช–เชพเชคเชฐเซ€ เช•เชฐเซ‹ เชชเชพเชฅ
    • เชถเซ‡เชฒ - เช†เชฆเซ‡เชถ เชถเซ‡เชฒเชฎเชพเช‚ เชถเชฐเซ‚ เชฅเชพเชฏ เช›เซ‡ /bin/sh, เช‰เชฒเซเชฒเซ‡เช–เชฟเชค เชจ เชนเซ‹เชˆ เชถเช•เซ‡ เชชเชพเชฅ, เชคเชฎเซ‡ เช—เซเชฒเซ‹เชฌเชฟเช‚เช—, เชชเชพเช‡เชชเซเชธ เช…เชจเซ‡ เช…เชจเซเชฏ เชถเซ‡เชฒ เชธเซเชตเชฟเชงเชพเช“เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹. เชœเซ‹ เช•เซ‹เชˆ เชตเชฟเชถเชฟเชทเซเชŸ เช…เช•เซเชทเชฐเซ‹ เชนเซ‹เชฏ เชคเซ‹ เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡ เช†เชชเชฎเซ‡เชณเซ‡ เชถเซ‹เชงเชพเชฏ เช›เซ‡ (|, ;, &&, || เชตเช—เซ‡เชฐเซ‡).

เช•เซเชฐเซ‹เชจ

เช•เซเชฐเซ‹เชจเชœเซ‹เชฌเซเชธเชจเซ‡ เชจเชฟเชฏเช‚เชคเซเชฐเชฟเชค เช•เชฐเซ‡ เช›เซ‡.

เชชเชฐเชฟเชฎเชพเชฃเซ‹:

  • ะฝะฐะทะฒะฐะฝะธะต ั€ะตััƒั€ัะฐ - เชฎเชพเชคเซเชฐ เช…เชฎเซเช• เชชเซเชฐเช•เชพเชฐเชจเซ‹ เช“เชณเช–เช•เชฐเซเชคเชพ
  • เช–เชพเชคเชฐเซ€ - เชคเชพเชœ เชœเซ‹เชฌ เชธเซเชฅเชฟเชคเชฟ:
    • present - เชœเซ‹ เช…เชธเซเชคเชฟเชคเซเชตเชฎเชพเช‚ เชจ เชนเซ‹เชฏ เชคเซ‹ เชฌเชจเชพเชตเซ‹
    • absent - เชœเซ‹ เช…เชธเซเชคเชฟเชคเซเชตเชฎเชพเช‚ เชนเซ‹เชฏ เชคเซ‹ เช•เชพเชขเซ€ เชจเชพเช–เซ‹
  • เช†เชฆเซ‡เชถ - เช•เชฏเซ‹ เช†เชฆเซ‡เชถ เชšเชฒเชพเชตเชตเซ‹
  • เชชเชฐเซเชฏเชพเชตเชฐเชฃ - เช•เชฏเชพ เชตเชพเชคเชพเชตเชฐเชฃเชฎเชพเช‚ เช†เชฆเซ‡เชถ เชšเชฒเชพเชตเชตเชพเชจเซ‹ เช›เซ‡ (เชชเชฐเซเชฏเชพเชตเชฐเชฃ เชšเชฒเซ‹เชจเซ€ เชธเซ‚เชšเชฟ เช…เชจเซ‡ เชคเซ‡เชฎเชจเชพ เชฎเซ‚เชฒเซเชฏเซ‹ เชฆเซเชตเชพเชฐเชพ =)
  • เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพ - เช•เชฏเชพ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพ เชชเชพเชธเซ‡เชฅเซ€ เช†เชฆเซ‡เชถ เชšเชฒเชพเชตเชตเชพเชจเซ‹ เช›เซ‡
  • เชฎเชฟเชจเชฟเชŸ, เช•เชฒเชพเช•, เชธเชพเชชเซเชคเชพเชนเชฟเช•, เชฎเชพเชธ, เชฎเชนเชฟเชจเชพเชจเซ‹ เชฆเชฟเชตเชธ - เช•เซเชฐเซ‹เชจ เช•เซเชฏเชพเชฐเซ‡ เชšเชฒเชพเชตเชตเซเช‚. เชœเซ‹ เช†เชฎเชพเช‚เชจเซ€ เช•เซ‹เชˆเชชเชฃ เชตเชฟเชถเซ‡เชทเชคเชพเช“ เช‰เชฒเซเชฒเซ‡เช–เชฟเชค เชจเชฅเซ€, เชคเซ‹ เช•เซเชฐเซ‰เชจเซเชŸเชพเชฌเชฎเชพเช‚ เชคเซ‡เชจเซเช‚ เชฎเซ‚เชฒเซเชฏ เชนเชถเซ‡ *.

ะ’ Puppet 6.0 เช•เซเชฐเซ‹เชจ เชœเชพเชฃเซ‡ เช•เซ‡ เชฌเซ‹เช•เซเชธเชฎเชพเช‚เชฅเซ€ เชฆเซ‚เชฐ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ puppetserver เชฎเชพเช‚, เชคเซ‡เชฅเซ€ เชธเชพเชฎเชพเชจเซเชฏ เชธเชพเช‡เชŸ เชชเชฐ เช•เซ‹เชˆ เชฆเชธเซเชคเชพเชตเซ‡เชœ เชจเชฅเซ€. เชชเชฃ เชคเซ‡ เชฌเซ‹เช•เซเชธเชฎเชพเช‚ เช›เซ‡ เช•เช เชชเซ‚เชคเชณเซ€-เชเชœเชจเซเชŸเชฎเชพเช‚, เชคเซ‡เชฅเซ€ เชคเซ‡เชจเซ‡ เช…เชฒเช—เชฅเซ€ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เชจเชฅเซ€. เชคเชฎเซ‡ เชคเซ‡เชจเชพ เชฎเชพเชŸเซ‡ เชฆเชธเซเชคเชพเชตเซ‡เชœเซ€เช•เชฐเชฃ เชœเซ‹เชˆ เชถเช•เซ‹ เช›เซ‹ ะฒ ะดะพะบัƒะผะตะฝั‚ะฐั†ะธะธ ะบ ะฟัั‚ะพะน ะฒะตั€ัะธะธ ะŸะฐะฟะฟะตั‚ะฐ, เช…เชฅเชตเชพ ะฝะฐ ะ“ะธั‚ั…ะฐะฑะต.

เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡ เชธเช‚เชธเชพเชงเชจเซ‹ เชตเชฟเชถเซ‡

เชธเช‚เชธเชพเชงเชจ เชตเชฟเชถเชฟเชทเซเชŸเชคเชพ เชฎเชพเชŸเซ‡เชจเซ€ เช†เชตเชถเซเชฏเช•เชคเชพเช“

เชธเซŒเชฅเซ€ เชธเชพเชฎเชพเชจเซเชฏ เชญเซ‚เชฒ เช†เชชเชฃเซ‡ เช…เชจเซเชญเชตเซ€เช เช›เซ€เช เชกเซเชชเซเชฒเชฟเช•เซ‡เชŸ เช˜เซ‹เชทเชฃเชพ. เช† เชญเซ‚เชฒ เชคเซเชฏเชพเชฐเซ‡ เชฅเชพเชฏ เช›เซ‡ เชœเซเชฏเชพเชฐเซ‡ เชจเชฟเชฐเซเชฆเซ‡เชถเชฟเช•เชพเชฎเชพเช‚ เชธเชฎเชพเชจ เชจเชพเชฎ เชธเชพเชฅเซ‡ เชธเชฎเชพเชจ เชชเซเชฐเช•เชพเชฐเชจเชพเช‚ เชฌเซ‡ เช…เชฅเชตเชพ เชตเชงเซ เชธเช‚เชธเชพเชงเชจเซ‹ เชฆเซ‡เช–เชพเชฏ เช›เซ‡.

ะŸะพัั‚ะพะผัƒ ะตั‰ั‘ ั€ะฐะท ะฝะฐะฟะธัˆัƒ: เชธเชฎเชพเชจ เชจเซ‹เชก เชฎเชพเชŸเซ‡ เชฎเซ‡เชจเชฟเชซเซ‡เชธเซเชŸเชฎเชพเช‚ เชธเชฎเชพเชจ เชถเซ€เชฐเซเชทเช• เชธเชพเชฅเซ‡ เชธเชฎเชพเชจ เชชเซเชฐเช•เชพเชฐเชจเชพ เชธเช‚เชธเชพเชงเชจเซ‹ เชจ เชนเซ‹เชตเชพ เชœเซ‹เชˆเช!

เช•เซ‡เชŸเชฒเซ€เช•เชตเชพเชฐ เชธเชฎเชพเชจ เชจเชพเชฎ เชธเชพเชฅเซ‡ เชชเซ‡เช•เซ‡เชœเซ‹ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เชนเซ‹เชฏ เช›เซ‡, เชชเชฐเช‚เชคเซ เชตเชฟเชตเชฟเชง เชชเซ‡เช•เซ‡เชœ เชฎเซ‡เชจเซ‡เชœเชฐ เชธเชพเชฅเซ‡. เช† เช•เชฟเชธเซเชธเชพเชฎเชพเช‚, เชคเชฎเชพเชฐเซ‡ เชชเชฐเชฟเชฎเชพเชฃเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡ 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 {}. เช…เชฒเชฌเชคเซเชค, เชคเชฎเซ‡ เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจเชจเชพ เชธเชฎเชพเชจ เชญเชพเช—เซ‹เชจเซ€ เชจเช•เชฒ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹, เชชเชฐเช‚เชคเซ เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡ เช† เชเช• เช–เชฐเชพเชฌ เช‰เช•เซ‡เชฒ เช›เซ‡ - เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจ เชตเชงเซ‡ เช›เซ‡, เช…เชจเซ‡ เชœเซ‹ เชคเชฎเซ‡ เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจเชจเซ‹ เชธเชพเชฎเชพเชจเซเชฏ เชญเชพเช— เชฌเชฆเชฒเซ‹ เช›เซ‹, เชคเซ‹ เชคเชฎเชพเชฐเซ‡ เช˜เชฃเซ€ เชœเช—เซเชฏเชพเช เชธเชฎเชพเชจ เชตเชธเซเชคเซเชจเซ‡ เชธเช‚เชชเชพเชฆเชฟเชค เช•เชฐเชตเซ€ เชชเชกเชถเซ‡. เชคเซ‡ เชœ เชธเชฎเชฏเซ‡, เชญเซ‚เชฒ เช•เชฐเชตเซ€ เชธเชฐเชณ เช›เซ‡, เช…เชจเซ‡ เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡, DRY (เชคเชฎเชพเชฐเซ€ เชœเชพเชคเชจเซ‡ เชชเซเชจเชฐเชพเชตเชฐเซเชคเชจ เช•เชฐเชถเซ‹ เชจเชนเซ€เช‚) เชธเชฟเชฆเซเชงเชพเช‚เชคเชจเซ€ เชถเซ‹เชง เชเช• เช•เชพเชฐเชฃเชธเชฐ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เชนเชคเซ€.

เช† เชธเชฎเชธเซเชฏเชพเชจเซ‡ เช‰เช•เซ‡เชฒเชตเชพ เชฎเชพเชŸเซ‡ เช†เชตเซ€ เชกเชฟเชเชพเช‡เชจ เช›เซ‡ เชตเชฐเซเช—.

เชตเชฐเซเช—เซ‹

ะšะปะฐัั เชชเซ‹เชชเซ‡เชŸ เช•เซ‹เชกเชจเซ‹ เชจเชพเชฎ เช†เชชเชตเชพเชฎเชพเช‚ เช†เชตเซ‡เชฒ เชฌเซเชฒเซ‹เช• เช›เซ‡. เช•เซ‹เชกเชจเซ‹ เชซเชฐเซ€เชฅเซ€ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชตเชฐเซเช—เซ‹ เชœเชฐเซ‚เชฐเซ€ เช›เซ‡.

เชชเซเชฐเชฅเชฎ เชตเชฐเซเช—เชจเซเช‚ เชตเชฐเซเชฃเชจ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡. เชตเชฐเซเชฃเชจ เชชเซ‹เชคเซ‡ เช•เซเชฏเชพเช‚เชฏ เช•เซ‹เชˆ เชธเช‚เชธเชพเชงเชจเซ‹ เช‰เชฎเซ‡เชฐเชคเซเช‚ เชจเชฅเซ€. เชตเชฐเซเช— เชฎเซ‡เชจเชฟเชซเซ‡เชธเซเชŸเชฎเชพเช‚ เชตเชฐเซเชฃเชตเซ‡เชฒ เช›เซ‡:

# ะžะฟะธัะฐะฝะธะต ะบะปะฐััะฐ ะฝะฐั‡ะธะฝะฐะตั‚ัั ั ะบะปัŽั‡ะตะฒะพะณะพ ัะปะพะฒะฐ 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',   # ะทะฐะดะฐั‘ะผ ะฟะฐั€ะฐะผะตั‚ั€ั‹ ะบะปะฐััะฐ ั‚ะพั‡ะฝะพ ั‚ะฐะบ ะถะต, ะบะฐะบ ะฟะฐั€ะฐะผะตั‚ั€ั‹ ะดะปั ะดั€ัƒะณะธั… ั€ะตััƒั€ัะพะฒ
  }
}

เชชเชชเซ‡เชŸเชฎเชพเช‚ เชตเซ‡เชฐเซ€เชเชฌเชฒ เชŸเชพเชˆเชช เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. เช–เชพเชตเซเช‚ เช˜เชฃเชพ เชกเซ‡เชŸเชพ เชชเซเชฐเช•เชพเชฐเซ‹. เชกเซ‡เชŸเชพ เชชเซเชฐเช•เชพเชฐเซ‹เชจเซ‹ เช‰เชชเชฏเซ‹เช— เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡ เชตเชฐเซเช—เซ‹ เช…เชจเซ‡ เชตเซเชฏเชพเช–เซเชฏเชพเช“เชฎเชพเช‚ เชชเชธเชพเชฐ เชฅเชฏเซ‡เชฒเชพ เชชเชฐเชฟเชฎเชพเชฃ เชฎเซ‚เชฒเซเชฏเซ‹เชจเซ‡ เชฎเชพเชจเซเชฏ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชฅเชพเชฏ เช›เซ‡. เชœเซ‹ เชชเชพเชธ เช•เชฐเซ‡เชฒ เชชเชฐเชฟเชฎเชพเชฃ เช‰เชฒเซเชฒเซ‡เช–เชฟเชค เชชเซเชฐเช•เชพเชฐ เชธเชพเชฅเซ‡ เชฎเซ‡เชณ เช–เชพเชคเซเช‚ เชจเชฅเซ€, เชคเซ‹ เชธเช‚เช•เชฒเชจ เชญเซ‚เชฒ เชฅเชถเซ‡.

ะขะธะฟ ะฟะธัˆะตั‚ัั ะฝะตะฟะพัั€ะตะดัั‚ะฒะตะฝะฝะพ ะฟะตั€ะตะด ะธะผะตะฝะตะผ ะฟะฐั€ะฐะผะตั‚ั€ะฐ:

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

เชตเชฐเซเช—เซ‹: เชตเชฐเซเช—เชจเชพเชฎ เชตเชฟ เชตเชฐเซเช—{'classname':} เชถเชพเชฎเซ‡เชฒ เช•เชฐเซ‹

เชฆเชฐเซ‡เช• เชตเชฐเซเช— เชเช• เชชเซเชฐเช•เชพเชฐเชจเซเช‚ เชธเชพเชงเชจ เช›เซ‡ เชตเชฐเซเช—. ะšะฐะบ ะธ ะฒ ัะปัƒั‡ะฐะต ั ะปัŽะฑั‹ะผะธ ะดั€ัƒะณะธะผะธ ั‚ะธะฟะฐะผะธ ั€ะตััƒั€ัะพะฒ, ะฝะฐ ะพะดะฝะพะน ะฝะพะดะต ะฝะต ะผะพะถะตั‚ ะฟั€ะธััƒั‚ัั‚ะฒะพะฒะฐั‚ัŒ ะดะฒะฐ ัะบะทะตะผะฟะปัั€ะฐ ะพะดะฝะพะณะพ ะธ ั‚ะพะณะพ ะถะต ะบะปะฐััะฐ.

ะ•ัะปะธ ะฟะพะฟั€ะพะฑะพะฒะฐั‚ัŒ ะดะพะฑะฐะฒะธั‚ัŒ ะบะปะฐัั ะฝะฐ ะพะดะฝัƒ ะธ ั‚ัƒ ะถะต ะฝะพะดัƒ ะดะฒะฐ ั€ะฐะทะฐ ั ะฟะพะผะพั‰ัŒัŽ class { 'classname':} (เช•เซ‹เชˆ เชคเชซเชพเชตเชค เชจเชฅเซ€, เช…เชฒเช— เช…เชฅเชตเชพ เชธเชฎเชพเชจ เชชเชฐเชฟเชฎเชพเชฃเซ‹ เชธเชพเชฅเซ‡), เชธเช‚เช•เชฒเชจ เชญเซ‚เชฒ เชนเชถเซ‡. เชชเชฐเช‚เชคเซ เชœเซ‹ เชคเชฎเซ‡ เชธเช‚เชธเชพเชงเชจ เชถเซˆเชฒเซ€เชฎเชพเช‚ เชตเชฐเซเช—เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‹ เช›เซ‹, เชคเซ‹ เชคเชฎเซ‡ เชคเชฐเชค เชœ เชฎเซ‡เชจเชฟเชซเซ‡เชธเซเชŸเชฎเชพเช‚ เชคเซ‡เชจเชพ เชคเชฎเชพเชฎ เชชเชฐเชฟเชฎเชพเชฃเซ‹ เชธเซเชชเชทเซเชŸเชชเชฃเซ‡ เชธเซ‡เชŸ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹.

เชœเซ‹ เช•เซ‡, เชœเซ‹ เชคเชฎเซ‡ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‹ เช›เซ‹ include, เชชเช›เซ€ เชตเชฐเซเช— เช‡เชšเซเช›เชฟเชค เชคเชฐเซ€เช•เซ‡ เช˜เชฃเซ€ เชตเช–เชค เช‰เชฎเซ‡เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡. เชนเช•เซ€เช•เชค เช เช›เซ‡ เช•เซ‡ include เช เชเช• เช†เช‡เชกเชฎเซเชชเซ‹เชŸเซ‡เชจเซเชŸ เชซเช‚เช•เซเชถเชจ เช›เซ‡ เชœเซ‡ เชคเชชเชพเชธเซ‡ เช›เซ‡ เช•เซ‡ เชกเชฟเชฐเซ‡เช•เซเชŸเชฐเซ€เชฎเชพเช‚ เช•เซเชฒเชพเชธ เช‰เชฎเซ‡เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซ‹ เช›เซ‡ เช•เซ‡ เชจเชนเซ€เช‚. เชœเซ‹ เชตเชฐเซเช— เชกเชฟเชฐเซ‡เช•เซเชŸเชฐเซ€เชฎเชพเช‚ เชจเชฅเซ€, เชคเซ‹ เชคเซ‡ เชคเซ‡เชจเซ‡ เช‰เชฎเซ‡เชฐเซ‡ เช›เซ‡, เช…เชจเซ‡ เชœเซ‹ เชคเซ‡ เชชเชนเซ‡เชฒเซ‡เชฅเซ€ เชœ เช…เชธเซเชคเชฟเชคเซเชตเชฎเชพเช‚ เช›เซ‡, เชคเซ‹ เชคเซ‡ เช•เช‚เชˆ เช•เชฐเชคเซเช‚ เชจเชฅเซ€. เชชเชฐเช‚เชคเซ เช‰เชชเชฏเซ‹เช—เชจเชพ เช•เชฟเชธเซเชธเชพเชฎเชพเช‚ include เชคเชฎเซ‡ เชตเชฐเซเช— เช˜เซ‹เชทเชฃเชพ เชฆเชฐเชฎเชฟเชฏเชพเชจ เชตเชฐเซเช— เชชเชฐเชฟเชฎเชพเชฃเซ‹ เชธเซ‡เชŸ เช•เชฐเซ€ เชถเช•เชคเชพ เชจเชฅเซ€ - เชฌเชงเชพ เชœเชฐเซ‚เชฐเซ€ เชชเชฐเชฟเชฎเชพเชฃเซ‹ เชฌเชพเชนเซเชฏ เชกเซ‡เชŸเชพ เชธเซเชคเซเชฐเซ‹เชค - Hiera เช…เชฅเชตเชพ ENC เชฎเชพเช‚ เชธเซ‡เชŸ เชนเซ‹เชตเชพ เชœเซ‹เชˆเช. เช…เชฎเซ‡ เชนเชตเซ‡ เชชเช›เซ€เชจเชพ เชฒเซ‡เช–เชฎเชพเช‚ เชคเซ‡เชฎเชจเชพ เชตเชฟเชถเซ‡ เชตเชพเชค เช•เชฐเซ€เชถเซเช‚.

เชตเซเชฏเชพเช–เซเชฏเชพเชฏเชฟเชค เช•เชฐเซ‡ เช›เซ‡

เช…เช—เชพเช‰เชจเชพ เชฌเซเชฒเซ‹เช•เชฎเชพเช‚ เชœเชฃเชพเชตเซเชฏเชพ เชฎเซเชœเชฌ, เชเช• เชœ เชตเชฐเซเช— เชจเซ‹เชก เชชเชฐ เชเช• เช•เชฐเชคเชพ เชตเชงเซ เชตเช–เชค เชนเชพเชœเชฐ เชฐเชนเซ€ เชถเช•เชคเซ‹ เชจเชฅเซ€. เชœเซ‹ เช•เซ‡, เช•เซ‡เชŸเชฒเชพเช• เช•เชฟเชธเซเชธเชพเช“เชฎเชพเช‚ เชคเชฎเชพเชฐเซ‡ เชธเชฎเชพเชจ เชจเซ‹เชก เชชเชฐ เชตเชฟเชตเชฟเชง เชชเชฐเชฟเชฎเชพเชฃเซ‹ เชธเชพเชฅเซ‡ เช•เซ‹เชกเชจเชพ เชธเชฎเชพเชจ เชฌเซเชฒเซ‹เช•เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชธเช•เซเชทเชฎ เชฌเชจเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡. เชฌเซ€เชœเชพ เชถเชฌเซเชฆเซ‹เชฎเชพเช‚ เช•เชนเซ€เช เชคเซ‹, เชคเซ‡เชจเชพ เชชเซ‹เชคเชพเชจเชพ เชชเซเชฐเช•เชพเชฐเชจเชพ เชธเช‚เชธเชพเชงเชจเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡.

เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, PHP เชฎเซ‹เชกเซเชฏเซเชฒ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เช…เชฎเซ‡ Avito เชฎเชพเช‚ เชจเซ€เชšเซ‡ เชฎเซเชœเชฌ เช•เชฐเซ€เช เช›เซ€เช:

  1. เช† เชฎเซ‹เชกเซเชฏเซเชฒ เชธเชพเชฅเซ‡ เชชเซ‡เช•เซ‡เชœ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ‹.
  2. เชšเชพเชฒเซ‹ เช† เชฎเซ‹เชกเซเชฏเซเชฒ เชฎเชพเชŸเซ‡ เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจ เชซเชพเชˆเชฒ เชฌเชจเชพเชตเซ€เช.
  3. เช…เชฎเซ‡ php-fpm เชฎเชพเชŸเซ‡ เชฐเซ‚เชชเชฐเซ‡เช–เชพ เชฎเชพเชŸเซ‡ เชธเชฟเชฎเชฒเชฟเช‚เช• เชฌเชจเชพเชตเซ€เช เช›เซ€เช.
  4. เช…เชฎเซ‡ php cli เชฎเชพเชŸเซ‡ เชฐเซ‚เชชเชฐเซ‡เช–เชพ เชฎเชพเชŸเซ‡ เชธเชฟเชฎเชฒเชฟเช‚เช• เชฌเชจเชพเชตเซ€เช เช›เซ€เช.

เช†เชตเชพ เช•เชฟเชธเซเชธเชพเช“เชฎเชพเช‚, เชœเซ‡เชฎ เช•เซ‡ เชกเชฟเชเชพเช‡เชจ เชตเซเชฏเชพเช–เซเชฏเชพเชฏเชฟเชค เช•เชฐเซ‹ (เชตเซเชฏเชพเช–เซเชฏเชพเชฏเชฟเชค, เชจเชฟเชฐเซเชงเชพเชฐเชฟเชค เชชเซเชฐเช•เชพเชฐ, เชจเชฟเชฐเซเชงเชพเชฐเชฟเชค เชธเช‚เชธเชพเชงเชจ เชชเซเชฐเช•เชพเชฐ). เชตเซเชฏเชพเช–เซเชฏเชพ เช เชตเชฐเซเช— เชœเซ‡เชตเซ€ เชœ เช›เซ‡, เชชเชฐเช‚เชคเซ เชคเซ‡เชฎเชพเช‚ เชคเชซเชพเชตเชคเซ‹ เช›เซ‡: เชชเซเชฐเชฅเชฎ, เชฆเชฐเซ‡เช• เชตเซเชฏเชพเช–เซเชฏเชพ เช เชธเช‚เชธเชพเชงเชจ เชชเซเชฐเช•เชพเชฐ เช›เซ‡, เชธเช‚เชธเชพเชงเชจ เชจเชฅเซ€; เชฌเซ€เชœเซเช‚, เชฆเชฐเซ‡เช• เชตเซเชฏเชพเช–เซเชฏเชพเชฎเชพเช‚ เช—เชฐเซเชญเชฟเชค เชชเชฐเชฟเชฎเชพเชฃ เชนเซ‹เชฏ เช›เซ‡ $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 {
  ...
}

เชธเชฟเชตเชพเชฏ

เชœเซเชฏเชพเช‚ เชธเซเชงเซ€ เชเช• if เชตเชฟเชชเชฐเซ€เชค เชนเซ‹เชฏ: เชœเซ‹ เช…เชญเชฟเชตเซเชฏเช•เซเชคเชฟ เช–เซ‹เชŸเซ€ เชนเซ‹เชฏ เชคเซ‹ เช•เซ‹เชกเชจเซ‹ เชฌเซเชฒเซ‹เช• เชเช•เซเชเชฟเช•เซเชฏเซเชŸ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡.

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

เชชเชพเชฅ เชœเซเช“ <modulename>/<filename> เชซเชพเช‡เชฒ เชธเซ‚เชšเชตเซ‡ เช›เซ‡ <rootdir>/modules/<modulename>/templates/<filename>.

เชตเชงเซเชฎเชพเช‚, เชคเซเชฏเชพเช‚ เชเช• เช•เชพเชฐเซเชฏ เช›เซ‡ inline_template โ€” เชคเซ‡ เชŸเซ‡เชฎเซเชชเชฒเซ‡เชŸ เชŸเซ‡เช•เซเชธเซเชŸเชจเซ‡ เช‡เชจเชชเซเชŸ เชคเชฐเซ€เช•เซ‡ เชฎเซ‡เชณเชตเซ‡ เช›เซ‡, เชซเชพเช‡เชฒเชจเชพ เชจเชพเชฎเชจเซ‡ เชจเชนเซ€เช‚.

เชจเชฎเซ‚เชจเชพเช“เชจเซ€ เช…เช‚เชฆเชฐ, เชคเชฎเซ‡ เชตเชฐเซเชคเชฎเชพเชจ เช…เชตเช•เชพเชถเชฎเชพเช‚ เชคเชฎเชพเชฎ เชชเชชเซ‡เชŸ เชšเชฒเซ‹เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹.

เชชเชชเซ‡เชŸ ERB เช…เชจเซ‡ EPP เชซเซ‹เชฐเซเชฎเซ‡เชŸเชฎเชพเช‚ เชŸเซ‡เชฎเซเชชเชฒเซ‡เชŸเซเชธเชจเซ‡ เชธเชชเซ‹เชฐเซเชŸ เช•เชฐเซ‡ เช›เซ‡:

ERB เชตเชฟเชถเซ‡ เชธเช‚เช•เซเชทเชฟเชชเซเชคเชฎเชพเช‚

เชจเชฟเชฏเช‚เชคเซเชฐเชฃ เชฎเชพเชณเช–เชพเช‚:

  • <%= ะ’ะซะ ะะ–ะ•ะะ˜ะ• %> - เช…เชญเชฟเชตเซเชฏเช•เซเชคเชฟเชจเซเช‚ เชฎเซ‚เชฒเซเชฏ เชฆเชพเช–เชฒ เช•เชฐเซ‹
  • <% ะ’ะซะ ะะ–ะ•ะะ˜ะ• %> - เช…เชญเชฟเชตเซเชฏเช•เซเชคเชฟเชจเชพ เชฎเซ‚เชฒเซเชฏเชจเซ€ เช—เชฃเชคเชฐเซ€ เช•เชฐเซ‹ (เชคเซ‡ เชฆเชพเช–เชฒ เช•เชฐเซเชฏเชพ เชตเชฟเชจเชพ). เชถเชฐเชคเซ€ เชจเชฟเชตเซ‡เชฆเชจเซ‹ (เชœเซ‹) เช…เชจเซ‡ เชฒเซ‚เชชเซเชธ (เชฆเชฐเซ‡เช•) เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡ เช…เชนเซ€เช‚ เชœเชพเชฏ เช›เซ‡.
  • <%# ะšะžะœะœะ•ะะขะะ ะ˜ะ™ %>

ERB เชฎเชพเช‚ เช…เชญเชฟเชตเซเชฏเช•เซเชคเชฟเช“ เชฐเซ‚เชฌเซ€เชฎเชพเช‚ เชฒเช–เชพเชฏเซ‡เชฒ เช›เซ‡ (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 -%>

เชนเช•เซ€เช•เชคเซ‹ เช…เชจเซ‡ เชฌเชฟเชฒเซเชŸ-เช‡เชจ เชตเซ‡เชฐเซ€เชเชฌเชฒเซเชธ

เช˜เชฃเซ€เชตเชพเชฐ เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจเชจเซ‹ เชšเซ‹เช•เซเช•เชธ เชญเชพเช— เชจเซ‹เชก เชชเชฐ เชนเชพเชฒเชฎเชพเช‚ เชถเซเช‚ เชฅเชˆ เชฐเชนเซเชฏเซเช‚ เช›เซ‡ เชคเซ‡เชจเชพ เชชเชฐ เช†เชงเชพเชฐ เชฐเชพเช–เซ‡ เช›เซ‡. เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชกเซ‡เชฌเชฟเชฏเชจ เชฐเชฟเชฒเซ€เช เชถเซเช‚ เช›เซ‡ เชคเซ‡เชจเชพ เช†เชงเชพเชฐเซ‡, เชคเชฎเชพเชฐเซ‡ เชชเซ‡เช•เซ‡เชœเชจเซเช‚ เชเช• เช…เชฅเชตเชพ เชฌเซ€เชœเซเช‚ เชธเช‚เชธเซเช•เชฐเชฃ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡. เชคเชฎเซ‡ เช† เชฌเชงเซเช‚ เชฎเซ‡เชจเซเชฏเซเช…เชฒเซ€ เชฎเซ‹เชจเชฟเชŸเชฐ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹, เชœเซ‹ เชจเซ‹เชกเซเชธ เชฌเชฆเชฒเชพเชฏ เชคเซ‹ เชซเชฐเซ€เชฅเซ€ เชฒเช–เซ€ เชฎเซ‡เชจเชฟเชซเซ‡เชธเซเชŸ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹. เชชเชฐเช‚เชคเซ เช† เชเช• เช—เช‚เชญเซ€เชฐ เช…เชญเชฟเช—เชฎ เชจเชฅเซ€; เช“เชŸเซ‹เชฎเซ‡เชถเชจ เชตเชงเซ เชธเชพเชฐเซเช‚ เช›เซ‡.

เช—เชพเช‚เช เซ‹ เชตเชฟเชถเซ‡ เชฎเชพเชนเชฟเชคเซ€ เชฎเซ‡เชณเชตเชตเชพ เชฎเชพเชŸเซ‡, เชชเชชเซ‡เชŸ เชชเชพเชธเซ‡ เชคเชฅเซเชฏเซ‹ เชคเชฐเซ€เช•เซ‡ เช“เชณเช–เชพเชคเซ€ เชชเชฆเซเชงเชคเชฟ เช›เซ‡. เชคเชฅเซเชฏเซ‹ - เช† เชจเซ‹เชก เชตเชฟเชถเซ‡เชจเซ€ เชฎเชพเชนเชฟเชคเซ€ เช›เซ‡, เชœเซ‡ เชตเซˆเชถเซเชตเชฟเช• เชจเซ‡เชฎเชธเซเชชเซ‡เชธเชฎเชพเช‚ เชธเชพเชฎเชพเชจเซเชฏ เชšเชฒเซ‹เชจเชพ เชธเซเชตเชฐเซ‚เชชเชฎเชพเช‚ เชฎเซ‡เชจเชฟเชซเซ‡เชธเซเชŸเชฎเชพเช‚ เช‰เชชเชฒเชฌเซเชง เช›เซ‡. เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชนเซ‹เชธเซเชŸเชจเซเช‚ เชจเชพเชฎ, เช‘เชชเชฐเซ‡เชŸเชฟเช‚เช— เชธเชฟเชธเซเชŸเชฎ เชธเช‚เชธเซเช•เชฐเชฃ, เชชเซเชฐเซ‹เชธเซ‡เชธเชฐ เช†เชฐเซเช•เชฟเชŸเซ‡เช•เซเชšเชฐ, เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเช“เชจเซ€ เชธเซ‚เชšเชฟ, เชจเซ‡เชŸเชตเชฐเซเช• เช‡เชจเซเชŸเชฐเชซเซ‡เชธเชจเซ€ เชธเซ‚เชšเชฟ เช…เชจเซ‡ เชคเซ‡เชฎเชจเชพ เชธเชฐเชจเชพเชฎเชพเช‚, เช…เชจเซ‡ เช˜เชฃเซเช‚ เชฌเชงเซเช‚. เชนเช•เซ€เช•เชคเซ‹ เชฎเซ‡เชจเชฟเชซเซ‡เชธเซเชŸ เช…เชจเซ‡ เชŸเซ‡เชฎเซเชชเชฒเซ‡เชŸเซเชธเชฎเชพเช‚ เชจเชฟเชฏเชฎเชฟเชค เชšเชฒเซ‹ เชคเชฐเซ€เช•เซ‡ เช‰เชชเชฒเชฌเซเชง เช›เซ‡.

เชคเชฅเซเชฏเซ‹ เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเชตเชพเชจเซเช‚ เช‰เชฆเชพเชนเชฐเชฃ:

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

เช”เชชเชšเชพเชฐเชฟเช• เชฐเซ€เชคเซ‡ เช•เชนเซ€เช เชคเซ‹, เชนเช•เซ€เช•เชคเชฎเชพเช‚ เชจเชพเชฎ (เชธเซเชŸเซเชฐเชฟเช‚เช—) เช…เชจเซ‡ เชฎเซ‚เชฒเซเชฏ เชนเซ‹เชฏ เช›เซ‡ (เชตเชฟเชตเชฟเชง เชชเซเชฐเช•เชพเชฐเซ‹ เช‰เชชเชฒเชฌเซเชง เช›เซ‡: เชถเชฌเซเชฆเชฎเชพเชณเชพเช“, เชเชฐเซ‡, เชถเชฌเซเชฆเช•เซ‹เชถ). เช–เชพเชตเซเช‚ เชฌเชฟเชฒเซเชŸ-เช‡เชจ เชคเชฅเซเชฏเซ‹เชจเซ‹ เชธเชฎเซ‚เชน. เชคเชฎเซ‡ เชคเชฎเชพเชฐเซเช‚ เชชเซ‹เชคเชพเชจเซเช‚ เชชเชฃ เชฒเช–เซ€ เชถเช•เซ‹ เช›เซ‹. เชนเช•เซ€เช•เชค เชธเช‚เช—เซเชฐเชพเชนเช•เซ‹ เชตเชฐเซเชฃเชตเซ‡เชฒ เช›เซ‡ เชฐเซ‚เชฌเซ€ เชฎเชพเช‚ เช•เชพเชฐเซเชฏเซ‹เชจเซ€ เชœเซ‡เชฎเช•เซเชฏเชพเช‚ เชคเชฐเซ€เช•เซ‡ เชเช•เซเชเชฟเช•เซเชฏเซเชŸเซ‡เชฌเชฒ เชซเชพเช‡เชฒเซ‹. เชคเชฅเซเชฏเซ‹ เชชเชฃ เชซเซ‹เชฐเซเชฎเชฎเชพเช‚ เชฐเชœเซ‚ เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡ เชกเซ‡เชŸเชพ เชธเชพเชฅเซ‡ เชŸเซ‡เช•เซเชธเซเชŸ เชซเชพเช‡เชฒเซ‹ เช—เชพเช‚เช เซ‹ เชชเชฐ.

เช“เชชเชฐเซ‡เชถเชจ เชฆเชฐเชฎเชฟเชฏเชพเชจ, เช•เช เชชเซ‚เชคเชณเซ€ เชเชœเชจเซเชŸ เชธเซŒเชชเซเชฐเชฅเชฎ เชชเซ‡เชชเซ‡เชŸเชธเชฐเซเชตเชฐเชฅเซ€ เชจเซ‹เชก เชชเชฐ เช‰เชชเชฒเชฌเซเชง เชคเชฎเชพเชฎ เชคเชฅเซเชฏเซ‹ เชธเช‚เช—เซเชฐเชนเช•เซ‹เชจเซ€ เชจเช•เชฒ เช•เชฐเซ‡ เช›เซ‡, เชคเซเชฏเชพเชฐเชฌเชพเชฆ เชคเซ‡ เชคเซ‡เชฎเชจเซ‡ เชฒเซ‹เชจเซเชš เช•เชฐเซ‡ เช›เซ‡ เช…เชจเซ‡ เชเช•เชคเซเชฐเชฟเชค เชคเชฅเซเชฏเซ‹ เชธเชฐเซเชตเชฐเชจเซ‡ เชฎเซ‹เช•เชฒเซ‡ เช›เซ‡; เช† เชชเช›เซ€, เชธเชฐเซเชตเชฐ เช•เซ‡เชŸเชฒเซ‹เช—เชจเซเช‚ เชธเช‚เช•เชฒเชจ เช•เชฐเชตเชพเชจเซเช‚ เชถเชฐเซ‚ เช•เชฐเซ‡ เช›เซ‡.

เชเช•เซเชเซ‡เช•เซเชฏเซเชŸเซ‡เชฌเชฒ เชซเชพเช‡เชฒเซ‹เชจเชพ เชธเซเชตเชฐเซ‚เชชเชฎเชพเช‚ เชนเช•เซ€เช•เชคเซ‹

เช†เชตเชพ เชคเชฅเซเชฏเซ‹ เชกเชฟเชฐเซ‡เช•เซเชŸเชฐเซ€เชฎเชพเช‚ เชฎเซ‹เชกเซเชฏเซเชฒเชฎเชพเช‚ เชฎเซ‚เช•เชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ facts.d. เช…เชฒเชฌเชคเซเชค, เชซเชพเช‡เชฒเซ‹ เชเช•เซเชเซ‡เช•เซเชฏเซเชŸเซ‡เชฌเชฒ เชนเซ‹เชตเซ€ เชœเซ‹เชˆเช. เชœเซเชฏเชพเชฐเซ‡ เชšเชฒเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซ‡, เชคเซเชฏเชพเชฐเซ‡ เชคเซ‡เช“เช YAML เช…เชฅเชตเชพ เช•เซ€=เชฎเซ‚เชฒเซเชฏ เชซเซ‹เชฐเซเชฎเซ‡เชŸเชฎเชพเช‚ เชชเซเชฐเชฎเชพเชฃเชญเซ‚เชค เช†เช‰เชŸเชชเซเชŸเชฎเชพเช‚ เชฎเชพเชนเชฟเชคเซ€ เช†เช‰เชŸเชชเซเชŸ เช•เชฐเชตเซ€ เช†เชตเชถเซเชฏเช• เช›เซ‡.

เชญเซ‚เชฒเชถเซ‹ เชจเชนเซ€เช‚ เช•เซ‡ เชคเชฅเซเชฏเซ‹ เชคเชฎเชพเชฎ เชจเซ‹เชกเซเชธ เชชเชฐ เชฒเชพเช—เซ เชฅเชพเชฏ เช›เซ‡ เชœเซ‡ เชชเซ‹เชชเซ‡เชŸ เชธเชฐเซเชตเชฐ เชฆเซเชตเชพเชฐเชพ เชจเชฟเชฏเช‚เชคเซเชฐเชฟเชค เชฅเชพเชฏ เช›เซ‡ เชœเซ‡เชฎเชพเช‚ เชคเชฎเชพเชฐเซเช‚ เชฎเซ‹เชกเซเชฏเซเชฒ เชœเชฎเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. เชคเซ‡เชฅเซ€, เชธเซเช•เซเชฐเชฟเชชเซเชŸเชฎเชพเช‚, เชธเชฟเชธเซเชŸเชฎเชฎเชพเช‚ เชคเชฎเชพเชฐเชพ เชคเชฅเซเชฏเชจเซ‡ เช•เชพเชฎ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชœเชฐเซ‚เชฐเซ€ เชคเชฎเชพเชฎ เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎเซเชธ เช…เชจเซ‡ เชซเชพเช‡เชฒเซ‹ เช›เซ‡ เช•เซ‡ เชจเชนเซ€เช‚ เชคเซ‡ เชคเชชเชพเชธเชตเชพเชจเซ€ เช•เชพเชณเชœเซ€ เชฒเซ‹.

#!/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).

ะ’ะพั‚ ะฝัƒะถะฝั‹ะน ั€ะฐะทะดะตะป ะดะพะบัƒะผะตะฝั‚ะฐั†ะธะธ.

เชฌเชฟเชฒเซเชŸ-เช‡เชจ เชตเซ‡เชฐเซ€เชเชฌเชฒเซเชธ

เชนเช•เซ€เช•เชคเซ‹ เช‰เชชเชฐเชพเช‚เชค, เชคเซเชฏเชพเช‚ เชชเชฃ เช›เซ‡ เช•เซ‡เชŸเชฒเชพเช• เชšเชฒเซ‹, เชตเซˆเชถเซเชตเชฟเช• เชจเซ‡เชฎเชธเซเชชเซ‡เชธเชฎเชพเช‚ เช‰เชชเชฒเชฌเซเชง เช›เซ‡.

  • trusted facts โ€” เชšเชฒเซ‹ เชœเซ‡ เช•เซเชฒเชพเชฏเช‚เชŸเชจเชพ เชชเซเชฐเชฎเชพเชฃเชชเชคเซเชฐเชฎเชพเช‚เชฅเซ€ เชฒเซ‡เชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ (เช•เชพเชฐเชฃ เช•เซ‡ เชชเซเชฐเชฎเชพเชฃเชชเชคเซเชฐ เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡ เชชเซ‹เชชเซ‡เชŸ เชธเชฐเซเชตเชฐ เชชเชฐ เชœเชพเชฐเซ€ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เชเชœเชจเซเชŸ เชซเช•เซเชค เชคเซ‡เชจเซเช‚ เชชเซเชฐเชฎเชพเชฃเชชเชคเซเชฐ เชฒเชˆ เช…เชจเซ‡ เชฌเชฆเชฒเซ€ เชถเช•เชคเซเช‚ เชจเชฅเซ€, เชคเซ‡เชฅเซ€ เชšเชฒเซ‹ "เชตเชฟเชถเซเชตเชธเชจเซ€เชฏ" เช›เซ‡): เชชเซเชฐเชฎเชพเชฃเชชเชคเซเชฐเชจเซเช‚ เชจเชพเชฎ, เชจเชพเชฎ เชนเซ‹เชธเซเชŸ เช…เชจเซ‡ เชกเซ‹เชฎเซ‡เชจ, เชชเซเชฐเชฎเชพเชฃเชชเชคเซเชฐเชฎเชพเช‚เชฅเซ€ เชเช•เซเชธเซเชŸเซ‡เช‚เชถเชจ.
  • เชธเชฐเซเชตเชฐ เชคเชฅเซเชฏเซ‹ เชธเชฐเซเชตเชฐ เชตเชฟเชถเซ‡เชจเซ€ เชฎเชพเชนเชฟเชคเซ€ เชธเชพเชฅเซ‡ เชธเช‚เชฌเช‚เชงเชฟเชค เชšเชฒ-เชธเช‚เชธเซเช•เชฐเชฃ, เชจเชพเชฎ, เชธเชฐเซเชตเชฐ IP เชธเชฐเชจเชพเชฎเซเช‚, เชชเชฐเซเชฏเชพเชตเชฐเชฃ.
  • เชเชœเชจเซเชŸ เชคเชฅเซเชฏเซ‹ โ€” เชšเชฒเซ‹ เชธเซ€เชงเชพ เชชเชชเซ‡เชŸ-เชเชœเชจเซเชŸ เชฆเซเชตเชพเชฐเชพ เช‰เชฎเซ‡เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เช…เชจเซ‡ เชซเซ‡เช•เซเชŸเชฐ เชฆเซเชตเชพเชฐเชพ เชจเชนเซ€เช‚ โ€” เชชเซเชฐเชฎเชพเชฃเชชเชคเซเชฐเชจเซเช‚ เชจเชพเชฎ, เชเชœเชจเซเชŸ เชธเช‚เชธเซเช•เชฐเชฃ, เชชเชชเซ‡เชŸ เชธเช‚เชธเซเช•เชฐเชฃ.
  • เชฎเซเช–เซเชฏ เชšเชฒเซ‹ - เชชเซ‡เชชเซ‡เชŸเชฎเชพเชธเซเชŸเชฐ เชšเชฒเซ‹ (sic!). เชคเซ‡ เชฒเช—เชญเช— เชฎเชพเช‚ เชœเซ‡เชตเซเช‚ เชœ เช›เซ‡ เชธเชฐเซเชตเชฐ เชคเชฅเซเชฏเซ‹, เชตเชคเซเชคเชพ เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจ เชชเชฐเชฟเชฎเชพเชฃ เชฎเซ‚เชฒเซเชฏเซ‹ เช‰เชชเชฒเชฌเซเชง เช›เซ‡.
  • เช•เชฎเซเชชเชพเช‡เชฒเชฐ เชšเชฒเซ‹ โ€” เช•เชฎเซเชชเชพเชˆเชฒเชฐ เชตเซ‡เชฐเซ€เชเชฌเชฒเซเชธ เชœเซ‡ เชฆเชฐเซ‡เช• เชธเซเช•เซ‹เชชเชฎเชพเช‚ เช…เชฒเช— เชชเชกเซ‡ เช›เซ‡: เชตเชฐเซเชคเชฎเชพเชจ เชฎเซ‹เชกเซเชฏเซเชฒเชจเซเช‚ เชจเชพเชฎ เช…เชจเซ‡ เชฎเซ‹เชกเซเชฏเซเชฒเชจเซเช‚ เชจเชพเชฎ เชœเซ‡เชฎเชพเช‚ เชตเชฐเซเชคเชฎเชพเชจ เช‘เชฌเซเชœเซ‡เช•เซเชŸ เชเช•เซเชธเซ‡เชธ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซ‹ เชนเชคเซ‹. เชคเซ‡เช“เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡, เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชคเชฎเชพเชฐเชพ เช–เชพเชจเช—เซ€ เชตเชฐเซเช—เซ‹ เช…เชจเซเชฏ เชฎเซ‹เชกเซเชฏเซเชฒเซ‹เชฎเชพเช‚เชฅเซ€ เชธเซ€เชงเชพ เช‰เชชเชฏเซ‹เช—เชฎเชพเช‚ เชฒเซ‡เชตเชพเชคเชพ เชจเชฅเซ€ เชคเซ‡ เชคเชชเชพเชธเชตเชพ เชฎเชพเชŸเซ‡.

เช‰เชฎเซ‡เชฐเซ‹ 1: เช† เชฌเชงเซเช‚ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชšเชฒเชพเชตเชตเซเช‚ เช…เชจเซ‡ เชกเซ€เชฌเช— เช•เชฐเชตเซเช‚?

เชฒเซ‡เช–เชฎเชพเช‚ เชชเชชเซ‡เชŸ เช•เซ‹เชกเชจเชพ เช˜เชฃเชพ เช‰เชฆเชพเชนเชฐเชฃเซ‹ เช›เซ‡, เชชเชฐเช‚เชคเซ เช† เช•เซ‹เชก เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชšเชฒเชพเชตเชตเซ‹ เชคเซ‡ เช…เชฎเชจเซ‡ เชฌเชฟเชฒเช•เซเชฒ เช•เชนเซเชฏเซเช‚ เชจเชฅเซ€. เชธเชพเชฐเซเช‚, เชนเซเช‚ เชฎเชพเชฐเซ€ เชœเชพเชคเชจเซ‡ เชธเซเชงเชพเชฐเซ€ เชฐเชนเซเชฏเซ‹ เช›เซเช‚.

เชชเชชเซ‡เชŸ เชšเชฒเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เชเช• เชเชœเชจเซเชŸ เชชเชฐเซเชฏเชพเชชเซเชค เช›เซ‡, เชชเชฐเช‚เชคเซ เชฎเซ‹เชŸเชพเชญเชพเช—เชจเชพ เช•เชฟเชธเซเชธเชพเช“เชฎเชพเช‚ เชคเชฎเชพเชฐเซ‡ เชธเชฐเซเชตเชฐเชจเซ€ เชชเชฃ เชœเชฐเซ‚เชฐ เชชเชกเชถเซ‡.

เชเชœเชจเซเชŸ

เช“เช›เชพเชฎเชพเช‚ เช“เช›เซเช‚ เชธเช‚เชธเซเช•เชฐเชฃ XNUMX เชฅเซ€, เช•เช เชชเซ‚เชคเชณเซ€-เชเชœเชจเซเชŸ เชชเซ‡เช•เซ‡เชœเซ‹เชฎเชพเช‚เชฅเซ€ เชธเชคเซเชคเชพเชตเชพเชฐ เชชเชชเซ‡เชŸเชฒเซ‡เชฌเซเชธ เชญเช‚เชกเชพเชฐ เชคเชฎเชพเชฎ เช…เชตเชฒเช‚เชฌเชจ (เชฐเซ‚เชฌเซ€ เช…เชจเซ‡ เช…เชจเซเชฐเซ‚เชช เชฐเชคเซเชจเซ‹) เชธเชฎเชพเชตเซ‡ เช›เซ‡, เชคเซ‡เชฅเซ€ เช‡เชจเซเชธเซเชŸเซ‹เชฒเซ‡เชถเชจเชฎเชพเช‚ เช•เซ‹เชˆ เชฎเซเชถเซเช•เซ‡เชฒเซ€เช“ เชจเชฅเซ€ (เชนเซเช‚ เชกเซ‡เชฌเชฟเชฏเชจ-เช†เชงเชพเชฐเชฟเชค เชตเชฟเชคเชฐเชฃเซ‹ เชตเชฟเชถเซ‡ เชตเชพเชค เช•เชฐเซเช‚ เช›เซเช‚ - เช…เชฎเซ‡ RPM-เช†เชงเชพเชฐเชฟเชค เชตเชฟเชคเชฐเชฃเซ‹เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชคเชพ เชจเชฅเซ€).

เชธเซŒเชฅเซ€ เชธเชฐเชณ เช•เชฟเชธเซเชธเชพเชฎเชพเช‚, เช•เช เชชเซ‚เชคเชณเซ€เชจเชพ เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เชเชœเชจเซเชŸเชจเซ‡ เชธเชฐเซเชตเชฐเชฒเซ‡เชธ เชฎเซ‹เชกเชฎเชพเช‚ เชฒเซ‹เช‚เชš เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชชเซ‚เชฐเชคเซเช‚ เช›เซ‡: เชชเซ‚เชฐเซ€ เชชเชพเชกเชตเชพเชฎเชพเช‚ เช†เชตเซ‡เชฒ เช›เซ‡ เช•เซ‡ เชชเชชเซ‡เชŸ เช•เซ‹เชก เชจเซ‹เชก เชชเชฐ เช•เซ‰เชชเชฟ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เชฒเซ‹เช‚เชš เช•เชฐเซ‹. 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.

เชธเชฐเซเชตเชฐ

ะŸะพะปะฝะพั†ะตะฝะฝัƒัŽ ะฝะฐัั‚ั€ะพะนะบัƒ ะฟะฐะฟะฟะตั‚ัะตั€ะฒะตั€ะฐ ะธ ะดะตะฟะปะพะน ะฝะฐ ะฝะตะณะพ ะบะพะดะฐ ะฒ ัั‚ะพะน ัั‚ะฐั‚ัŒะต ั ะฝะต ะฑัƒะดัƒ ั€ะฐััะผะฐั‚ั€ะธะฒะฐั‚ัŒ, ัะบะฐะถัƒ ะปะธัˆัŒ, ั‡ั‚ะพ ะธะท ะบะพั€ะพะฑะบะธ ัั‚ะฐะฒะธั‚ัั ะฒะฟะพะปะฝะต ั€ะฐะฑะพั‚ะพัะฟะพัะพะฑะฝะฐั ะฒะตั€ัะธั ัะตั€ะฒะตั€ะฐ, ะฝะต ั‚ั€ะตะฑัƒัŽั‰ะฐั ะดะพะฟะพะปะฝะธั‚ะตะปัŒะฝะพะน ะฝะฐัั‚ั€ะพะนะบะธ ะดะปั ั€ะฐะฑะพั‚ั‹ ะฒ ัƒัะปะพะฒะธัั… ะฝะตะฑะพะปัŒัˆะพะณะพ ะบะพะปะธั‡ะตัั‚ะฒะฐ ะฝะพะด (ัะบะฐะถะตะผ, ะดะพ ัั‚ะฐ). ะ‘ะพะปัŒัˆะตะต ะบะพะปะธั‡ะตัั‚ะฒะพ ะฝะพะด ัƒะถะต ะฟะพั‚ั€ะตะฑัƒะตั‚ ั‚ัŽะฝะธะฝะณะฐ โ€” ะฟะพ ัƒะผะพะปั‡ะฐะฝะธัŽ puppetserver ะทะฐะฟัƒัะบะฐะตั‚ ะฝะต ะฑะพะปัŒัˆะต ั‡ะตั‚ั‹ั€ั‘ั… ะฒะพั€ะบะตั€ะพะฒ, ะดะปั ะฑะพะปัŒัˆะตะน ะฟั€ะพะธะทะฒะพะดะธั‚ะตะปัŒะฝะพัั‚ะธ ะฝัƒะถะฝะพ ัƒะฒะตะปะธั‡ะธั‚ัŒ ะธั… ั‡ะธัะปะพ ะธ ะฝะต ะทะฐะฑั‹ั‚ัŒ ัƒะฒะตะปะธั‡ะธั‚ัŒ ะปะธะผะธั‚ั‹ ะฟะฐะผัั‚ะธ, ะธะฝะฐั‡ะต ะฑะพะปัŒัˆัƒัŽ ั‡ะฐัั‚ัŒ ะฒั€ะตะผะตะฝะธ ัะตั€ะฒะตั€ ะฑัƒะดะตั‚ garbage collectโ€™ะธั‚ัŒ.

เช•เซ‹เชก เชกเชฟเชชเซเชฒเซ‹เชฏเชฎเซ‡เชจเซเชŸ - เชœเซ‹ เชคเชฎเชจเซ‡ เชคเซ‡เชจเซ€ เชเชกเชชเชฅเซ€ เช…เชจเซ‡ เชธเชฐเชณเชคเชพเชฅเซ€ เชœเชฐเซ‚เชฐ เชนเซ‹เชฏ, เชคเซ‹ เชชเช›เซ€ เชœเซเช“ (r10k เชชเชฐ)[https://github.com/puppetlabs/r10k], เชจเชพเชจเชพ เชธเซเชฅเชพเชชเชจเซ‹ เชฎเชพเชŸเซ‡ เชคเซ‡ เชชเซ‚เชฐเชคเซเช‚ เชนเซ‹เชตเซเช‚ เชœเซ‹เชˆเช.

เชชเชฐเชฟเชถเชฟเชทเซเชŸ 2: เช•เซ‹เชกเชฟเช‚เช— เชฎเชพเชฐเซเช—เชฆเชฐเซเชถเชฟเช•เชพ

  1. ะ’ั‹ะฝะพัะธั‚ะต ะฒััŽ ะปะพะณะธะบัƒ ะฒ ะบะปะฐััั‹ ะธ ะดะตั„ะฐะนะฝั‹.
  2. เชตเชฐเซเช—เซ‹ เช…เชจเซ‡ เชตเซเชฏเชพเช–เซเชฏเชพเช“เชจเซ‡ เชฎเซ‹เชกเซเชฏเซเชฒเชฎเชพเช‚ เชฐเชพเช–เซ‹, เชจเซ‹เชกเซเชธเชจเซเช‚ เชตเชฐเซเชฃเชจ เช•เชฐเชคเชพ เชฎเซ‡เชจเชฟเชซเซ‡เชธเซเชŸเชฎเชพเช‚ เชจเชนเซ€เช‚.
  3. เชคเชฅเซเชฏเซ‹เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‹.
  4. เชฏเชœเชฎเชพเชจเชจเชพเชฎเซ‹ เชชเชฐ เช†เชงเชพเชฐเชฟเชค ifs เชฌเชจเชพเชตเชถเซ‹ เชจเชนเซ€เช‚.
  5. ะะต ัั‚ะตัะฝัะนั‚ะตััŒ ะดะพะฑะฐะฒะปัั‚ัŒ ะฟะฐั€ะฐะผะตั‚ั€ั‹ ะดะปั ะบะปะฐััะพะฒ ะธ ะดะตั„ะฐะนะฝะพะฒ โ€” ัั‚ะพ ะปัƒั‡ัˆะต, ั‡ะตะผ ะฝะตัะฒะฝะฐั ะปะพะณะธะบะฐ, ัะฟั€ัั‚ะฐะฝะฝะฐั ะฒ ั‚ะตะปะต ะบะปะฐััะฐ/ะดะตั„ะฐะนะฝะฐ.

เชนเซเช‚ เช†เช—เชณเชจเชพ เชฒเซ‡เช–เชฎเชพเช‚ เชถเชพ เชฎเชพเชŸเซ‡ เช† เช•เชฐเชตเชพเชจเซ€ เชญเชฒเชพเชฎเชฃ เช•เชฐเซเช‚ เช›เซเช‚ เชคเซ‡ เชนเซเช‚ เชธเชฎเชœเชพเชตเซ€เชถ.

เชจเชฟเชทเซเช•เชฐเซเชท

เชšเชพเชฒเซ‹ เชชเชฐเชฟเชšเชฏ เชธเชพเชฅเซ‡ เชธเชฎเชพเชชเซเชค เช•เชฐเซ€เช. เชนเชตเซ‡ เชชเช›เซ€เชจเชพ เชฒเซ‡เช–เชฎเชพเช‚ เชนเซเช‚ เชคเชฎเชจเซ‡ Hiera, ENC เช…เชจเซ‡ PuppetDB เชตเชฟเชถเซ‡ เชœเชฃเชพเชตเซ€เชถ.

เชซเช•เซเชค เชจเซ‹เช‚เชงเชพเชฏเซ‡เชฒเชพ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเช“ เชœ เชธเชฐเซเชตเซ‡เชฎเชพเช‚ เชญเชพเช— เชฒเชˆ เชถเช•เซ‡ เช›เซ‡. เชธเชพเช‡เชจ เช‡เชจ เช•เชฐเซ‹, เชฎเชนเซ‡เชฐเชฌเชพเชจเซ€ เช•เชฐเซ€เชจเซ‡.

เชนเช•เซ€เช•เชคเชฎเชพเช‚, เชคเซเชฏเชพเช‚ เช˜เชฃเซ€ เชตเชงเซ เชธเชพเชฎเช—เซเชฐเซ€ เช›เซ‡ - เชนเซเช‚ เชจเซ€เชšเซ‡เชจเชพ เชตเชฟเชทเชฏเซ‹ เชชเชฐ เชฒเซ‡เช–เซ‹ เชฒเช–เซ€ เชถเช•เซเช‚ เช›เซเช‚, เชคเชฎเชจเซ‡ เชœเซ‡เชจเชพ เชตเชฟเชถเซ‡ เชตเชพเช‚เชšเชตเชพเชฎเชพเช‚ เชฐเชธ เชนเชถเซ‡ เชคเซ‡เชจเชพ เชชเชฐ เชฎเชค เช†เชชเซ‹:

  • 59,1%เช…เชฆเซเชฏเชคเชจ เช•เช เชชเซ‚เชคเชณเซ€เชจเซ€ เชฐเชšเชจเชพเช“ - เช•เซ‡เชŸเชฒเชพเช• เช†เช—เชฒเชพ-เชธเซเชคเชฐเชจเชพ เชถเชฟเชŸ: เชฒเซ‚เชชเซเชธ, เชฎเซ‡เชชเชฟเช‚เช— เช…เชจเซ‡ เช…เชจเซเชฏ เชฒเซ‡เชฎเซเชฌเชกเชพ เชเช•เซเชธเชชเซเชฐเซ‡เชถเชจเซเชธ, เชฐเชฟเชธเซ‹เชฐเซเชธ เช•เชฒเซ‡เช•เซเชŸเชฐเซเชธ, เชจเชฟเช•เชพเชธ เช•เชฐเซ‡เชฒเชพ เชธเช‚เชธเชพเชงเชจเซ‹ เช…เชจเซ‡ เชชเชชเซ‡เชŸ, เชŸเซ…เช—เซเชธ, เชชเซเชฐเชฆเชพเชคเชพเช“, เช…เชฎเซ‚เชฐเซเชค เชกเซ‡เชŸเชพ เชชเซเชฐเช•เชพเชฐเซ‹ เชฆเซเชตเชพเชฐเชพ เช†เช‚เชคเชฐ-เชฏเชœเชฎเชพเชจ เชธเช‚เชšเชพเชฐ.13
  • 31,8%"เชนเซเช‚ เชฎเชพเชฐเซ€ เชฎเชพเชคเชพเชจเซ‹ เชเชกเชฎเชฟเชจ เช›เซเช‚" เช…เชฅเชตเชพ เช…เชฎเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช…เชตเชฟเชŸเซ‹เชฎเชพเช‚ เชตเชฟเชตเชฟเชง เชธเช‚เชธเซเช•เชฐเชฃเซ‹เชจเชพ เช˜เชฃเชพ เชชเซ‹เชชเซ‡เชŸ เชธเชฐเซเชตเชฐเซเชธ เชธเชพเชฅเซ‡ เชฎเชฟเชคเซเชฐเซ‹ เชฌเชจเชพเชตเซเชฏเชพ, เช…เชจเซ‡ เชธเชฟเชฆเซเชงเชพเช‚เชคเชฎเชพเช‚, เชชเซ‹เชชเซ‡เชŸ เชธเชฐเซเชตเชฐเชจเซเช‚ เชธเช‚เชšเชพเชฒเชจ เช•เชฐเชตเชพ เชตเชฟเชถเซ‡เชจเซ‹ เชญเชพเช—.7
  • 81,8%เช†เชชเชฃเซ‡ เชชเชชเซ‡เชŸ เช•เซ‹เชก เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชฒเช–เซ€เช เช›เซ€เช: เช‡เชจเซเชธเซเชŸเซเชฐเซเชฎเซ‡เชจเซเชŸเซ‡เชถเชจ, เชกเซ‹เช•เซเชฏเซเชฎเซ‡เชจเซเชŸเซ‡เชถเชจ, เชŸเซ‡เชธเซเชŸเชฟเช‚เช—, CI/CD.18

22 เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเช“เช เชฎเชค โ€‹โ€‹เช†เชชเซเชฏเซ‹. 9 เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเช“ เชฆเซ‚เชฐ เชฐเชนเซเชฏเชพ.

เชธเซ‹เชฐเซเชธ: www.habr.com