เจ•เจ เจชเฉเจคเจฒเฉ€ เจจเจพเจฒ เจœเจพเจฃ-เจชเจ›เจพเจฃ

เจ•เจ เจชเฉเจคเจฒเฉ€ เจ‡เฉฑเจ• เจธเฉฐเจฐเจšเจจเจพ เจชเฉเจฐเจฌเฉฐเจงเจจ เจธเจฟเจธเจŸเจฎ เจนเฉˆเฅค เจ‡เจธเจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจฎเฉ‡เจœเจผเจฌเจพเจจเจพเจ‚ เจจเฉ‚เฉฐ เจฒเฉ‹เฉœเฉ€เจ‚เจฆเฉ€ เจธเจฅเจฟเจคเฉ€ เจตเจฟเฉฑเจš เจฒเจฟเจ†เจ‰เจฃ เจ…เจคเฉ‡ เจ‡เจธ เจธเจฅเจฟเจคเฉ€ เจจเฉ‚เฉฐ เจฌเจฃเจพเจˆ เจฐเฉฑเจ–เจฃ เจฒเจˆ เจ•เฉ€เจคเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆเฅค

เจฎเฉˆเจ‚ เจนเฉเจฃ เจชเฉฐเจœ เจธเจพเจฒเจพเจ‚ เจคเฉ‹เจ‚ เจ•เจ เจชเฉเจคเจฒเฉ€ เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐ เจฐเจฟเจนเจพ เจนเจพเจ‚. เจ‡เจน เจŸเฉˆเจ•เจธเจŸ เจฒเจพเจœเจผเจฎเฉ€ เจคเฉŒเจฐ 'เจคเฉ‡ เจ…เจงเจฟเจ•เจพเจฐเจค เจฆเจธเจคเจพเจตเฉ‡เจœเจผเจพเจ‚ เจคเฉ‹เจ‚ เจฎเฉเฉฑเจ– เจฌเจฟเฉฐเจฆเฉ‚เจ†เจ‚ เจฆเจพ เจ…เจจเฉเจตเจพเจฆเจฟเจค เจ…เจคเฉ‡ เจฎเฉเฉœ เจ•เฉเจฐเจฎเจฌเฉฑเจง เจธเฉฐเจ•เจฒเจจ เจนเฉˆ, เจœเฉ‹ เจธเจผเฉเจฐเฉ‚เจ†เจค เจ•เจฐเจจ เจตเจพเจฒเจฟเจ†เจ‚ เจจเฉ‚เฉฐ เจ•เจ เจชเฉเจคเจฒเฉ€ เจฆเฉ‡ เจคเฉฑเจค เจจเฉ‚เฉฐ เจœเจฒเจฆเฉ€ เจธเจฎเจเจฃ เจฆเฉ€ เจ†เจ—เจฟเจ† เจฆเฉ‡เจตเฉ‡เจ—เจพเฅค

เจ•เจ เจชเฉเจคเจฒเฉ€ เจจเจพเจฒ เจœเจพเจฃ-เจชเจ›เจพเจฃ

เจฎเฉเฉฑ .เจฒเฉ€ เจœเจพเจฃเจ•เจพเจฐเฉ€

เจ•เจ เจชเฉเจคเจฒเฉ€ เจฆเจพ เจ“เจชเจฐเฉ‡เจŸเจฟเฉฐเจ— เจธเจฟเจธเจŸเจฎ เจ•เจฒเจพเจ‡เฉฐเจŸ-เจธเจฐเจตเจฐ เจนเฉˆ, เจนเจพเจฒเจพเจ‚เจ•เจฟ เจ‡เจน เจธเฉ€เจฎเจค เจ•เจพเจฐเจœเจธเจผเฉ€เจฒเจคเจพ เจฆเฉ‡ เจจเจพเจฒ เจธเจฐเจตเจฐ เจฐเจนเจฟเจค เจธเฉฐเจšเจพเจฒเจจ เจฆเจพ เจธเจฎเจฐเจฅเจจ เจตเฉ€ เจ•เจฐเจฆเจพ เจนเฉˆเฅค

เจ“เจชเจฐเฉ‡เจธเจผเจจ เจฆเจพ เจ‡เฉฑเจ• เจชเฉเฉฑเจฒ เจฎเจพเจกเจฒ เจตเจฐเจคเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆ: เจฎเฉ‚เจฒ เจฐเฉ‚เจช เจตเจฟเฉฑเจš, เจนเจฐ เจ…เฉฑเจงเฉ‡ เจ˜เฉฐเจŸเฉ‡ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจตเจพเจฐ, เจ•เจฒเจพเจ‡เฉฐเจŸ เจ‡เฉฑเจ• เจธเฉฐเจฐเจšเจจเจพ เจฒเจˆ เจธเจฐเจตเจฐ เจจเจพเจฒ เจธเฉฐเจชเจฐเจ• เจ•เจฐเจฆเฉ‡ เจนเจจ เจ…เจคเฉ‡ เจ‡เจธเจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เจฐเจฆเฉ‡ เจนเจจเฅค เจœเฉ‡เจ•เจฐ เจคเฉเจธเฉ€เจ‚ Ansible เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เฉ€เจคเจพ เจนเฉˆ, เจคเจพเจ‚ เจ‰เจน เจ‡เฉฑเจ• เจตเฉฑเจ–เจฐเฉ‡ เจชเฉเจธเจผ เจฎเจพเจกเจฒ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเจจ: เจชเฉเจฐเจฌเฉฐเจงเจ• เจธเฉฐเจฐเจšเจจเจพ เจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เจฐเจจ เจฆเฉ€ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจธเจผเฉเจฐเฉ‚ เจ•เจฐเจฆเจพ เจนเฉˆ, เจ—เจพเจนเจ• เจ–เฉเจฆ เจ•เฉเจ เจตเฉ€ เจฒเจพเจ—เฉ‚ เจจเจนเฉ€เจ‚ เจ•เจฐเจจเจ—เฉ‡เฅค

เจจเฉˆเฉฑเจŸเจตเจฐเจ• เจธเฉฐเจšเจพเจฐ เจฆเฉŒเจฐเจพเจจ, เจฆเฉ‹-เจคเจฐเฉ€เจ•เฉ‡ เจจเจพเจฒ TLS เจเจจเจ•เฉเจฐเจฟเจชเจธเจผเจจ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เฉ€เจคเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆ: เจธเจฐเจตเจฐ เจ…เจคเฉ‡ เจ•เจฒเจพเจ‡เฉฐเจŸ เจฆเฉ€เจ†เจ‚ เจ†เจชเจฃเฉ€เจ†เจ‚ เจจเจฟเฉฑเจœเฉ€ เจ•เฉเฉฐเจœเฉ€เจ†เจ‚ เจ…เจคเฉ‡ เจธเฉฐเจฌเฉฐเจงเจฟเจค เจธเจฐเจŸเฉ€เจซเจฟเจ•เฉ‡เจŸ เจนเฉเฉฐเจฆเฉ‡ เจนเจจเฅค เจ†เจฎ เจคเฉŒเจฐ 'เจคเฉ‡ เจธเจฐเจตเจฐ เจ—เจพเจนเจ•เจพเจ‚ เจฒเจˆ เจธเจฐเจŸเฉ€เจซเจฟเจ•เฉ‡เจŸ เจœเจพเจฐเฉ€ เจ•เจฐเจฆเจพ เจนเฉˆ, เจชเจฐ เจธเจฟเจงเจพเจ‚เจคเจ• เจคเฉŒเจฐ 'เจคเฉ‡ เจฌเจพเจนเจฐเฉ€ CA เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจเจพ เจธเฉฐเจญเจต เจนเฉˆเฅค

เจฎเฉˆเจจเฉ€เจซเฉˆเจธเจŸเฉ‹ เจฆเฉ€ เจœเจพเจฃ-เจชเจ›เจพเจฃ

เจ•เจ เจชเฉเจคเจฒเฉ€ เจธเจผเจฌเจฆเจพเจตเจฒเฉ€ เจตเจฟเฉฑเจš เจ•เจ เจชเฉเจคเจฒเฉ€ เจธเจฐเจตเจฐ เจจเฉ‚เฉฐ เจœเฉเฉœเฉ‹ เจจเฉ‹เจกเจธ (เจจเฉ‹เจก)เฅค เจจเฉ‹เจกเจพเจ‚ เจฒเจˆ เจธเฉฐเจฐเจšเจจเจพ เจฒเจฟเจ–เฉ€ เจ—เจˆ เจนเฉˆ เจฎเฉˆเจจเฉ€เจซเฉˆเจธเจŸเฉ‹ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจตเจฟเจธเจผเฉ‡เจธเจผ เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎเจฟเฉฐเจ— เจญเจพเจธเจผเจพ เจตเจฟเฉฑเจš - เจ•เจ เจชเฉเจคเจฒเฉ€ DSL.

เจ•เจ เจชเฉเจคเจฒเฉ€ DSL เจ‡เฉฑเจ• เจ˜เฉ‹เจธเจผเจฃเจพเจคเจฎเจ• เจญเจพเจธเจผเจพ เจนเฉˆเฅค เจ‡เจน เจตเจฟเจ…เจ•เจคเฉ€เจ—เจค เจธเจฐเฉ‹เจคเจพเจ‚ เจฆเฉ€เจ†เจ‚ เจ˜เฉ‹เจธเจผเจฃเจพเจตเจพเจ‚ เจฆเฉ‡ เจฐเฉ‚เจช เจตเจฟเฉฑเจš เจจเฉ‹เจก เจฆเฉ€ เจฒเฉ‹เฉœเฉ€เจ‚เจฆเฉ€ เจธเจฅเจฟเจคเฉ€ เจฆเจพ เจตเจฐเจฃเจจ เจ•เจฐเจฆเจพ เจนเฉˆ, เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ:

  • เจซเจพเจˆเจฒ เจฎเฉŒเจœเฉ‚เจฆ เจนเฉˆ เจ…เจคเฉ‡ เจ‡เจธ เจตเจฟเฉฑเจš เจ–เจพเจธ เจธเจฎเฉฑเจ—เจฐเฉ€ เจนเฉˆเฅค
  • เจชเฉˆเจ•เฉ‡เจœ เจ‡เฉฐเจธเจŸเจพเจฒ เจนเฉˆเฅค
  • เจธเฉ‡เจตเจพ เจธเจผเฉเจฐเฉ‚ เจนเฉ‹ เจ—เจˆ เจนเฉˆเฅค

เจธเจฐเฉ‹เจค เจ†เจชเจธ เจตเจฟเฉฑเจš เจœเฉเฉœเฉ‡ เจนเฉ‹ เจธเจ•เจฆเฉ‡ เจนเจจ:

  • เจจเจฟเจฐเจญเจฐเจคเจพเจตเจพเจ‚ เจนเจจ, เจ‰เจน เจ‰เจธ เจ•เฉเจฐเจฎ เจจเฉ‚เฉฐ เจชเฉเจฐเจญเจพเจตเจฟเจค เจ•เจฐเจฆเฉ€เจ†เจ‚ เจนเจจ เจœเจฟเจธ เจตเจฟเฉฑเจš เจธเจฐเฉ‹เจค เจตเจฐเจคเฉ‡ เจœเจพเจ‚เจฆเฉ‡ เจนเจจเฅค
    เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, "เจชเจนเจฟเจฒเจพเจ‚ เจชเฉˆเจ•เฉ‡เจœ เจจเฉ‚เฉฐ เจธเจฅเจพเจชเจฟเจค เจ•เจฐเฉ‹, เจซเจฟเจฐ เจธเฉฐเจฐเจšเจจเจพ เจซเจพเจˆเจฒ เจจเฉ‚เฉฐ เจธเฉฐเจชเจพเจฆเจฟเจค เจ•เจฐเฉ‹, เจซเจฟเจฐ เจธเฉ‡เจตเจพ เจธเจผเฉเจฐเฉ‚ เจ•เจฐเฉ‹เฅค"
  • เจธเฉ‚เจšเจจเจพเจตเจพเจ‚ เจนเจจ - เจœเฉ‡เจ•เจฐ เจ•เฉ‹เจˆ เจธเจฐเฉ‹เจค เจฌเจฆเจฒ เจ—เจฟเจ† เจนเฉˆ, เจคเจพเจ‚ เจ‡เจน เจ‡เจธเจฆเฉ‡ เจ—เจพเจนเจ•เฉ€ เจตเจพเจฒเฉ‡ เจธเจฐเฉ‹เจคเจพเจ‚ เจจเฉ‚เฉฐ เจธเฉ‚เจšเจจเจพเจตเจพเจ‚ เจญเฉ‡เจœเจฆเจพ เจนเฉˆเฅค
    เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, เจœเฉ‡เจ•เจฐ เจธเฉฐเจฐเจšเจจเจพ เจซเจพเจ‡เจฒ เจฌเจฆเจฒเจฆเฉ€ เจนเฉˆ, เจคเจพเจ‚ เจคเฉเจธเฉ€เจ‚ เจธเฉ‡เจตเจพ เจจเฉ‚เฉฐ เจ†เจŸเฉ‹เจฎเฉˆเจŸเจฟเจ•เจฒเฉ€ เจฐเฉ€เจธเจŸเจพเจฐเจŸ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹เฅค

เจ‡เจธ เจคเฉ‹เจ‚ เจ‡เจฒเจพเจตเจพ, เจ•เจ เจชเฉเจคเจฒเฉ€ DSL เจตเจฟเฉฑเจš เจซเฉฐเจ•เจธเจผเจจ เจ…เจคเฉ‡ เจตเฉ‡เจฐเฉ€เจเจฌเจฒ เจนเจจ, เจจเจพเจฒ เจนเฉ€ เจ•เฉฐเจกเฉ€เจธเจผเจจเจฒ เจธเจŸเฉ‡เจŸเจฎเฉˆเจ‚เจŸเจธ เจ…เจคเฉ‡ เจšเฉ‹เจฃเจ•เจพเจฐเฅค เจ•เจˆ เจŸเฉˆเจ‚เจชเจฒเฉ‡เจŸเจฟเฉฐเจ— เจตเจฟเจงเฉ€เจ†เจ‚ เจตเฉ€ เจธเจฎเจฐเจฅเจฟเจค เจนเจจ - 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 }).
  • เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐเจพเจ‚ 'เจคเฉ‡ เจคเฉ€เจฐ เจ‡เฉฑเจ•เฉ‹ เจชเฉฑเจงเจฐ 'เจคเฉ‡ เจนเฉ‹เจฃเฉ‡ เจšเจพเจนเฉ€เจฆเฉ‡ เจนเจจ.
  • เจธเจฐเฉ‹เจค เจธเจฌเฉฐเจง เจคเฉ€เจฐ เจ‰เจนเจจเจพเจ‚ เจฆเฉ‡ เจ…เฉฑเจ—เฉ‡ เจฒเจฟเจ–เฉ‡ เจนเฉ‹เจ เจนเจจ.

pappetserver เจ‰เฉฑเจคเฉ‡ เจซเจพเจˆเจฒเจพเจ‚ เจฆเจพ เจŸเจฟเจ•เจพเจฃเจพ

เจนเฉ‹เจฐ เจตเจฟเจ†เจ–เจฟเจ† เจฒเจˆ, เจฎเฉˆเจ‚ "เจฐเฉ‚เจŸ เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐเฉ€" เจฆเจพ เจธเฉฐเจ•เจฒเจช เจชเฉ‡เจธเจผ เจ•เจฐเจพเจ‚เจ—เจพเฅค เจฐเฉ‚เจŸ เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐเฉ€ เจ‰เจน เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐเฉ€ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆ เจœเจฟเจธ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจ–เจพเจธ เจจเฉ‹เจก เจฒเจˆ เจ•เจ เจชเฉเจคเจฒเฉ€ เจธเฉฐเจฐเจšเจจเจพ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆเฅค

เจฐเฉ‚เจŸ เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐเฉ€ เจ•เจ เจชเฉเจคเจฒเฉ€ เจฆเฉ‡ เจธเฉฐเจธเจ•เจฐเจฃ เจ…เจคเฉ‡ เจตเจฐเจคเฉ‡ เจœเจพเจฃ เจตเจพเจฒเฉ‡ เจตเจพเจคเจพเจตเจฐเจฃ เจฆเฉ‡ เจ…เจงเจพเจฐ เจคเฉ‡ เจฌเจฆเจฒเจฆเฉ€ เจนเฉˆเฅค เจตเจพเจคเจพเจตเจฐเจฃ เจธเฉฐเจฐเจšเจจเจพ เจฆเฉ‡ เจธเฉเจคเฉฐเจคเจฐ เจธเฉˆเฉฑเจŸ เจนเจจ เจœเฉ‹ เจตเฉฑเจ–เจฐเฉ€เจ†เจ‚ เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐเฉ€เจ†เจ‚ เจตเจฟเฉฑเจš เจธเจŸเฉ‹เจฐ เจ•เฉ€เจคเฉ‡ เจœเจพเจ‚เจฆเฉ‡ เจนเจจเฅค เจ†เจฎ เจคเฉŒเจฐ 'เจคเฉ‡ git เจฆเฉ‡ เจจเจพเจฒ เจธเฉเจฎเฉ‡เจฒ เจตเจฟเฉฑเจš เจตเจฐเจคเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจœเจฟเจธ เจธเจฅเจฟเจคเฉ€ เจตเจฟเฉฑเจš git เจธเจผเจพเจ–เจพเจตเจพเจ‚ เจคเฉ‹เจ‚ เจตเจพเจคเจพเจตเจฐเจฃ เจฌเจฃเจพเจ‡เจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค เจ‡เจธ เจ…เจจเฉเจธเจพเจฐ, เจนเจฐเฉ‡เจ• เจจเฉ‹เจก เจ‡เฉฑเจ• เจตเจพเจคเจพเจตเจฐเจฃ เจœเจพเจ‚ เจฆเฉ‚เจœเฉ‡ เจตเจฟเฉฑเจš เจธเจฅเจฟเจค เจนเฉˆ. เจ‡เจน เจจเฉ‹เจก 'เจคเฉ‡ เจนเฉ€ เจธเฉฐเจฐเจšเจฟเจค เจ•เฉ€เจคเจพ เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆ, เจœเจพเจ‚ 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)
  • เจฎเฉเฉœ เจšเจพเจฒเฉ‚ เจ•เจฐเฉ‹ - เจธเฉ‡เจตเจพ เจจเฉ‚เฉฐ เจฎเฉเฉœ เจšเจพเจฒเฉ‚ เจ•เจฐเจจ เจฒเจˆ เจนเฉเจ•เจฎ
  • เจธเจฅเจฟเจคเฉ€ เจจเฉ‚เฉฐ - เจธเฉ‡เจตเจพ เจธเจฅเจฟเจคเฉ€ เจฆเฉ€ เจœเจพเจ‚เจš เจ•เจฐเจจ เจฒเจˆ เจ•เจฎเจพเจ‚เจก
  • เจฆเฉเจฌเจพเจฐเจพ เจธเจผเฉเจฐเฉ‚ เจ•เจฐเฉ‹ โ€” เจฆเฉฑเจธเฉ‹ เจ•เจฟ เจ•เฉ€ เจธเฉ‡เจตเจพ initscript เจฎเฉเฉœ-เจšเจพเจฒเฉ‚ เจ•เจฐเจจ เจฒเจˆ เจธเจนเจพเจ‡เจ• เจนเฉˆเฅค เจœเฉ‡ false เจ…เจคเฉ‡ เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐ เจฆเจฟเฉฑเจคเจพ เจ—เจฟเจ† เจนเฉˆ เจฎเฉเฉœ เจšเจพเจฒเฉ‚ เจ•เจฐเฉ‹ โ€” เจ‡เจธ เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐ เจฆเจพ เจฎเฉเฉฑเจฒ เจตเจฐเจคเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค เจœเฉ‡ false เจ…เจคเฉ‡ เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐ เจฎเฉเฉœ เจšเจพเจฒเฉ‚ เจ•เจฐเฉ‹ เจจเจฟเจฐเจงเจพเจฐเจค เจจเจนเฉ€เจ‚ - เจธเฉ‡เจตเจพ เจจเฉ‚เฉฐ เจฐเฉ‹เจ• เจฆเจฟเฉฑเจคเจพ เจ—เจฟเจ† เจนเฉˆ เจ…เจคเฉ‡ เจฎเฉเฉœ เจšเจพเจฒเฉ‚ เจ•เจฐเจจเจพ เจธเจผเฉเจฐเฉ‚ เจ•เจฐ เจฆเจฟเฉฑเจคเจพ เจ—เจฟเจ† เจนเฉˆ (เจชเจฐ systemd เจ•เจฎเจพเจ‚เจก เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเจพ เจนเฉˆ systemctl restart).
  • เจธเจฅเจฟเจคเฉ€ โ€” เจฆเฉฑเจธเฉ‹ เจ•เจฟ เจ•เฉ€ เจธเจฐเจตเจฟเจธ initscript เจ•เจฎเจพเจ‚เจก เจจเฉ‚เฉฐ เจธเจนเจฟเจฏเฉ‹เจ— เจฆเจฟเฉฐเจฆเฉ€ เจนเฉˆ status. เจœเฉ‡ false, เจซเจฟเจฐ เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐ เจฎเฉเฉฑเจฒ เจตเจฐเจคเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆ เจธเจฅเจฟเจคเฉ€ เจจเฉ‚เฉฐ. เจกเจฟเจซเจพเจฒเจŸ true.

exec

เจฌเจพเจนเจฐเฉ€ เจ•เจฎเจพเจ‚เจกเจพเจ‚ เจšเจฒเจพเจ‰เจ‚เจฆเจพ เจนเฉˆเฅค เจœเฉ‡เจ•เจฐ เจคเฉเจธเฉ€เจ‚ เจฎเจพเจชเจฆเฉฐเจก เจจเจฟเจฐเจงเจพเจฐเจค เจจเจนเฉ€เจ‚ เจ•เจฐเจฆเฉ‡ เจฌเจฃเจพเจ‰เจฆเจพ เจนเฉˆ, เจธเจฟเจฐเจซเจผ เจœเฉ‡เจ•เจฐ, เจœเจฆ เจคเฉฑเจ• เจœ เจคเจพเจœเจผเจ—เฉ€ เจจเจพเจฒ, เจนเจฐ เจตเจพเจฐ เจ•เจ เจชเฉเจคเจฒเฉ€ เจšเจฒเจพเจ‰เจฃ 'เจคเฉ‡ เจ•เจฎเจพเจ‚เจก เจšเจฒเจพเจˆ เจœเจพเจตเฉ‡เจ—เฉ€เฅค เจธเฉ‚เจšเจจเจพเจตเจพเจ‚ เจฆเฉ€ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจ•เจฐเจจ เจฆเฉ‡ เจฏเฉ‹เจ— - เจ‡เฉฑเจ• เจ•เจฎเจพเจ‚เจก เจšเจฒเจพเจ‰เจ‚เจฆเจพ เจนเฉˆเฅค

เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐ:

  • เจธเจฐเฉ‹เจค เจฆเจพ เจจเจพเจฎ - เจšเจฒเจพเจ‰เจฃ เจฒเจˆ เจ•เจฎเจพเจ‚เจก (เจตเจฟเจ•เจฒเจชเจฟเจ•)
  • เจนเฉเจ•เจฎ - เจšเจฒเจพเจ‰เจฃ เจฒเจˆ เจ•เจฎเจพเจ‚เจก (เจœเฉ‡ เจ‡เจน เจจเจพเจฎ เจตเจฟเฉฑเจš เจจเจนเฉ€เจ‚ เจฆเจฟเฉฑเจคเจพ เจ—เจฟเจ† เจนเฉˆ)
  • เจฎเจพเจฐเจ— โ€” เจฎเจพเจฐเจ—, เจœเจฟเจธ เจตเจฟเฉฑเจš เจเจ—เจœเจผเฉ€เจ•เจฟเจŠเจŸเฉ‡เจฌเจฒ เจซเจพเจ‡เจฒ เจฆเฉ€ เจ–เฉ‹เจœ เจ•เจฐเจจเฉ€ เจนเฉˆ
  • เจธเจฟเจฐเจซเจผ เจœเฉ‡เจ•เจฐ โ€” เจœเฉ‡เจ•เจฐ เจ‡เจธ เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐ เจตเจฟเฉฑเจš เจฆเจฟเฉฑเจคเฉ€ เจ•เจฎเจพเจ‚เจก เจœเจผเฉ€เจฐเฉ‹ เจฐเจฟเจŸเจฐเจจ เจ•เฉ‹เจก เจจเจพเจฒ เจชเฉ‚เจฐเฉ€ เจนเฉ‹ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆ, เจคเจพเจ‚ เจฎเฉเฉฑเจ– เจ•เจฎเจพเจ‚เจก เจจเฉ‚เฉฐ เจšเจฒเจพเจ‡เจ† เจœเจพเจตเฉ‡เจ—เจพเฅค
  • เจœเจฆ เจคเฉฑเจ• โ€” เจœเฉ‡เจ•เจฐ เจ‡เจธ เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐ เจตเจฟเฉฑเจš เจฆเจฟเฉฑเจคเฉ€ เจ•เจฎเจพเจ‚เจก เจ—เฉˆเจฐ-เจœเจผเฉ€เจฐเฉ‹ เจฐเจฟเจŸเจฐเจจ เจ•เฉ‹เจก เจจเจพเจฒ เจชเฉ‚เจฐเฉ€ เจนเฉ‹ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆ, เจคเจพเจ‚ เจฎเฉเฉฑเจ– เจ•เจฎเจพเจ‚เจก เจจเฉ‚เฉฐ เจšเจฒเจพเจ‡เจ† เจœเจพเจตเฉ‡เจ—เจพเฅค
  • เจฌเจฃเจพเจ‰เจฆเจพ เจนเฉˆ โ€” เจœเฉ‡เจ•เจฐ เจ‡เจธ เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐ เจตเจฟเฉฑเจš เจฆเจฟเฉฑเจคเฉ€ เจ—เจˆ เจซเจพเจˆเจฒ เจฎเฉŒเจœเฉ‚เจฆ เจจเจนเฉ€เจ‚ เจนเฉˆ, เจคเจพเจ‚ เจฎเฉเฉฑเจ– เจ•เจฎเจพเจ‚เจก เจจเฉ‚เฉฐ เจšเจฒเจพเจ‡เจ† เจœเจพเจตเฉ‡เจ—เจพ
  • เจคเจพเจœเจผเจ—เฉ€ เจจเจพเจฒ - เจœเฉ‡ true, เจคเจพเจ‚ เจ•เจฎเจพเจ‚เจก เจ•เฉ‡เจตเจฒ เจ‰เจฆเฉ‹เจ‚ เจนเฉ€ เจšเจฒเจพเจˆ เจœเจพเจตเฉ‡เจ—เฉ€ เจœเจฆเฉ‹เจ‚ เจ‡เจธ exec เจจเฉ‚เฉฐ เจนเฉ‹เจฐ เจธเจฐเฉ‹เจคเจพเจ‚ เจคเฉ‹เจ‚ เจธเฉ‚เจšเจจเจพ เจชเฉเจฐเจพเจชเจค เจนเฉเฉฐเจฆเฉ€ เจนเฉˆ
  • cwd โ€” เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐเฉ€ เจœเจฟเจธ เจคเฉ‹เจ‚ เจ•เจฎเจพเจ‚เจก เจšเจฒเจพเจ‰เจฃเฉ€ เจนเฉˆ
  • เจ‰เจชเจญเฉ‹เจ—เฉ€ เจจเฉ‚เฉฐ โ€” เจฏเฉ‚เจœเจผเจฐ เจœเจฟเจธ เจคเฉ‹เจ‚ เจ•เจฎเจพเจ‚เจก เจšเจฒเจพเจ‰เจฃเฉ€ เจนเฉˆ
  • เจฆเฉ‡เจฃ เจตเจพเจฒเฉ‡ - เจ•เจฎเจพเจ‚เจก เจจเฉ‚เฉฐ เจ•เจฟเจตเฉ‡เจ‚ เจšเจฒเจพเจ‰เจฃเจพ เจนเฉˆ:
    • posix - เจ‡เฉฑเจ• เจฌเจพเจฒ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจจเฉ‚เฉฐ เจธเจฟเจฐเจซเจผ เจฌเจฃเจพเจ‡เจ† เจ—เจฟเจ† เจนเฉˆ, เจจเจฟเจธเจผเจšเจฟเจค เจ•เจฐเจจเจพ เจฏเจ•เฉ€เจจเฉ€ เจฌเจฃเจพเจ“ เจฎเจพเจฐเจ—
    • เจธเจผเฉˆเฉฑเจฒ - เจ•เจฎเจพเจ‚เจก เจธเจผเฉˆเฉฑเจฒ เจตเจฟเฉฑเจš เจฒเจพเจ‚เจš เจ•เฉ€เจคเฉ€ เจ—เจˆ เจนเฉˆ /bin/sh, เจจเจฟเจฐเจงเจพเจฐเจค เจจเจนเฉ€เจ‚ เจ•เฉ€เจคเจพ เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆ เจฎเจพเจฐเจ—, เจคเฉเจธเฉ€เจ‚ เจ—เจฒเฉ‹เจฌเจฟเฉฐเจ—, เจชเจพเจˆเจช เจ…เจคเฉ‡ เจนเฉ‹เจฐ เจธเจผเฉˆเฉฑเจฒ เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพเจตเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹เฅค เจ†เจฎ เจคเฉŒเจฐ 'เจคเฉ‡ เจ†เจชเจฃเฉ‡ เจ†เจช เจ–เฉ‹เจœเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆ เจœเฉ‡เจ•เจฐ เจ•เฉ‹เจˆ เจตเจฟเจธเจผเฉ‡เจธเจผ เจ…เฉฑเจ–เจฐ เจนเจจ (|, ;, &&, || เจ†เจฆเจฟ)เฅค

เจ•เจฐเฉ‹เจจ

เจ•เฉเจฐเฉ‹เจจเจœเฉŒเจฌเจธ เจจเฉ‚เฉฐ เจ•เฉฐเจŸเจฐเฉ‹เจฒ เจ•เจฐเจฆเจพ เจนเฉˆเฅค

เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐ:

  • เจธเจฐเฉ‹เจค เจฆเจพ เจจเจพเจฎ - เจธเจฟเจฐเจซ เจ•เฉเจ เจ•เจฟเจธเจฎ เจฆเจพ เจชเจ›เจพเจฃเจ•เจฐเจคเจพ
  • เจ‡เจน เจฏเจ•เฉ€เจจเฉ€ เจฌเจฃเจพเจ‰เจฃ - เจคเจพเจœ เจจเฉŒเจ•เจฐเฉ€ เจฆเฉ€ เจธเจฅเจฟเจคเฉ€:
    • present - เจœเฉ‡ เจฎเฉŒเจœเฉ‚เจฆ เจจเจนเฉ€เจ‚ เจนเฉˆ เจคเจพเจ‚ เจฌเจฃเจพเจ“
    • absent - เจœเฉ‡เจ•เจฐ เจฎเฉŒเจœเฉ‚เจฆ เจนเฉˆ เจคเจพเจ‚ เจฎเจฟเจŸเจพเจ“
  • เจนเฉเจ•เจฎ - เจ•เจฟเจนเฉœเฉ€ เจ•เจฎเจพเจ‚เจก เจšเจฒเจพเจ‰เจฃเฉ€ เจนเฉˆ
  • เจตเจพเจคเจพเจตเจฐเจฃ เจจเฉ‚เฉฐ โ€” เจ•เจฟเจธ เจตเจพเจคเจพเจตเจฐเจฃ เจตเจฟเฉฑเจš เจ•เจฎเจพเจ‚เจก เจšเจฒเจพเจ‰เจฃเฉ€ เจนเฉˆ (เจตเจพเจคเจพเจตเจฐเจฃ เจตเฉ‡เจฐเฉ€เจเจฌเจฒเจพเจ‚ เจฆเฉ€ เจธเฉ‚เจšเฉ€ เจ…เจคเฉ‡ เจ‰เจนเจจเจพเจ‚ เจฆเฉ‡ เจฎเฉเฉฑเจฒ เจฆเฉเจ†เจฐเจพ =)
  • เจ‰เจชเจญเฉ‹เจ—เฉ€ เจจเฉ‚เฉฐ โ€” เจ•เจฟเจธ เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจคเฉ‹เจ‚ เจ•เจฎเจพเจ‚เจก เจšเจฒเจพเจ‰เจฃเฉ€ เจนเฉˆ
  • เจฎเจฟเฉฐเจŸ, เจ˜เฉฐเจŸเฉ‡, เจนเจซเจคเฉ‡ เจฆเจพ เจฆเจฟเจจ, เจฎเจนเฉ€เจจเฉ‡, เจฎเจนเฉ€เจจเฉ‡ เจฆเจพ เจฆเจฟเจจ - เจ•เฉเจฐเฉ‹เจจ เจจเฉ‚เฉฐ เจ•เจฆเฉ‹เจ‚ เจšเจฒเจพเจ‰เจฃเจพ เจนเฉˆเฅค เจœเฉ‡เจ•เจฐ เจ‡เจนเจจเจพเจ‚ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจ•เฉ‹เจˆ เจตเฉ€ เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพ เจจเจฟเจฐเจงเจพเจฐเจค เจจเจนเฉ€เจ‚ เจ•เฉ€เจคเฉ€ เจ—เจˆ เจนเฉˆ, เจคเจพเจ‚ เจ•เฉเจฐเฉ‹เจจเจŸเฉˆเจฌ เจตเจฟเฉฑเจš เจ‡เจธเจฆเจพ เจฎเฉเฉฑเจฒ เจนเฉ‹เจตเฉ‡เจ—เจพ *.

เจ•เจ เจชเฉเจคเจฒเฉ€ 6.0 เจตเจฟเฉฑเจš เจ•เจฐเฉ‹เจจ เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจฌเจ•เจธเฉ‡ เจคเฉ‹เจ‚ เจนเจŸเจพ เจฆเจฟเฉฑเจคเจพ เจ—เจฟเจ† เจ•เจ เจชเฉเจคเจฒเฉ€ เจธเจฐเจตเจฐ เจตเจฟเฉฑเจš, เจ‡เจธ เจฒเจˆ เจ†เจฎ เจธเจพเจˆเจŸ 'เจคเฉ‡ เจ•เฉ‹เจˆ เจฆเจธเจคเจพเจตเฉ‡เจœเจผ เจจเจนเฉ€เจ‚ เจนเจจเฅค เจชเจฐ เจ‰เจน เจฌเจ•เจธเฉ‡ เจตเจฟเฉฑเจš เจนเฉˆ เจ•เจ เจชเฉเจคเจฒเฉ€-เจเจœเฉฐเจŸ เจตเจฟเฉฑเจš, เจ‡เจธ เจฒเจˆ เจ‡เจธ เจจเฉ‚เฉฐ เจตเฉฑเจ–เจฐเฉ‡ เจคเฉŒเจฐ 'เจคเฉ‡ เจธเจฅเจพเจชเจค เจ•เจฐเจจ เจฆเฉ€ เจ•เฉ‹เจˆ เจฒเฉ‹เฉœ เจจเจนเฉ€เจ‚ เจนเฉˆเฅค เจคเฉเจธเฉ€เจ‚ เจ‡เจธเจฆเฉ‡ เจฒเจˆ เจฆเจธเจคเจพเจตเฉ‡เจœเจผ เจฆเฉ‡เจ– เจธเจ•เจฆเฉ‡ เจนเฉ‹ เจ•เจ เจชเฉเจคเจฒเฉ€ เจฆเฉ‡ เจชเฉฐเจœเจตเฉ‡เจ‚ เจธเฉฐเจธเจ•เจฐเจฃ เจฒเจˆ เจฆเจธเจคเจพเจตเฉ‡เจœเจผ เจตเจฟเฉฑเจš, เจœเจพเจ‚ 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 {}. เจฌเฉ‡เจธเจผเฉฑเจ•, เจคเฉเจธเฉ€เจ‚ เจธเฉฐเจฐเจšเจจเจพ เจฆเฉ‡ เจ‡เฉฑเจ•เฉ‹ เจœเจฟเจนเฉ‡ เจนเจฟเฉฑเจธเจฟเจ†เจ‚ เจฆเฉ€ เจจเจ•เจฒ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹, เจชเจฐ เจ†เจฎ เจคเฉŒเจฐ 'เจคเฉ‡ เจ‡เจน เจ‡เฉฑเจ• เจฎเจพเฉœเจพ เจนเฉฑเจฒ เจนเฉˆ - เจธเฉฐเจฐเจšเจจเจพ เจตเจงเจฆเฉ€ เจนเฉˆ, เจ…เจคเฉ‡ เจœเฉ‡เจ•เจฐ เจคเฉเจธเฉ€เจ‚ เจธเฉฐเจฐเจšเจจเจพ เจฆเฉ‡ เจ†เจฎ เจนเจฟเฉฑเจธเฉ‡ เจจเฉ‚เฉฐ เจฌเจฆเจฒเจฆเฉ‡ เจนเฉ‹, เจคเจพเจ‚ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ•เจˆ เจฅเจพเจตเจพเจ‚ 'เจคเฉ‡ เจ‡เฉฑเจ•เฉ‹ เจšเฉ€เจœเจผ เจจเฉ‚เฉฐ เจธเฉฐเจชเจพเจฆเจฟเจค เจ•เจฐเจจเจพ เจชเจตเฉ‡เจ—เจพเฅค เจ‰เจธเฉ‡ เจธเจฎเฉ‡เจ‚, เจ—เจฒเจคเฉ€ เจ•เจฐเจจเจพ เจ†เจธเจพเจจ เจนเฉˆ, เจ…เจคเฉ‡ เจ†เจฎ เจคเฉŒเจฐ 'เจคเฉ‡, 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,
) {
  ...
}

เจ•เจฒเจพเจธเจพเจ‚: เจ•เจฒเจพเจธเจจเจพเจฎ เจฌเจจเจพเจฎ เจ•เจฒเจพเจธ{'เจ•เจฒเจพเจธเจจเจพเจฎ':} เจธเจผเจพเจฎเจฒ เจ•เจฐเฉ‹

เจนเจฐ เจ•เจฒเจพเจธ เจ•เจฟเจธเจฎ เจฆเจพ เจ‡เฉฑเจ• เจธเจฐเฉ‹เจค เจนเฉˆ เจ•เจฒเจพเจธ. เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจ•เจฟเจธเฉ‡ เจนเฉ‹เจฐ เจ•เจฟเจธเจฎ เจฆเฉ‡ เจธเจฐเฉ‹เจค เจฆเฉ‡ เจจเจพเจฒ, เจ‰เจธเฉ‡ เจจเฉ‹เจก 'เจคเฉ‡ เจ‡เฉฑเจ•เฉ‹ เจ•เจฒเจพเจธ เจฆเฉ€เจ†เจ‚ เจฆเฉ‹ เจ‰เจฆเจพเจนเจฐเจฃเจพเจ‚ เจจเจนเฉ€เจ‚ เจนเฉ‹ เจธเจ•เจฆเฉ€เจ†เจ‚เฅค

เจœเฉ‡เจ•เจฐ เจคเฉเจธเฉ€เจ‚ เจฆเฉ‹ เจตเจพเจฐ เจ‡เฉฑเจ•เฉ‹ เจจเฉ‹เจก เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจ•เจฒเจพเจธ เจœเฉ‹เฉœเจจ เจฆเฉ€ เจ•เฉ‹เจธเจผเจฟเจธเจผ เจ•เจฐเจฆเฉ‡ เจนเฉ‹ class { 'classname':} (เจ•เฉ‹เจˆ เจซเจฐเจ• เจจเจนเฉ€เจ‚, เจตเฉฑเจ–เจฐเฉ‡ เจœเจพเจ‚ เจ‡เฉฑเจ•เฉ‹ เจœเจฟเจนเฉ‡ เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐเจพเจ‚ เจจเจพเจฒ), เจ‡เฉฑเจ• เจธเฉฐเจ•เจฒเจจ เจ—เจฒเจคเฉ€ เจนเฉ‹เจตเฉ‡เจ—เฉ€เฅค เจชเจฐ เจœเฉ‡เจ•เจฐ เจคเฉเจธเฉ€เจ‚ เจธเจฐเฉ‹เจค เจธเจผเฉˆเจฒเฉ€ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจ•เจฒเจพเจธ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹, เจคเจพเจ‚ เจคเฉเจธเฉ€เจ‚ เจคเฉเจฐเฉฐเจค เจ‡เจธเจฆเฉ‡ เจธเจพเจฐเฉ‡ เจฎเจพเจชเจฆเฉฐเจกเจพเจ‚ เจจเฉ‚เฉฐ เจฎเฉˆเจจเฉ€เจซเฉˆเจธเจŸ เจตเจฟเฉฑเจš เจธเจชเจธเจผเจŸ เจฐเฉ‚เจช เจตเจฟเฉฑเจš เจธเฉˆเฉฑเจŸ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹เฅค

เจนเจพเจฒเจพเจ‚เจ•เจฟ, เจœเฉ‡เจ•เจฐ เจคเฉเจธเฉ€เจ‚ เจตเจฐเจคเจฆเฉ‡ เจนเฉ‹ include, เจซเจฟเจฐ เจ•เจฒเจพเจธ เจจเฉ‚เฉฐ เจœเจฟเฉฐเจจเฉ€ เจตเจพเจฐ เจšเจพเจนเฉ‹ เจœเฉ‹เฉœเจฟเจ† เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆเฅค เจคเฉฑเจฅ เจ‡เจน เจนเฉˆ เจ•เจฟ include เจ‡เฉฑเจ• idempotent เจซเฉฐเจ•เจธเจผเจจ เจนเฉˆ เจœเฉ‹ เจœเจพเจ‚เจš เจ•เจฐเจฆเจพ เจนเฉˆ เจ•เจฟ เจ•เฉ€ เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐเฉ€ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจ•เจฒเจพเจธ เจธเจผเจพเจฎเจฒ เจ•เฉ€เจคเฉ€ เจ—เจˆ เจนเฉˆเฅค เจœเฉ‡เจ•เจฐ เจ•เจฒเจพเจธ เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐเฉ€ เจตเจฟเฉฑเจš เจจเจนเฉ€เจ‚ เจนเฉˆ, เจคเจพเจ‚ เจ‡เจน เจ‡เจธเจจเฉ‚เฉฐ เจœเฉ‹เฉœเจฆเจพ เจนเฉˆ, เจ…เจคเฉ‡ เจœเฉ‡เจ•เจฐ เจ‡เจน เจชเจนเจฟเจฒเจพเจ‚ เจนเฉ€ เจฎเฉŒเจœเฉ‚เจฆ เจนเฉˆ, เจคเจพเจ‚ เจ‡เจน เจ•เฉเจ เจจเจนเฉ€เจ‚ เจ•เจฐเจฆเจพเฅค เจชเจฐ เจตเจฐเจคเจฃ เจฆเฉ‡ เจฎเจพเจฎเจฒเฉ‡ เจตเจฟเฉฑเจš include เจคเฉเจธเฉ€เจ‚ เจ•เจฒเจพเจธ เจ˜เฉ‹เจธเจผเจฃเจพ เจฆเฉ‡ เจฆเฉŒเจฐเจพเจจ เจ•เจฒเจพเจธ เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐ เจธเฉˆเฉฑเจŸ เจจเจนเฉ€เจ‚ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹ - เจธเจพเจฐเฉ‡ เจฒเฉ‹เฉœเฉ€เจ‚เจฆเฉ‡ เจฎเจพเจชเจฆเฉฐเจก เจ‡เฉฑเจ• เจฌเจพเจนเจฐเฉ€ เจกเจพเจŸเจพ เจธเจฐเฉ‹เจค - Hiera เจœเจพเจ‚ ENC เจตเจฟเฉฑเจš เจธเฉˆเฉฑเจŸ เจ•เฉ€เจคเฉ‡ เจœเจพเจฃเฉ‡ เจšเจพเจนเฉ€เจฆเฉ‡ เจนเจจเฅค เจ…เจธเฉ€เจ‚ เจ…เจ—เจฒเฉ‡ เจฒเฉ‡เจ– เจตเจฟเจš เจ‰เจจเฉเจนเจพเจ‚ เจฌเจพเจฐเฉ‡ เจ—เฉฑเจฒ เจ•เจฐเจพเจ‚เจ—เฉ‡เฅค

เจชเจฐเจฟเจญเจพเจธเจผเจฟเจค เจ•เจฐเจฆเจพ เจนเฉˆ

เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจชเจฟเจ›เจฒเฉ‡ เจฌเจฒเจพเจ• เจตเจฟเฉฑเจš เจ•เจฟเจนเจพ เจ—เจฟเจ† เจธเฉ€, เจ‡เฉฑเจ•เฉ‹ เจ•เจฒเจพเจธ เจ‡เฉฑเจ• เจจเฉ‹เจก 'เจคเฉ‡ เจ‡เฉฑเจ• เจคเฉ‹เจ‚ เจตเฉฑเจง เจตเจพเจฐ เจฎเฉŒเจœเฉ‚เจฆ เจจเจนเฉ€เจ‚ เจนเฉ‹ เจธเจ•เจฆเฉ€ เจนเฉˆเฅค เจนเจพเจฒเจพเจ‚เจ•เจฟ, เจ•เฉเจ เจฎเจพเจฎเจฒเจฟเจ†เจ‚ เจตเจฟเฉฑเจš เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ‡เฉฑเจ•เฉ‹ เจจเฉ‹เจก 'เจคเฉ‡ เจตเฉฑเจ–-เจตเฉฑเจ– เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐเจพเจ‚ เจฆเฉ‡ เจจเจพเจฒ เจ•เฉ‹เจก เจฆเฉ‡ เจ‡เฉฑเจ•เฉ‹ เจฌเจฒเจพเจ• เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจ เจฆเฉ‡ เจฏเฉ‹เจ— เจนเฉ‹เจฃ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆเฅค เจฆเฉ‚เจœเฉ‡ เจธเจผเจฌเจฆเจพเจ‚ เจตเจฟเจš, เจ‡เจธเจฆเฉ€ เจ†เจชเจฃเฉ€ เจ•เจฟเจธเจฎ เจฆเฉ‡ เจธเจฐเฉ‹เจค เจฆเฉ€ เจœเจผเจฐเฉ‚เจฐเจค เจนเฉˆ.

เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, PHP เจฎเฉ‹เจกเฉ€เจŠเจฒ เจจเฉ‚เฉฐ เจธเจฅเจพเจชเจฟเจค เจ•เจฐเจจ เจฒเจˆ, เจ…เจธเฉ€เจ‚ เจ…เจตเฉ€เจŸเฉ‹ เจตเจฟเฉฑเจš เจนเฉ‡เจ เจพเจ‚ เจฆเจฟเฉฑเจคเฉ‡ เจ•เฉฐเจฎ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚:

  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 เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐเจจ เจฒเจˆ เจ‡เฉฑเจ• เจฎเฉ‹เจกเฉ€เจŠเจฒ เจนเฉ‹ เจธเจ•เจฆเจพ เจนเฉˆ, เจ†เจฆเจฟเฅค

เจฎเฉ‹เจกเฉ€เจŠเจฒ เจตเจฐเจœเจจ เจ•เฉ€เจคเฉ‡ เจ—เจ เจนเจจ, เจ…เจคเฉ‡ เจ‡เฉฑเจ• เจฆเฉ‚เจœเฉ‡ 'เจคเฉ‡ เจฎเฉ‹เจกเฉ€เจŠเจฒ เจฆเฉ€ เจจเจฟเจฐเจญเจฐเจคเจพ เจตเฉ€ เจธเจฎเจฐเจฅเจฟเจค เจนเฉˆเฅค เจฎเฉ‹เจกเฉ€เจŠเจฒ เจฆเจพ เจ‡เฉฑเจ• เจ–เฉเฉฑเจฒเจพ เจญเฉฐเจกเจพเจฐ เจนเฉˆ - เจ•เจ เจชเฉเจคเจฒเฉ€ เจซเฉ‹เจฐเจœ.

เจ•เจ เจชเฉเจคเจฒเฉ€ เจธเจฐเจตเจฐ 'เจคเฉ‡, เจฎเฉ‹เจกเฉ€เจŠเจฒ เจฐเฉ‚เจŸ เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐเฉ€ เจฆเฉ‡ เจฎเฉ‹เจกเฉ€เจŠเจฒ เจธเจฌ-เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐเฉ€ เจตเจฟเฉฑเจš เจธเจฅเจฟเจค เจนเจจเฅค เจนเจฐเฉ‡เจ• เจฎเฉ‹เจกเฉ€เจŠเจฒ เจฆเฉ‡ เจ…เฉฐเจฆเจฐ เจ‡เฉฑเจ• เจฎเจฟเจ†เจฐเฉ€ เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐเฉ€ เจธเจ•เฉ€เจฎ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆ - เจฎเฉˆเจจเฉ€เจซเฉˆเจธเจŸ, เจซเจพเจˆเจฒเจพเจ‚, เจŸเฉˆเจ‚เจชเจฒเฉ‡เจŸเจธ, lib, เจ…เจคเฉ‡ เจนเฉ‹เจฐเฅค

เจ‡เฉฑเจ• เจฎเฉ‹เจกเฉ€เจŠเจฒ เจตเจฟเฉฑเจš เจซเจพเจˆเจฒ เจฌเจฃเจคเจฐ

เจฎเฉ‹เจกเฉ€เจŠเจฒ เจฆเฉ‡ เจฐเฉ‚เจŸ เจตเจฟเฉฑเจš เจตเจฐเจฃเจจเจฏเฉ‹เจ— เจจเจพเจตเจพเจ‚ เจจเจพเจฒ เจนเฉ‡เจ  เจฒเจฟเจ–เฉ€เจ†เจ‚ เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐเฉ€เจ†เจ‚ เจนเฉ‹ เจธเจ•เจฆเฉ€เจ†เจ‚ เจนเจจ:

  • 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 เจœเจพเจ‚ key=value เจซเจพเจฐเจฎเฉˆเจŸ เจตเจฟเฉฑเจš เจฎเจฟเจ†เจฐเฉ€ เจ†เจ‰เจŸเจชเฉเฉฑเจŸ เจฒเจˆ เจœเจพเจฃเจ•เจพเจฐเฉ€ เจ†เจ‰เจŸเจชเฉเฉฑเจŸ เจ•เจฐเจจเฉ€ เจšเจพเจนเฉ€เจฆเฉ€ เจนเฉˆเฅค

เจ‡เจน เจจเจพ เจญเฉเฉฑเจฒเฉ‹ เจ•เจฟ เจคเฉฑเจฅ เจ‰เจนเจจเจพเจ‚ เจธเจพเจฐเฉ‡ เจจเฉ‹เจกเจพเจ‚ 'เจคเฉ‡ เจฒเจพเจ—เฉ‚ เจนเฉเฉฐเจฆเฉ‡ เจนเจจ เจœเฉ‹ เจชเฉŒเจชเจชเฉ‡เจŸ เจธเจฐเจตเจฐ เจฆเฉเจ†เจฐเจพ เจจเจฟเจฏเฉฐเจคเจฐเจฟเจค เจนเฉเฉฐเจฆเฉ‡ เจนเจจ เจœเจฟเจธ 'เจคเฉ‡ เจคเฉเจนเจพเจกเจพ เจฎเฉ‹เจกเฉ€เจŠเจฒ เจคเจพเจ‡เจจเจพเจค เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆเฅค เจ‡เจธ เจฒเจˆ, เจธเจ•เฉเจฐเจฟเจชเจŸ เจตเจฟเฉฑเจš, เจ‡เจน เจœเจพเจ‚เจš เจ•เจฐเจจ เจฆเจพ เจงเจฟเจ†เจจ เจฐเฉฑเจ–เฉ‹ เจ•เจฟ เจธเจฟเจธเจŸเจฎ เจตเจฟเฉฑเจš เจคเฉเจนเจพเจกเฉ‡ เจคเฉฑเจฅ เจฆเฉ‡ เจ•เฉฐเจฎ เจ•เจฐเจจ เจฒเจˆ เจœเจผเจฐเฉ‚เจฐเฉ€ เจธเจพเจฐเฉ‡ เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎ เจ…เจคเฉ‡ เจซเจพเจˆเจฒเจพเจ‚ เจนเจจเฅค

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

เจ‡เฉฑเจฅเฉ‡ เจฆเจธเจคเจพเจตเฉ‡เจœเจผ เจฆเจพ เจธเฉฐเจฌเฉฐเจงเจฟเจค เจญเจพเจ— เจนเฉˆเฅค

เจฌเจฟเจฒเจŸ-เจ‡เจจ เจตเฉ‡เจฐเฉ€เจเจฌเจฒ

เจคเฉฑเจฅเจพเจ‚ เจคเฉ‹เจ‚ เจ‡เจฒเจพเจตเจพ, เจ‡เจน เจตเฉ€ เจนเฉˆ เจ•เฉเจ เจตเฉ‡เจฐเฉ€เจเจฌเจฒ, เจ—เจฒเฉ‹เจฌเจฒ เจจเฉ‡เจฎเจธเจชเฉ‡เจธ เจตเจฟเฉฑเจš เจ‰เจชเจฒเจฌเจง เจนเฉˆเฅค

  • เจญเจฐเฉ‹เจธเฉ‡เจฏเฉ‹เจ— เจคเฉฑเจฅ โ€” เจตเฉ‡เจฐเฉ€เจเจฌเจฒ เจœเฉ‹ เจ•เจฒเจพเจ‡เฉฐเจŸ เจฆเฉ‡ เจธเจฐเจŸเฉ€เจซเจฟเจ•เฉ‡เจŸ เจคเฉ‹เจ‚ เจฒเจ เจœเจพเจ‚เจฆเฉ‡ เจนเจจ (เจ•เจฟเจ‰เจ‚เจ•เจฟ เจธเจฐเจŸเฉ€เจซเจฟเจ•เฉ‡เจŸ เจ†เจฎ เจคเฉŒเจฐ 'เจคเฉ‡ เจ‡เฉฑเจ• เจชเฉŒเจชเจชเฉ‡เจŸ เจธเจฐเจตเจฐ 'เจคเฉ‡ เจœเจพเจฐเฉ€ เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจเจœเฉฐเจŸ เจธเจฟเจฐเจซ เจ‡เจธเจฆเจพ เจธเจฐเจŸเฉ€เจซเจฟเจ•เฉ‡เจŸ เจจเจนเฉ€เจ‚ เจฒเฉˆ เจธเจ•เจฆเจพ เจ…เจคเฉ‡ เจฌเจฆเจฒ เจธเจ•เจฆเจพ เจนเฉˆ, เจ‡เจธเจฒเจˆ เจตเฉ‡เจฐเฉ€เจเจฌเจฒ "เจญเจฐเฉ‹เจธเฉ‡เจฏเฉ‹เจ—" เจนเจจ): เจธเจฐเจŸเฉ€เจซเจฟเจ•เฉ‡เจŸ เจฆเจพ เจจเจพเจฎ, เจฆเจพ เจจเจพเจฎ เจนเฉ‹เจธเจŸ เจ…เจคเฉ‡ เจกเฉ‹เจฎเฉ‡เจจ, เจธเจฐเจŸเฉ€เจซเจฟเจ•เฉ‡เจŸ เจคเฉ‹เจ‚ เจเจ•เจธเจŸเฉˆเจ‚เจธเจผเจจเฅค
  • เจธเจฐเจตเจฐ เจคเฉฑเจฅ โ€” เจธเจฐเจตเจฐ เจฌเจพเจฐเฉ‡ เจœเจพเจฃเจ•เจพเจฐเฉ€ เจจเจพเจฒ เจธเจฌเฉฐเจงเจค เจตเฉ‡เจฐเฉ€เจเจฌเจฒ โ€” เจธเฉฐเจธเจ•เจฐเจฃ, เจจเจพเจฎ, เจธเจฐเจตเจฐ IP เจชเจคเจพ, เจตเจพเจคเจพเจตเจฐเจฃเฅค
  • เจเจœเฉฐเจŸ เจคเฉฑเจฅ โ€” เจตเฉ‡เจฐเฉ€เจเจฌเจฒ เจธเจฟเฉฑเจงเฉ‡ เจ•เจ เจชเฉเจคเจฒเฉ€-เจเจœเฉฐเจŸ เจฆเฉเจ†เจฐเจพ เจธเจผเจพเจฎเจฒ เจ•เฉ€เจคเฉ‡ เจ—เจ เจนเจจ, เจจเจพ เจ•เจฟ เจซเฉˆเจ•เจŸเจฐ เจฆเฉเจ†เจฐเจพ โ€” เจธเจฐเจŸเฉ€เจซเจฟเจ•เฉ‡เจŸ เจฆเจพ เจจเจพเจฎ, เจเจœเฉฐเจŸ เจธเฉฐเจธเจ•เจฐเจฃ, เจ•เจ เจชเฉเจคเจฒเฉ€ เจธเฉฐเจธเจ•เจฐเจฃเฅค
  • เจฎเจพเจธเจŸเจฐ เจตเฉ‡เจฐเฉ€เจเจฌเจฒ - เจชเฉˆเจชเฉ‡เจŸเจฎเจพเจธเจŸเจฐ เจตเฉ‡เจฐเฉ€เจเจฌเจฒ (sic!) เจ‡เจน เจฒเจ—เจญเจ— เจ‰เจธเฉ‡ เจคเจฐเฉเจนเจพเจ‚ เจนเฉˆ เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจตเจฟเฉฑเจš เจธเจฐเจตเจฐ เจคเฉฑเจฅ, เจชเจฒเฉฑเจธ เจธเฉฐเจฐเจšเจจเจพ เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐ เจฎเฉเฉฑเจฒ เจ‰เจชเจฒเจฌเจง เจนเจจเฅค
  • เจ•เฉฐเจชเจพเจˆเจฒเจฐ เจตเฉ‡เจฐเฉ€เจเจฌเจฒ โ€” เจ•เฉฐเจชเจพเจˆเจฒเจฐ เจตเฉ‡เจฐเฉ€เจเจฌเจฒ เจœเฉ‹ เจนเจฐเฉ‡เจ• เจธเจ•เฉ‹เจช เจตเจฟเฉฑเจš เจตเฉฑเจ–เจฐเฉ‡ เจนเฉเฉฐเจฆเฉ‡ เจนเจจ: เจฎเฉŒเจœเฉ‚เจฆเจพ เจฎเฉ‹เจกเฉ€เจŠเจฒ เจฆเจพ เจจเจพเจฎ เจ…เจคเฉ‡ เจฎเฉ‹เจกเฉ€เจŠเจฒ เจฆเจพ เจจเจพเจฎ เจœเจฟเจธ เจตเจฟเฉฑเจš เจฎเฉŒเจœเฉ‚เจฆเจพ เจตเจธเจคเฉ‚ เจจเฉ‚เฉฐ เจเจ•เจธเฉˆเจธ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจธเฉ€เฅค เจ‰เจนเจจเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เฉ€เจคเฉ€ เจœเจพ เจธเจ•เจฆเฉ€ เจนเฉˆ, เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, เจ‡เจน เจœเจพเจ‚เจš เจ•เจฐเจจ เจฒเจˆ เจ•เจฟ เจคเฉเจนเจพเจกเฉ€เจ†เจ‚ เจชเฉเจฐเจพเจˆเจตเฉ‡เจŸ เจ•เจฒเจพเจธเจพเจ‚ เจฆเฉ‚เจœเฉ‡ เจฎเฉ‹เจกเจฟเจŠเจฒเจพเจ‚ เจคเฉ‹เจ‚ เจธเจฟเฉฑเจงเฉ‡ เจจเจนเฉ€เจ‚ เจตเจฐเจคเฉ€เจ†เจ‚ เจœเจพ เจฐเจนเฉ€เจ†เจ‚ เจนเจจเฅค

เจœเฉ‹เฉœ 1: เจ‡เจธ เจธเจญ เจจเฉ‚เฉฐ เจ•เจฟเจตเฉ‡เจ‚ เจšเจฒเจพเจ‰เจฃเจพ เจ…เจคเฉ‡ เจกเฉ€เจฌเฉฑเจ— เจ•เจฐเจจเจพ เจนเฉˆ?

เจฒเฉ‡เจ– เจตเจฟเฉฑเจš เจ•เจ เจชเฉเจคเจฒเฉ€ เจ•เฉ‹เจก เจฆเฉ€เจ†เจ‚ เจฌเจนเฉเจค เจธเจพเจฐเฉ€เจ†เจ‚ เจ‰เจฆเจพเจนเจฐเจฃเจพเจ‚ เจธเจจ, เจชเจฐ เจธเจพเจจเฉ‚เฉฐ เจ‡เจน เจจเจนเฉ€เจ‚ เจฆเฉฑเจธเจฟเจ† เจ•เจฟ เจ‡เจธ เจ•เฉ‹เจก เจจเฉ‚เฉฐ เจ•เจฟเจตเฉ‡เจ‚ เจšเจฒเจพเจ‰เจฃเจพ เจนเฉˆเฅค เจ–เฉˆเจฐ, เจฎเฉˆเจ‚ เจ†เจชเจฃเฉ‡ เจ†เจช เจจเฉ‚เฉฐ เจ เฉ€เจ• เจ•เจฐ เจฐเจฟเจนเจพ เจนเจพเจ‚เฅค

เจ•เจ เจชเฉเจคเจฒเฉ€ เจจเฉ‚เฉฐ เจšเจฒเจพเจ‰เจฃ เจฒเจˆ เจ‡เฉฑเจ• เจเจœเฉฐเจŸ เจ•เจพเจซเจผเฉ€ เจนเฉˆ, เจชเจฐ เจœเจผเจฟเจ†เจฆเจพเจคเจฐ เจฎเจพเจฎเจฒเจฟเจ†เจ‚ เจฒเจˆ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจธเจฐเจตเจฐ เจฆเฉ€ เจตเฉ€ เจฒเฉ‹เฉœ เจชเจตเฉ‡เจ—เฉ€เฅค

เจเจœเฉฐเจŸ

เจ˜เฉฑเจŸเฉ‹-เจ˜เฉฑเจŸ เจธเฉฐเจธเจ•เจฐเจฃ XNUMX เจคเฉ‹เจ‚, เจ•เจ เจชเฉเจคเจฒเฉ€-เจเจœเฉฐเจŸ เจชเฉˆเจ•เฉ‡เจœเจพเจ‚ เจคเฉ‹เจ‚ เจ…เจงเจฟเจ•เจพเจฐเจค Puppetlabs เจฐเจฟเจชเฉ‹เจœเจผเจŸเจฐเฉ€ เจธเจพเจฐเฉ€เจ†เจ‚ เจจเจฟเจฐเจญเจฐเจคเจพเจตเจพเจ‚ (เจฐเฉ‚เจฌเฉ€ เจ…เจคเฉ‡ เจธเฉฐเจฌเฉฐเจงเจฟเจค เจฐเจคเจจ) เจธเจผเจพเจฎเจฒ เจนเจจ, เจ‡เจธเจฒเจˆ เจ•เฉ‹เจˆ เจ‡เฉฐเจธเจŸเจพเจฒเฉ‡เจธเจผเจจ เจฎเฉเจธเจผเจ•เจฒเจพเจ‚ เจจเจนเฉ€เจ‚ เจนเจจ (เจฎเฉˆเจ‚ เจกเฉ‡เจฌเฉ€เจ…เจจ-เจ…เจงเจพเจฐเจฟเจค เจตเฉฐเจกเจพเจ‚ เจฌเจพเจฐเฉ‡ เจ—เฉฑเจฒ เจ•เจฐ เจฐเจฟเจนเจพ เจนเจพเจ‚ - เจ…เจธเฉ€เจ‚ 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.

เจธเจฐเจตเจฐ

เจฎเฉˆเจ‚ เจ‡เจธ เจฒเฉ‡เจ– เจตเจฟเฉฑเจš เจชเฉˆเจชเฉ‡เจŸเจธเจฐเจตเจฐ เจฆเฉ‡ เจชเฉ‚เจฐเฉ‡ เจธเฉˆเจŸเจ…เจช เจ…เจคเฉ‡ เจ‡เจธ เจตเจฟเฉฑเจš เจ•เฉ‹เจก เจคเฉˆเจจเจพเจค เจ•เจฐเจจ เจฌเจพเจฐเฉ‡ เจตเจฟเจšเจพเจฐ เจจเจนเฉ€เจ‚ เจ•เจฐเจพเจ‚เจ—เจพ; เจฎเฉˆเจ‚ เจธเจฟเจฐเจซ เจ‡เจน เจ•เจนเจพเจ‚เจ—เจพ เจ•เจฟ เจฌเจพเจ•เจธ เจฆเฉ‡ เจฌเจพเจนเจฐ เจธเจฐเจตเจฐ เจฆเจพ เจ‡เฉฑเจ• เจชเฉ‚เจฐเฉ€ เจคเจฐเฉเจนเจพเจ‚ เจ•เจพเจฐเจœเจธเจผเฉ€เจฒ เจธเฉฐเจธเจ•เจฐเจฃ เจนเฉˆ เจœเจฟเจธเจจเฉ‚เฉฐ เจฅเฉ‹เฉœเฉเจนเฉ‡ เจœเจฟเจนเฉ‡ เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐเจจ เจฒเจˆ เจตเจพเจงเฉ‚ เจธเฉฐเจฐเจšเจจเจพ เจฆเฉ€ เจฒเฉ‹เฉœ เจจเจนเฉ€เจ‚ เจนเฉˆ. เจจเฉ‹เจกเจธ (เจ•เจนเฉ‹, เจ‡เฉฑเจ• เจธเฉŒ เจคเฉฑเจ•). เจจเฉ‹เจกเจพเจ‚ เจฆเฉ€ เจ‡เฉฑเจ• เจตเฉฑเจกเฉ€ เจ—เจฟเจฃเจคเฉ€ เจจเฉ‚เฉฐ เจŸเจฟเจŠเจจเจฟเฉฐเจ— เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉ‹เจตเฉ‡เจ—เฉ€ - เจฎเฉ‚เจฒ เจฐเฉ‚เจช เจตเจฟเฉฑเจš, เจ•เจ เจชเฉเจคเจฒเฉ€ เจธเจฐเจตเจฐ เจšเจพเจฐ เจคเฉ‹เจ‚ เจตเฉฑเจง เจ•เจฐเจฎเจšเจพเจฐเฉ€เจ†เจ‚ เจฆเฉ€ เจธเจผเฉเจฐเฉ‚เจ†เจค เจจเจนเฉ€เจ‚ เจ•เจฐเจฆเจพ เจนเฉˆ, เจตเจงเฉ‡เจฐเฉ‡ เจชเฉเจฐเจฆเจฐเจธเจผเจจ เจฒเจˆ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ‰เจนเจจเจพเจ‚ เจฆเฉ€ เจ—เจฟเจฃเจคเฉ€ เจตเจงเจพเจ‰เจฃ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ เจ…เจคเฉ‡ เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจธเฉ€เจฎเจพเจตเจพเจ‚ เจจเฉ‚เฉฐ เจตเจงเจพเจ‰เจฃเจพ เจจเจพ เจญเฉเฉฑเจฒเฉ‹, เจจเจนเฉ€เจ‚ เจคเจพเจ‚ เจธเจฐเจตเจฐ เจœเจผเจฟเจ†เจฆเจพเจคเจฐ เจธเจฎเจพเจ‚ เจ•เฉ‚เฉœเจพ เจ‡เจ•เฉฑเจ เจพ เจ•เจฐเฉ‡เจ—เจพเฅค

เจ•เฉ‹เจก เจกเจฟเจชเจฒเจพเจ‡เจฎเฉˆเจ‚เจŸ - เจœเฉ‡เจ•เจฐ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ‡เจธเจฆเฉ€ เจœเจฒเจฆเฉ€ เจ…เจคเฉ‡ เจ†เจธเจพเจจเฉ€ เจจเจพเจฒ เจฒเฉ‹เฉœ เจนเฉˆ, เจคเจพเจ‚ เจตเฉ‡เจ–เฉ‹ (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