ืืืึทืืงืข ืืื ืึท ืงืึทื ืคืืืืขืจืืืฉืึทื ืคืึทืจืืืึทืืืื ื ืกืืกืืขื. ืขืก ืืื ืืขื ืืฆื ืฆื ืืจืขื ืืขื ืืื ืืช ืฆื ืืขืจ ืืขืืืืื ืฉืืึทื ืืื ืืืึทื ืขื ืืขื ืฉืืึทื.
ืืื ืืื ืฉืืื ืืจืืขืื ืืื Puppet ืคึฟืึทืจ ืืืืขืจ ืคืื ืฃ ืืึธืจ ืืืฆื. ืืขืจ ืืขืงืกื ืืื ืืืืกืืงืื ืึท ืืืืขืจืืขืืขืฆื ืืื ืจืืึธืจืืขืจื ืืึทืืืื ื ืคืื ืฉืืืกื ืคืื ืงืื ืคืื ืืขืจ ืืึทืึทืืืขืจ ืืึทืงืืืืขื ืืืืฉืึทื, ืืืึธืก ืืืขื ืืึธืื ืืืืื ืขืจื ืฆื ืืขืฉืืืื ื ืคึฟืึทืจืฉืืืื ืื ืขืกืึทื ืก ืคืื ืืืึทืืงืข.
ืืึทืกืืง ืืื ืคึฟืึธืจืืึทืฆืืข
ืื ืึธืคึผืขืจืืืืื ื ืกืืกืืขื ืคืื ืืืึทืืงืข ืืื ืงืืืขื ื-ืกืขืจืืืขืจ, ืืึธืืฉ ืขืก ืืืื ืฉืืืฆื ืกืขืจืืืขืจืืขืกืก ืึธืคึผืขืจืึทืฆืืข ืืื ืืืืืืขื ืคืึทื ืืงืฉืึทื ืึทืืืื.
ื ืฆืืขื ืืึธืืขื ืคืื ืึธืคึผืขืจืึทืฆืืข ืืื ืืขื ืืฆื: ืืืจื ืคืขืืืงืืึทื, ืึทืืึธื ืืขืืขืจ ืืึทืื ืฉืขื, ืงืืืืึทื ืฅ ืงืึธื ืืึทืงื ืื ืกืขืจืืืขืจ ืคึฟืึทืจ ืึท ืงืึทื ืคืืืืขืจืืืฉืึทื ืืื ืฆืืืืืื ืขืก. ืืืื ืืืจ ืืึธื ืืขืืจืืขื ืืื Ansible, ืืื ื ืืฆื ืึท ืึทื ืืขืจืฉ ืฉืืืคึผ ืืึธืืขื: ืืขืจ ืึทืืืื ืืกืืจืึทืืึธืจ ืื ืืฉืืึทืฅ ืืขื ืคึผืจืึธืฆืขืก ืคืื ืึทืคึผืืืืื ื ืื ืงืึทื ืคืืืืขืจืืืฉืึทื, ืื ืงืืืืึทื ืฅ ืืื ืืืขื ื ืืฉื ืฆืืืืืื ืขืคึผืขืก.
ืืขืฉืึทืก ื ืขืฅ ืงืึธืืื ืืงืึทืฆืืข, ืฆืืืื-ืืืขื TLS ืขื ืงืจืืคึผืฉืึทื ืืื ืืขื ืืฆื: ืืขืจ ืกืขืจืืืขืจ ืืื ืงืืืขื ื ืืึธืื ืืืืขืจ ืืืืืขื ืข ืคึผืจืืืืึทื ืฉืืืกืืขื ืืื ืงืึธืจืึทืกืคึผืึทื ืืื ื ืกืขืจืืืคืืงืึทืฅ. ืืืคึผืืงืึทืืื, ืืขืจ ืกืขืจืืืขืจ ืึทืจืืืกืืขืื ืกืขืจืืืคืืงืึทืฅ ืคึฟืึทืจ ืงืืืืึทื ืฅ, ืึธืืขืจ ืืื ืคึผืจืื ืฆืืคึผ ืขืก ืืื ืืขืืืขื ืฆื ื ืืฆื ืึท ืคืื ืืจืืืกื ืืืง CA.
ืืงืืื ืฆื ืืึทื ืืคืขืกืืึธืก
ืืื ืืืึทืืงืข ืืขืจืืื ืึธืืึธืืืข ืฆื ืื ืืืึทืืงืข ืกืขืจืืืขืจ ืคืึทืจืืื ืื ื ืึธืืื (ื ืึธืืขืก). ืื ืงืึทื ืคืืืืขืจืืืฉืึทื ืคึฟืึทืจ ืื ื ืึธืืื ืืื ืืขืฉืจืืื ืืื ืืึทื ืืคืขืกืืึธืก ืืื ืึท ืกืคึผืขืฆืืขื ืคึผืจืึธืืจืึทืืืื ื ืฉืคึผืจืึทื - Puppet DSL.
Puppet DSL ืืื ืึท ืืขืงืืึทืจืึทืืืืืข ืฉืคึผืจืึทื. ืขืก ืืืฉืจืืืื ืื ืืขืืืืื ืฉืืึทื ืคืื ืื ื ืึธืืข ืืื ืื ืคืึธืจืขื ืคืื ืืขืงืืขืจืืืฉืึทื ื ืคืื ืืืื ืจืขืกืืจืกื, ืืืฉื:
- ืืขืจ ืืขืงืข ืืืืืกืฅ ืืื ืขืก ืืื ืกืคึผืขืฆืืคืืฉ ืืื ืืึทืื.
- ืืขืจ ืคึผืขืงื ืืื ืืื ืกืืึทืืืจื.
- ืื ืืื ืกื ืืื ืกืืึทืจืืขื.
ืจืขืกืืจืกื ืงืขื ืขื ืืืื ืื ืืขืจืงืึทื ืขืงืืื:
- ืขืก ืืขื ืขื ืืืคึผืขื ืืึทื ืกืื, ืืื ืืืืจืงื ืื ืกืืจ ืืื ืืืึธืก ืจืขืกืืจืกื ืืขื ืขื ืืขื ืืฆื.
ืคึฟืึทืจ ืืืึทืฉืคึผืื, "ืขืจืฉืืขืจ ืื ืกืืึทืืืจื ืืขื ืคึผืขืงื, ืจืขืืึทืืืจื ืื ืงืึทื ืคืืืืขืจืืืฉืึทื ืืขืงืข ืืื ืึธื ืืืืื ืื ืืื ืกื." - ืขืก ืืขื ืขื ื ืึธืืืึทืคืึทืงืืืฉืึทื ื - ืืืื ืึท ืืืื ืืื ืคืืจืขื ืืขืจื, ืขืก ืกืขื ืื ื ืึธืืืึทืคืึทืงืืืฉืึทื ื ืฆื ืื ืจืขืกืืจืกื ืึทืืึธื ืืจื ืฆื ืขืก.
ืคึฟืึทืจ ืืืึทืฉืคึผืื, ืืืื ืื ืงืึทื ืคืืืืขืจืืืฉืึทื ืืขืงืข ืขื ืืขืจืื ืืขื, ืืืจ ืงืขื ืขื ืืืืืึธืืึทืืืฉ ืจืืกืืึทืจื ืื ืืื ืกื.
ืึทืืืืืืึธื ืึทืืื, ืื Puppet DSL ืืื ืคืึทื ืืงืฉืึทื ื ืืื ืืืขืจืืึทืืึทืื, ืืื ืืขืืื ื ืืื ืงืึทื ืืืฉืึทื ืึทื ืกืืืืืืึทื ืฅ ืืื ืกืขืืขืงืืึธืจืก. ืคืึทืจืฉืืื ืืขืืคึผืืึทืืื ื ืืขืงืึทื ืืืึทืื ืืขื ืขื ืืืื ืืขืฉืืืฆื - EPP ืืื ERB.
ืืืึทืืงืข ืืื ืืขืฉืจืืื ืืื ืจืืื, ืึทืืื ืคืืืข ืคืื โโืื ืงืึทื ืกืืจืึทืงืฉืึทื ื ืืื ืืขืจืืื ืขื ืืขื ืขื ืืขื ืืืขื ืคึฟืื ืืึธืจื. Ruby ืึทืืึทืื ืืืจ ืฆื ืืงืกืคึผืึทื ื ืืืึทืืงืข - ืืืืื ืงืึธืืคึผืืขืงืก ืืึธืืืง, ื ืืึทืข ืืืืคึผืก ืคืื ืจืขืกืืจืกื, ืคืึทื ืืงืฉืึทื ื.
ืืฉืขืช ืืืึทืืงืข ืืื ืคืืืกื ืืืง, ืืึทื ืึทืคืขืกืืืืฉืึทื ื ืคึฟืึทืจ ืืขืืขืจ ืกืคึผืขืฆืืคืืฉ ื ืึธืืข ืืืืฃ ืื ืกืขืจืืืขืจ ืืขื ืขื ืงืึทืืคึผืืืื ืืื ืึท ืืืขืืืืืึทืืขืจ. ืืืจืขืงืืืจื ืืื ืึท ืจืฉืืื ืคืื ืจืขืกืืจืกื ืืื ืืืืขืจ ืฉืืืืืช ื ืึธื ืงืึทืืงืืึทืืืืืื ื ืื ืืืขืจื ืคืื ืคืึทื ืืงืฉืึทื ื, ืืืขืจืืึทืืึทืื ืืื ืืงืกืคึผืึทื ืฉืึทื ืคืื ืงืึทื ืืืฉืึทื ืึทื ืกืืืืืืึทื ืฅ.
ืกืื ืืึทืงืก ืืื ืงืึธืืขืกืืืื
ืืึธ ืืขื ืขื ืกืขืงืฉืึทื ื ืคืื ืืขืจ ืืึทืึทืืืขืจ ืืึทืงืืืืขื ืืืืฉืึทื ืืืึธืก ืืืขื ืืขืืคึฟื ืืืจ ืคึฟืึทืจืฉืืืื ืื ืกืื ืืึทืงืก ืืืื ืื ืฆืืืขืฉืืขืื ืืืืฉืคืืื ืืขื ืขื ื ืืฉื ืืขื ืื:
ืกืื ืืึทืงืก ืคืื ืคืึทืจืฉืืื ืฉืคึผืจืึทื ืงืึทื ืกืืจืึทืงืฉืึทื ื. ืืืื ืกืื ืืึทืงืก. ืกืื ืืึทืงืก ืคึฟืึทืจ ืืืกืงืจืืืืื ื ื ืึธืืื.
ืืึธ ืก ืึท ืืืืฉืคึผืื ืคืื ืืื ืื ืืึทื ืืคืขืกื ืงืืงื ืืื:
# ะะพะผะผะตะฝัะฐัะธะธ ะฟะธััััั, ะบะฐะบ ะธ ะผะฝะพะณะพ ะณะดะต, ะฟะพัะปะต ัะตัััะบะธ.
#
# ะะฟะธัะฐะฝะธะต ะบะพะฝัะธะณััะฐัะธะธ ะฝะพะดั ะฝะฐัะธะฝะฐะตััั ั ะบะปััะตะฒะพะณะพ ัะปะพะฒะฐ node,
# ะทะฐ ะบะพัะพััะผ ัะปะตะดัะตั ัะตะปะตะบัะพั ะฝะพะดั โ ั
ะพััะฝะตะนะผ (ั ะดะพะผะตะฝะพะผ ะธะปะธ ะฑะตะท)
# ะธะปะธ ัะตะณัะปััะฝะพะต ะฒััะฐะถะตะฝะธะต ะดะปั ั
ะพััะฝะตะนะผะพะฒ, ะธะปะธ ะบะปััะตะฒะพะต ัะปะพะฒะพ default.
#
# ะะพัะปะต ััะพะณะพ ะฒ ัะธะณััะฝัั
ัะบะพะฑะบะฐั
ะพะฟะธััะฒะฐะตััั ัะพะฑััะฒะตะฝะฝะพ ะบะพะฝัะธะณััะฐัะธั ะฝะพะดั.
#
# ะะดะฝะฐ ะธ ัะฐ ะถะต ะฝะพะดะฐ ะผะพะถะตั ะฟะพะฟะฐััั ะฟะพะด ะฝะตัะบะพะปัะบะพ ัะตะปะตะบัะพัะพะฒ. ะัะพ ะฟัะธะพัะธัะตั
# ัะตะปะตะบัะพัะพะฒ ะฝะฐะฟะธัะฐะฝะพ ะฒ ััะฐััะต ะฟัะพ ัะธะฝัะฐะบัะธั ะพะฟะธัะฐะฝะธั ะฝะพะด.
node 'hostname', 'f.q.d.n', /regexp/ {
# ะะพะฝัะธะณััะฐัะธั ะฟะพ ัััะธ ัะฒะปัะตััั ะฟะตัะตัะธัะปะตะฝะธะตะผ ัะตััััะพะฒ ะธ ะธั
ะฟะฐัะฐะผะตััะพะฒ.
#
# ะฃ ะบะฐะถะดะพะณะพ ัะตััััะฐ ะตััั ัะธะฟ ะธ ะฝะฐะทะฒะฐะฝะธะต.
#
# ะะฝะธะผะฐะฝะธะต: ะฝะต ะผะพะถะตั ะฑััั ะดะฒัั
ัะตััััะพะฒ ะพะดะฝะพะณะพ ัะธะฟะฐ ั ะพะดะธะฝะฐะบะพะฒัะผะธ ะฝะฐะทะฒะฐะฝะธัะผะธ!
#
# ะะฟะธัะฐะฝะธะต ัะตััััะฐ ะฝะฐัะธะฝะฐะตััั ั ะตะณะพ ัะธะฟะฐ. ะขะธะฟ ะฟะธัะตััั ะฒ ะฝะธะถะฝะตะผ ัะตะณะธัััะต.
# ะัะพ ัะฐะทะฝัะต ัะธะฟั ัะตััััะพะฒ ะฝะฐะฟะธัะฐะฝะพ ะฝะธะถะต.
#
# ะะพัะปะต ัะธะฟะฐ ะฒ ัะธะณััะฝัั
ัะบะพะฑะบะฐั
ะฟะธัะตััั ะฝะฐะทะฒะฐะฝะธะต ัะตััััะฐ, ะฟะพัะพะผ ะดะฒะพะตัะพัะธะต,
# ะดะฐะปััะต ะธะดัั ะพะฟัะธะพะฝะฐะปัะฝะพะต ะฟะตัะตัะธัะปะตะฝะธะต ะฟะฐัะฐะผะตััะพะฒ ัะตััััะฐ ะธ ะธั
ะทะฝะฐัะตะฝะธะน.
# ะะฝะฐัะตะฝะธั ะฟะฐัะฐะผะตััะพะฒ ัะบะฐะทัะฒะฐัััั ัะตัะตะท ั.ะฝ. hash rocket (=>).
resource { 'title':
param1 => value1,
param2 => value2,
param3 => value3,
}
}
ืื ืืขื ืืืืฉืึทื ืืื ืฉืืจื ืืจืืืงืก ืืขื ืขื ื ืืฉื ืึท ืคืืจืืื ืื ืืืื ืคืื ืื ืืึทืฉืืึทืืคึผืขืจืืขื, ืึธืืขืจ ืขืก ืืื ืจืขืงืึทืืขื ืืื
- ืฆืืืื-ืคึผืืึทืฅ ืื ืืขื ืฅ, ืืึทืืก ืืขื ืขื ื ืืฉื ืืขื ืืฆื.
- ืืขืืจืืึทืืื ืืจืืืกืึทื ืืขื ืขื ืืคืืขืฉืืืื ืืืจื ืึท ืคึผืืึทืฅ;
- ืงืึธืืืึทืก ื ืึธื ืืขืืขืจ ืคึผืึทืจืึทืืขืืขืจ, ืึทืจืืึทื ืืขืจืขืื ื ืื ืืขืฆืืข. ืืขืืขืจ ืคึผืึทืจืึทืืขืืขืจ ืืื ืืืืฃ ืึท ืืึทืืื ืืขืจ ืฉืืจื. ืึท ืืืกื ืขื ืืื ืืขืืืื ืคึฟืึทืจ ืื ืคืึทื ืึธื ืคึผืึทืจืึทืืขืืขืจืก ืืื ืืืื ืคึผืึทืจืึทืืขืืขืจ: ืืืจ ืงืขื ืขื ืฉืจืืึทืื ืืืืฃ ืืืื ืฉืืจื ืืื ืึธื ืึท ืงืึธืืข (ื"ื.
resource { 'title': }
ะธresource { 'title': param => value }
). - ืื ืึทืจืึธืื ืืืืฃ ืื ืคึผืึทืจืึทืืขืืขืจืก ืืึธื ืืืื ืืื ืืขืจ ืืขืืืืงืขืจ ืืืจืื.
- ืจืืกืึธืจืก ืฉืืืืืช ืึทืจืึธืื ืืขื ืขื ืืขืฉืจืืื ืืื ืคืจืึธื ื ืคืื ืืื.
ืึธืจื ืคืื ืืขืงืขืก ืืืืฃ ืคึผืึทืคึผืคึผืขืืกืขืจืืืขืจ
ืคึฟืึทืจ ืืืืึทืืขืจ ืืขืจืงืืขืจืื ื, ืืื ืืืขื ืืึทืงืขื ืขื ืืขื ืืึทืืจืืฃ ืคืื "ืืืึธืจืฆื ืืืขืืืืืึทืืขืจ". ืืขืจ ืืืึธืจืฆื ืืืขืืืืืึทืืขืจ ืืื ืืขืจ ืืืขืืืืืึทืืขืจ ืืืึธืก ืึผืืื ืื ืคึผืึทืคึผืขื ืงืึทื ืคืืืืขืจืืืฉืึทื ืคึฟืึทืจ ืึท ืกืคึผืขืฆืืคืืฉ ื ืึธืืข.
ืืขืจ ืืืึธืจืฆื ืืืขืืืืืึทืืขืจ ืืืขืจืื ืืืคึผืขื ืืื ื ืืืืฃ ืื ืืืขืจืกืืข ืคืื โโืคึผืึทืคึผืขื ืืื ืื ืื ืืืืืจืึทื ืืึทื ืฅ ืืขื ืืฆื. ืื ืืืืืจืึทื ืืึทื ืฅ ืืขื ืขื ืคืจืืึท ืฉืืขืื ืคืื ืงืึทื ืคืืืืขืจืืืฉืึทื ืืืึธืก ืืขื ืขื ืกืืึธืจื ืืื ืืึทืืื ืืขืจ ืืืจืขืงืืขืจืื. ืืืืฉืึทืืืึทืื ืืขืืืืื ื ืืื ืงืึธืืืื ืึทืฆืืข ืืื ืืื, ืืื ืืืึธืก ืคืึทื ืื ืืืืืจืึทื ืืึทื ืฅ ืืขื ืขื ืืืฉืืคื ืคืื ืืื ืฆืืืืืื. ืึทืงืงืึธืจืืื ืืื, ืืขืืขืจ ื ืึธืืข ืืื ืืืื ืืื ืืืื ืึธืืขืจ ืื ืืขืจื ืกืืืืืืข. ืืึธืก ืงืขื ืืืื ืงืึทื ืคืืืืขืจื ืืืืฃ ืื ื ืึธืืข ืืื, ืึธืืขืจ ืืื ENC, ืืืึธืก ืืื ืืืขื ืจืขืื ืืืขืื ืืื ืืขืจ ืืืืึทืืขืจ ืึทืจืืืงื.
- ืืื ืื ืืจืื ืืืขืจืกืืข ("ืึทืื ืืืึทืืงืข") ืื ืืึทืืข ืืืขืืืืืึทืืขืจ ืืื ืืขืืืขื
/etc/puppet
. ืื ื ืืฆื ืคืื ืื ืืืืืจืึทื ืืึทื ืฅ ืืื ืึทืคึผืฉืึทื ืึทื - ืคึฟืึทืจ ืืืึทืฉืคึผืื, ืืืจ ืืึธื ื ืื ื ืืฆื ืืื ืืื ืื ืึทืื ืืืึทืืงืข. ืืืื ืื ืืืืืจืึทื ืืึทื ืฅ ืืขื ืขื ืืขื ืืฆื, ืืื ืืขื ืขื ืืืืฉืึทืืืึทืื ืกืืึธืจื ืืื/etc/puppet/environments
, ืืขืจ ืืืึธืจืฆื ืืืขืืืืืึทืืขืจ ืืืขื ืืืื ืื ืกืืืืืืข ืืืขืืืืืึทืืขืจ. ืืืื ืื ืืืืืจืึทื ืืึทื ืฅ ืืขื ืขื ื ืืฉื ืืขื ืืฆื, ืืขืจ ืืืึธืจืฆื ืืืขืืืืืึทืืขืจ ืืืขื ืืืื ืื ืืึทืืข ืืืขืืืืืึทืืขืจ. - ืกืืึทืจืืื ื ืคืื ืืขืจ ืคืขืจื ืืืขืจืกืืข ("ื ืืึท ืืืึทืืงืข"), ืื ื ืืฆื ืคืื ืื ืืืืืจืึทื ืืึทื ืฅ ืืขืืืืจื ืืึทื ืืึทืืึธืจื, ืืื ืื ืืึทืืข ืืืขืืืืืึทืืขืจ ืืื ืืจืืืขืจืืขืคืืจื ืฆื
/etc/puppetlabs/code
. ืึทืงืงืึธืจืืื ืืื, ืื ืืืืืจืึทื ืืึทื ืฅ ืืขื ืขื ืกืืึธืจื ืืื/etc/puppetlabs/code/environments
, ืืืึธืจืฆื ืืืขืืืืืึทืืขืจ ืืื ืื ืกืืืืืืข ืืืขืืืืืึทืืขืจ.
ืขืก ืืืื ืืืื ืึท ืกืืืืืจืขืงืืึธืจื ืืื ืืขืจ ืืืึธืจืฆื ืืืขืืืืืึทืืขืจ manifests
, ืืืึธืก ืึผืืื ืืืื ืขืจ ืึธืืขืจ ืืขืจ ืืึทื ืืคืขืกืฅ ืืืกืงืจืืืืื ื ืื ื ืึธืืื. ืืื ืืขืจืฆื, ืขืก ืืึธื ืืืื ืึท ืกืืืืืจืขืงืืึธืจื modules
, ืืืึธืก ืึผืืื ืื ืืึทืืืฉืืื. ืืื ืืืขื ืืึธืื ืืืจ ืืืึธืก ืืึทืืืฉืืื ืืขื ืขื ืึท ืืืกื ืฉืคึผืขืืขืจ. ืืื ืึทืืืฉืึทื, ืื ืึทืื ืืืึทืืงืข ืงืขื ืืืื ืืึธืื ืึท ืกืืืืืจืขืงืืึธืจื files
, ืืืึธืก ืึผืืื ืคืึทืจืฉืืื ืืขืงืขืก ืืืึธืก ืืืจ ื ืึธืืืึทืื ืฆื ืื ื ืึธืืื. ืืื ืื ื ืืึทืข ืืืึทืืงืข, ืึทืืข ืืขืงืขืก ืืขื ืขื ืืขืฉืืขืื ืืื ืืึทืืืฉืืื.
ืืึทื ืืคืขืกื ืืขืงืขืก ืืึธืื ืื ืคืึทืจืืขื ืืขืจืื ื .pp
.
ื ืคึผืึธืจ ืคืื ืงืึทืืืึทื ืืืืฉืคืืื
ืืึทืฉืจืืึทืืื ื ืคืื ืื ื ืึธืืข ืืื ืืืื ืืืืฃ ืขืก
ืืืืฃ ืื ื ืึธืืข server1.testdomain
ืึท ืืขืงืข ืืืื ืืืื ืืืฉืืคื /etc/issue
ืืื ืืื ืืึทืื Debian GNU/Linux n l
. ืืขืจ ืืขืงืข ืืืื ืืืื ืึธืื ื ืืืจื ืึท ืืึทื ืืฆืขืจ ืืื ืืจืืคึผืข root
, ืฆืืืจืื ืจืขืื ืืืื ืืืื 644
.
ืืืจ ืฉืจืืึทืื ืึท ืืึทื ืืคืขืกืืึธ:
node 'server1.testdomain' { # ะฑะปะพะบ ะบะพะฝัะธะณััะฐัะธะธ, ะพัะฝะพัััะธะนัั ะบ ะฝะพะดะต server1.testdomain
file { '/etc/issue': # ะพะฟะธััะฒะฐะตะผ ัะฐะนะป /etc/issue
ensure => present, # ััะพั ัะฐะนะป ะดะพะปะถะตะฝ ัััะตััะฒะพะฒะฐัั
content => 'Debian GNU/Linux n l', # ั ะฝะตะณะพ ะดะพะปะถะฝะพ ะฑััั ัะฐะบะพะต ัะพะดะตัะถะธะผะพะต
owner => root, # ะฟะพะปัะทะพะฒะฐัะตะปั-ะฒะปะฐะดะตะปะตั
group => root, # ะณััะฟะฟะฐ-ะฒะปะฐะดะตะปะตั
mode => '0644', # ะฟัะฐะฒะฐ ะฝะฐ ัะฐะนะป. ะะฝะธ ะทะฐะดะฐะฝั ะฒ ะฒะธะดะต ัััะพะบะธ (ะฒ ะบะฐะฒััะบะฐั
), ะฟะพัะพะผั ััะพ ะธะฝะฐัะต ัะธัะปะพ ั 0 ะฒ ะฝะฐัะฐะปะต ะฑัะดะตั ะฒะพัะฟัะธะฝััะพ ะบะฐะบ ะทะฐะฟะธัะฐะฝะฝะพะต ะฒ ะฒะพััะผะตัะธัะฝะพะน ัะธััะตะผะต, ะธ ะฒัั ะฟะพะนะดัั ะฝะต ัะฐะบ, ะบะฐะบ ะทะฐะดัะผะฐะฝะพ
}
}
ืืึทืฆืืื ืืขื ืฆืืืืฉื ืจืขืกืืจืกื ืืืืฃ ืึท ื ืึธืืข
ืืืืฃ ืื ื ืึธืืข server2.testdomain
nginx ืืืื ืืืื ืคืืืกื ืืืง, ืืจืืขืื ืืื ืึท ืคืจืืขืจ ืฆืืืขืืจืืื ืงืึทื ืคืืืืขืจืืืฉืึทื.
ืืื ืก ืฆืขืืึธืื ืื ืคึผืจืึธืืืขื:
- ืืขืจ ืคึผืขืงื ืืึทืจืฃ ืืืื ืืื ืกืืึทืืืจื
nginx
. - ืขืก ืืื ื ืืืืืง ืึทื ืื ืงืึทื ืคืืืืขืจืืืฉืึทื ืืขืงืขืก ืืขื ืขื ืงืึทืคึผืื ืคืื ืื ืกืขืจืืืขืจ.
- ืื ืกืขืจืืืืก ืืึทืจืฃ ืืืื ืคืืืกื ืืืง
nginx
. - ืืืื ืื ืงืึทื ืคืืืืขืจืืืฉืึทื ืืื ืืขืจืืืึทื ืืืงื, ืื ืืื ืกื ืืืื ืืืื ืจืืกืืึทืจืืื.
ืืืจ ืฉืจืืึทืื ืึท ืืึทื ืืคืขืกืืึธ:
node 'server2.testdomain' { # ะฑะปะพะบ ะบะพะฝัะธะณััะฐัะธะธ, ะพัะฝะพัััะธะนัั ะบ ะฝะพะดะต server2.testdomain
package { 'nginx': # ะพะฟะธััะฒะฐะตะผ ะฟะฐะบะตั nginx
ensure => installed, # ะพะฝ ะดะพะปะถะตะฝ ะฑััั ัััะฐะฝะพะฒะปะตะฝ
}
# ะััะผะฐั ัััะตะปะบะฐ (->) ะณะพะฒะพัะธั ะพ ัะพะผ, ััะพ ัะตัััั ะฝะธะถะต ะดะพะปะถะตะฝ
# ัะพะทะดะฐะฒะฐัััั ะฟะพัะปะต ัะตััััะฐ, ะพะฟะธัะฐะฝะฝะพะณะพ ะฒััะต.
# ะขะฐะบะธะต ะทะฐะฒะธัะธะผะพััะธ ััะฐะฝะทะธัะธะฒะฝั.
-> file { '/etc/nginx': # ะพะฟะธััะฒะฐะตะผ ัะฐะนะป /etc/nginx
ensure => directory, # ััะพ ะดะพะปะถะฝะฐ ะฑััั ะดะธัะตะบัะพัะธั
source => 'puppet:///modules/example/nginx-conf', # ะตั ัะพะดะตัะถะธะผะพะต ะฝัะถะฝะพ ะฑัะฐัั ั ะฟะฐะฟะฟะตั-ัะตัะฒะตัะฐ ะฟะพ ัะบะฐะทะฐะฝะฝะพะผั ะฐะดัะตัั
recurse => true, # ะบะพะฟะธัะพะฒะฐัั ัะฐะนะปั ัะตะบัััะธะฒะฝะพ
purge => true, # ะฝัะถะฝะพ ัะดะฐะปััั ะปะธัะฝะธะต ัะฐะนะปั (ัะต, ะบะพัะพััั
ะฝะตั ะฒ ะธััะพัะฝะธะบะต)
force => true, # ัะดะฐะปััั ะปะธัะฝะธะต ะดะธัะตะบัะพัะธะธ
}
# ะะพะปะฝะธััะฐั ัััะตะปะบะฐ (~>) ะณะพะฒะพัะธั ะพ ัะพะผ, ััะพ ัะตัััั ะฝะธะถะต ะดะพะปะถะตะฝ
# ะฟะพะดะฟะธัะฐัััั ะฝะฐ ะธะทะผะตะฝะตะฝะธั ัะตััััะฐ, ะพะฟะธัะฐะฝะฝะพะณะพ ะฒััะต.
# ะะพะปะฝะธััะฐั ัััะตะปะบะฐ ะฒะบะปััะฐะตั ะฒ ัะตะฑั ะฟััะผัั (->).
~> service { 'nginx': # ะพะฟะธััะฒะฐะตะผ ัะตัะฒะธั nginx
ensure => running, # ะพะฝ ะดะพะปะถะตะฝ ะฑััั ะทะฐะฟััะตะฝ
enable => true, # ะตะณะพ ะฝัะถะฝะพ ะทะฐะฟััะบะฐัั ะฐะฒัะพะผะฐัะธัะตัะบะธ ะฟัะธ ััะฐััะต ัะธััะตะผั
}
# ะะพะณะดะฐ ัะตัััั ัะธะฟะฐ service ะฟะพะปััะฐะตั ัะฒะตะดะพะผะปะตะฝะธะต,
# ัะพะพัะฒะตัััะฒัััะธะน ัะตัะฒะธั ะฟะตัะตะทะฐะฟััะบะฐะตััั.
}
ืคึฟืึทืจ ืืขื ืฆื ืึทืจืืขืื, ืืืจ ืืึทืจืคึฟื ืืขืขืจืขื ืื ืคืืืืขื ืืข ืืขืงืข ืึธืจื ืืืืฃ ืื ืืืึทืืงืข ืกืขืจืืืขืจ:
/etc/puppetlabs/code/environments/production/ # (ััะพ ะดะปั ะฝะพะฒะพะณะพ ะะฐะฟะฟะตัะฐ, ะดะปั ััะฐัะพะณะพ ะบะพัะฝะตะฒะพะน ะดะธัะตะบัะพัะธะตะน ะฑัะดะตั /etc/puppet)
โโโ manifests/
โ โโโ site.pp
โโโ modules/
โโโ example/
โโโ files/
โโโ nginx-conf/
โโโ nginx.conf
โโโ mime.types
โโโ conf.d/
โโโ some.conf
ืืืื ืืืืคึผืก
ื ืืึทื ืฅ ืจืฉืืื ืคืื ืฉืืืฆื ืืืื ืืืืคึผืก ืงืขื ืขื ืืืื ืืขืคึฟืื ืขื ืืึธ
ืืขืงืข
ืืึทื ืืืืฉืื ืืขืงืขืก, ืืืจืขืงืืขืจืื, ืกืืืืื ืงืก, ืืืืขืจ ืืื ืืึทืื ืืื ืึทืงืกืขืก ืจืขืื.
ืคึผืึทืจืึทืืขืืขืจืก:
- ืืืื ื ืึธืืขื - ืืจื ืฆื ืืขืจ ืืขืงืข (ืึทืคึผืฉืึทื ืึทื)
- ืืืขื - ืืจื ืฆื ืืขืจ ืืขืงืข (ืืืื ืขืก ืืื ื ืืฉื ืกืคึผืขืกืืคืืขื ืืื ืืขื ื ืึธืืขื)
- ืขื ืฉืืจ - ืืขืงืข ืืืคึผ:
absent
- ืืืกืืขืงื ืึท ืืขืงืขpresent
- ืขืก ืืืื ืืืื ืึท ืืขืงืข ืคืื โโืงืืื ืืืคึผ (ืืืื ืขืก ืืื ืงืืื ืืขืงืข, ืึท ืจืขืืืืขืจ ืืขืงืข ืืืขื ืืืื ืืืฉืืคื)file
- ืจืขืืืืขืจ ืืขืงืขdirectory
- ืืืขืืืืืึทืืขืจlink
- ืกืืืืื ืง
- ืฆืืคืจืืื - ืืขืงืข ืืื ืืึทืื (ืคึผืึทืกืืง ืืืืื ืคึฟืึทืจ ืจืขืืืืขืจ ืืขืงืขืก, ืงืขื ืขื ื ืื ืืืื ืืขืืืืื ื ืฆืืืึทืืขื ืืื ืืึธืงืขืจ ืึธืืขืจ ืฆืื)
- ืืึธืงืขืจ - ืึท ืืื ืง ืฆื ืืขื ืืจื ืคืื ืืืึธืก ืืืจ ืืืืื ืฆื ื ืึธืืืึทืื ืื ืืื ืืึทืื ืคืื ืืขืจ ืืขืงืข (ืงืขื ืขื ื ืื ืืืื ืืขืืืืื ื ืฆืืืึทืืขื ืืื ืฆืืคืจืืื ืึธืืขืจ ืฆืื). ืงืขื ืขื ืืืื ืกืคึผืขืกืืคืืขื ืืื ืึท URI ืืื ืึท ืกืืขืืข
puppet:
(ืืขืืึธืื ืืขืงืขืก ืคืื ืื ืืืึทืืงืข ืกืขืจืืืขืจ ืืืขื ืืืื ืืขืืืืื ื), ืืื ืืื ืื ืกืืขืืขhttp:
(ืืื ืืึธืคึฟื ืขืก ืืื ืงืืึธืจ ืืืึธืก ืืืขื ืคึผืึทืกืืจื ืืื ืืขื ืคืึทื), ืืื ืืคืืื ืืื ืื ืืืึทืืจืึทืืขfile:
ืึธืืขืจ ืืื ืึทื ืึทืืกืึธืืื ืืจื ืึธื ืึท ืกืืขืืข (ืืขืจื ืึธื ืื ืืขืงืข ืคึฟืื ืื ืืืืข FS ืืืืฃ ืื ื ืึธืืข ืืืขื ืืืื ืืขืืืืื ื) - ืฆืื - ืืื ืื ืกืืืืื ืง ืืึธื ืคืื ื (ืงืขื ืขื ื ืื ืืืื ืืขืืืืื ื ืฆืืืึทืืขื ืืื ืฆืืคืจืืื ืึธืืขืจ ืืึธืงืขืจ)
- ืืึทืืืฆืขืจ - ืืขืจ ืืึทื ืืฆืขืจ ืืืึธืก ืืึธื ืคืึทืจืืึธืื ืื ืืขืงืข
- ืืจืืคึผืข - ืื ืืจืืคึผืข ืฆื ืืืึธืก ืื ืืขืงืข ืืึธื ืืขืืขืจื
- ืืึธืืข - ืืขืงืข ืคึผืขืจืืืฉืึทื ื (ืืื ืึท ืฉืืจืืงื)
- ืจืืงืืจืก - ืื ืืืืึทืื ืจืขืงืืจืกืืืืข ืืืขืืืืืึทืืขืจ ืคึผืจืึทืกืขืกืื ื
- ืจืืื ืืงืื ื - ืื ืืืืึทืื ืืืืืืื ื ืืขืงืขืก ืืืึธืก ืืขื ืขื ื ืืฉื ืืืกืงืจืืืื ืืื ืคึผืืคึผืคึผืขื
- ืืืืึทืื - ืื ืืืืึทืื ืืืืืืื ื ืืืจืขืงืืขืจืื ืืืึธืก ืืขื ืขื ื ืืฉื ืืืกืงืจืืืื ืืื ืคึผืึทืคึผืขื
ืคึผืขืงื
ืื ืกืืึธืื ืืื ืจืืืืืื ืคึผืึทืงืึทืืืฉืึทื. ืงืขื ืขื ืฆื ืฉืขืคึผื ื ืึธืืืึทืคืึทืงืืืฉืึทื ื - ืจืืื ืกืืึทื ืื ืคึผืขืงื ืืืื ืืขืจ ืคึผืึทืจืึทืืขืืขืจ ืืื ืกืคึผืขืกืืคืืขื reinstall_on_refresh.
ืคึผืึทืจืึทืืขืืขืจืก:
- ืืืื ื ืึธืืขื - ืคึผืขืงื ื ืึธืืขื (ืึทืคึผืฉืึทื ืึทื)
- ื ืึธืืขื - ืคึผืขืงื ื ืึธืืขื (ืืืื ื ืื ืกืคึผืขืกืืคืืขื ืืื ืืขื ื ืึธืืขื)
- ืฉืคึผืืึทืืขืจ - ืคึผืขืงื ืคืึทืจืืืึทืืืขืจ ืฆื ื ืืฆื
- ืขื ืฉืืจ - ืืขืจ ืืขืืืืื ืฉืืึทื ืคืื ืื ืคึผืขืงื:
present
,installed
- ืงืืื ืืืขืจืกืืข ืืื ืกืืึทืืืจืlatest
- ืืขืฆื ืืืขืจืกืืข ืืื ืกืืึทืืืจืabsent
- ืืืืกืืขืืขืงื (apt-get remove
)purged
- ืืืืกืืขืืขืงื ืฆืืืืืขื ืืื ืงืึทื ืคืืืืขืจืืืฉืึทื ืืขืงืขืก (apt-get purge
)held
- ืคึผืขืงื ืืืขืจืกืืข ืืื ืคืืจืฉืคืืจื (apt-mark hold
)ะปัะฑะฐั ะดััะณะฐั ัััะพะบะฐ
- ืื ืกืคึผืขืกืืคืืขื ืืืขืจืกืืข ืืื ืืื ืกืืึทืืืจื
- reinstall_on_refresh โ ืืืื
true
, ืืื ื ืึธื ืงืึทืืึธืืข ืคืื โโืื ืึธื ืืึธื, ืื ืคึผืขืงื ืืืขื ืืืื ืจืืื ืกืืึทืื. ื ืืฆืืง ืคึฟืึทืจ ืืงืืจ-ืืืืืจื ืืืกืืจืืืืืฉืึทื ื, ืืื ืจืืืืืืื ื ืคึผืึทืงืึทืืืฉืึทื ืงืขื ืืืื ื ืืืืืง ืืืขื ืืฉืึทื ืืื ื ืืืืขื ืคึผืึทืจืึทืืขืืขืจืก. ืคืขืืืงืืึทืfalse
.
ืืื ืกื
ืืึทื ืืืืฉืื ืืึทืืื ืื ืืขื. ืงืขื ืขื ืฆื ืคึผืจืึธืฆืขืก ื ืึธืืืึทืคืึทืงืืืฉืึทื ื - ืจืืกืืึทืจื ืื ืืื ืกื.
ืคึผืึทืจืึทืืขืืขืจืก:
- ืืืื ื ืึธืืขื - ืกืขืจืืืืก ืฆื ืืืื ืืขืจืืื (ืึทืคึผืฉืึทื ืึทื)
- ื ืึธืืขื - ืื ืกืขืจืืืืก ืืืึธืก ืืึทืจืฃ ืืืื ืืขืจืืื (ืืืื ื ืื ืกืคึผืขืกืืคืืขื ืืื ืืขื ื ืึธืืขื)
- ืขื ืฉืืจ - ืืขืืืืื ืฉืืึทื ืคืื ืื ืืื ืกื:
running
- ืืึธื ืืฉืstopped
โ ืืื ืืื ืืคืืขืฉืืขืื
- ืืขืื - ืงืึธื ืืจืึธืืก ืื ืคืืืืงืืื ืฆื ืึธื ืืืืื ืื ืืื ืกื:
true
- ืึทืืืึธืจืื ืืื ืขื ืืืืึทืื (systemctl enable
)mask
โ ืคืืจืฉืืขืื (systemctl mask
)false
- ืึทืืืึธืจืื ืืื ืคืึทืจืงืจืืคึผืื (systemctl disable
)
- ืจืืกืืึทืจื - ืืึทืคึฟืขื ืฆื ืจืืกืืึทืจื ืื ืืื ืกื
- ืืึทืฆืขืื - ืืึทืคึฟืขื ืฆื ืงืึธื ืืจืึธืืืจื ืืื ืกื ืกืืึทืืืก
- ืืื ืจืืกืืึทืจื - ืึธื ืืืืึทืื ืฆื ืื ืกืขืจืืืืก ืื ืืืกืงืจืืคึผื ืฉืืืฆื ืจืืกืืึทืจืืื ื. ืืืื
false
ืืื ืืขืจ ืคึผืึทืจืึทืืขืืขืจ ืืื ืกืคึผืขืกืืคืืขื ืจืืกืืึทืจื - ืื ืืืขืจื ืคืื ืืขื ืคึผืึทืจืึทืืขืืขืจ ืืื ืืขื ืืฆื. ืืืืfalse
ืืื ืคึผืึทืจืึทืืขืืขืจ ืจืืกืืึทืจื ื ืื ืกืคึผืขืกืืคืืขื - ืื ืืื ืกื ืืื ืกืืึทืคึผื ืืื ืกืืึทืจืืขื ืฆื ืจืืกืืึทืจื (ืึธืืขืจ systemd ื ืืฆื ืื ืืึทืคึฟืขืsystemctl restart
). - ืืื ืกืืึทืืืก - ืึธื ืืืืึทืื ืฆื ืื ืกืขืจืืืืก ืื ืืืกืงืจืืคึผื ืฉืืืฆื ืืขื ืืึทืคึฟืขื
status
. ืืืืfalse
, ืืขืืึธืื ืืขืจ ืคึผืึทืจืึทืืขืืขืจ ืืืขืจื ืืื ืืขื ืืฆื ืืึทืฆืขืื. ืคืขืืืงืืึทืtrue
.
exec
ืืืืคื ืคืื ืืจืืืกื ืืืง ืงืึทืืึทื ืื. ืืืื ืืืจ ืืึธื ื ืื ืกืคึผืขืฆืืคืืฆืืจื ืคึผืึทืจืึทืืขืืขืจืก ืงืจืืืืฅ, ื ืืจ ืืืื, ืกืืึทืื ืึธืืขืจ ืจืขืคืจืขืฉืึธื ืื, ืืขืจ ืืึทืคึฟืขื ืืืขื ืืืื ืืืืคื ืืขืืขืจ ืืึธื ืคึผืึทืคึผืขื ืืื ืืืืคื. ืงืขื ืขื ืฆื ืคึผืจืึธืฆืขืก ื ืึธืืืึทืคืึทืงืืืฉืึทื ื - ืืืืคื ืึท ืืึทืคึฟืขื.
ืคึผืึทืจืึทืืขืืขืจืก:
- ืืืื ื ืึธืืขื - ืืึทืคึฟืขื ืฆื ืืืื ืขืงืกืึทืงืืืืึทื (ืึทืคึผืฉืึทื ืึทื)
- ืืึทืคืขื - ืื ืืึทืคึฟืขื ืฆื ืืืื ืขืงืกืึทืงืืืืึทื (ืืืื ืขืก ืืื ื ืืฉื ืกืคึผืขืกืืคืืขื ืืื ืืขื ื ืึธืืขื)
- ืืืขื - ืคึผืึทืืก ืืื ืืืึธืก ืฆื ืงืืงื ืคึฟืึทืจ ืื ืขืงืกืขืงืืืึทืืืข ืืขืงืข
- ื ืืจ ืืืื - ืืืื ืืขืจ ืืึทืคึฟืขื ืกืคึผืขืกืืคืืขื ืืื ืืขื ืคึผืึทืจืึทืืขืืขืจ ืืขืขื ืืืงื ืืื ืึท ื ืื ืฆืืจืืงืงืืืขื ืงืึธื, ืื ืืืืคึผื ืืึทืคึฟืขื ืืืขื ืืืื ืขืงืกืึทืงืืืืึทื
- ืกืืึทืื - ืืืื ืืขืจ ืืึทืคึฟืขื ืกืคึผืขืกืืคืืขื ืืื ืืขื ืคึผืึทืจืึทืืขืืขืจ ืืื ืืขืขื ืืืงื ืืื ืึท ื ืื-ื ืื ืฆืืจืืงืงืืืขื ืงืึธื, ืื ืืืืคึผื ืืึทืคึฟืขื ืืืขื ืืืื ืขืงืกืึทืงืืืืึทื
- ืงืจืืืืฅ - ืืืื ืืขืจ ืืขืงืข ืกืคึผืขืกืืคืืขื ืืื ืืขื ืคึผืึทืจืึทืืขืืขืจ ืืื ื ืืฉื ืขืงืกืืกืืืจื, ืื ืืืืคึผื ืืึทืคึฟืขื ืืืขื ืืืื ืขืงืกืึทืงืืืืึทื
- ืจืขืคืจืขืฉืึธื ืื โ ืืืื
true
, ืืขืืึธืื ืืขืจ ืืึทืคึฟืขื ืืืขื ืืืื ืืืืคื ืืืืื ืืืขื ืืขื ืขืงืกืขืง ื ืขืื ืึธื ืืึธื ืคืื ืื ืืขืจืข ืจืขืกืืจืกื - cwd - ืืืขืืืืืึทืืขืจ ืคืื ืืืึธืก ืฆื ืืืืคื ืื ืืึทืคึฟืขื
- ืืึทื ืืฆืขืจ - ืืขืจ ืืึทื ืืฆืขืจ ืคึฟืื ืืืขืืขื ืฆื ืืืืคื ืื ืืึทืคึฟืขื
- ืฉืคึผืืึทืืขืจ - ืืื ืฆื ืืืืคื ืืขื ืืึทืคึฟืขื:
- positix - ืึท ืงืื ื ืคึผืจืึธืฆืขืก ืืื ืคืฉืื ืืืฉืืคื, ืืืื ืืืืขืจ ืฆื ืกืคึผืขืฆืืคืืฆืืจื ืืืขื
- ืฉืึธื - ืืขืจ ืืึทืคึฟืขื ืืื ืืึธื ืืฉื ืืื ืื ืฉืึธื
/bin/sh
, ืงืขื ื ืืฉื ืืืื ืกืคึผืขืกืืคืืขื ืืืขื, ืืืจ ืงืขื ืขื ื ืืฆื ืืืึธืืื ื, ืคึผืืืคึผืก ืืื ืื ืืขืจืข ืฉืึธื ืคึฟืขืึดืงืืืื. ืืืืฉืึทืืืึทืื ืืืืขืงืืึทื ืืืืืึธืืึทืืืฉ ืืืื ืขืก ืืขื ืขื ืกืคึผืขืฆืืขืืข ืืืชืืืช (|
,;
,&&
,||
ืืื ืืืื ืืืืืืขืจ).
ืงืจืึทื
ืงืึธื ืืจืึธืืก ืงืจืึธื ืืืฉืึธืืก.
ืคึผืึทืจืึทืืขืืขืจืก:
- ืืืื ื ืึธืืขื - ื ืึธืจ ืึท ืืื ืคืื ืืืืขื ืืืืขื
- ืขื ืฉืืจ - ืงืจืึทืื ืืืฉืึธื ืฉืืึทื:
present
- ืฉืึทืคึฟื ืืืื ืืื ื ืืฉื ืขืงืกืืกืืืจืabsent
- ืืืกืืขืงื ืืืื ืืืืืกืฅ
- ืืึทืคืขื - ืืืึธืก ืืึทืคึฟืขื ืฆื ืืืืคื
- ืกืืืืืืข - ืืื ืืืึธืก ืกืืืืืืข ืฆื ืืืืคื ืื ืืึทืคึฟืขื (ืจืฉืืื ืคืื ืกืืืืืืข ืืืขืจืืึทืืึทืื ืืื ืืืืขืจ ืืืึทืืืขืก ืืืจื
=
) - ืืึทื ืืฆืขืจ - ืคึฟืื ืืืึธืก ืืึทื ืืฆืขืจ ืฆื ืืืืคื ืืขื ืืึทืคึฟืขื
- ืืื ืื, ืฉืึธ, ืืืึธืืขืืืง ืืึธื, ืืึธื ืึทื, ืืืืฉ ืืึธื โ ืืืขื ืฆื ืืืืคื ืงืจืื. ืืืื ืงืืื ืคืื ืื ืึทืืจืืืืืฅ ืืื ื ืืฉื ืกืคึผืขืกืืคืืขื, ืืืื ืืืขืจื ืืื ืื ืงืจืึธื ืืึทื ืืืขื ืืืื
*
.
ืืื Puppet 6.0 ืงืจืึทื ืืื ืืืื
ืืืขืื ืจืขืกืืจืกื ืืื ืึทืืืขืืืื
ืจืขืงืืืืจืขืืขื ืฅ ืคึฟืึทืจ ืืืื ืืืืื ืืจืืืงืืื
ืื ืืขืจืกื ืคึผืจืึธืกื ืืขืืช ืืืจ ืืจืขืคื ืืื ืืืคึผืืืงืึทื ืืขืงืืึทืจืึทืฆืืข. ืืขืจ ืืขืืช ืึทืงืขืจื ืืืขื ืฆืืืื ืึธืืขืจ ืืขืจ ืจืขืกืืจืกื ืคืื ืืขืจ ืืขืืืืงืขืจ ืืืคึผ ืืื ืื ืืขืืืข ื ืึธืืขื ืืขืจืฉืืึทื ืขื ืืื ืืขืจ ืืืขืืืืืึทืืขืจ.
ืืขืจืืืขืจ ืืืขื ืืื ืืืืืขืจ ืฉืจืืืื: ืืึทื ืืคืขืกืฅ ืคึฟืึทืจ ืืขืจ ืืขืืืืงืขืจ ื ืึธืืข ืืึธื ื ืืฉื ืึทื ืืืึทืืื ืจืขืกืืจืกื ืคืื ืืขืจ ืืขืืืืงืขืจ ืืืคึผ ืืื ืืขืจ ืืขืืืืงืขืจ ืืืื!
ืืื ืขืก ืืื ืึท ื ืืื ืฆื ืื ืกืืึทืืืจื ืคึผืึทืงืึทืืืฉืึทื ืืื ืื ืืขืืืข ื ืึธืืขื, ืึธืืขืจ ืืื ืคืึทืจืฉืืืขื ืข ืคึผืขืงื ืืึทื ืึทืืืฉืขืจื. ืืื ืืขื ืคืึทื, ืืืจ ืืึทืจืคึฟื ืฆื ื ืืฆื ืืขื ืคึผืึทืจืึทืืขืืขืจ name
ืฆื ืืืกืืืืื ืืขื ืืขืืช:
package { 'ruby-mysql':
ensure => installed,
name => 'mysql',
provider => 'gem',
}
package { 'python-mysql':
ensure => installed,
name => 'mysql',
provider => 'pip',
}
ืื ืืขืจืข ืืืื ืืืืคึผืก ืืึธืื ืขื ืืขื ืึธืคึผืฆืืขืก ืฆื ืืืกืืืืื ืืืคึผืืืงืืืฉืึทื - name
ั ืืื ืกื, command
ั exec, ืืื ืืืื ืืืืืืขืจ.
ืืขืืึทืคึผืึทืจืึทืืึทืืขืจืก
ืืขืืขืจ ืืืื ืืืคึผ ืืื ืขืืืขืืข ืกืคึผืขืฆืืขื ืคึผืึทืจืึทืืขืืขืจืก, ืจืึทืืึทืจืืืึทืก ืคืื ืืืึทื ื ืึทืืืจ.
ืืึทื ืฅ ืจืฉืืื ืคืื ืืขืืึท ืคึผืึทืจืึทืืขืืขืจืก
ืงืืจืฅ ืจืฉืืื:
- ืืึทืจืคื - ืืขืจ ืคึผืึทืจืึทืืขืืขืจ ืื ืืืงืืืฅ ืืืึธืก ืจืขืกืืจืกื ืืขื ืืืื ืืขืคึผืขื ืืก ืืืืฃ.
- ืคืจืืขืจ - ืืขืจ ืคึผืึทืจืึทืืขืืขืจ ืกืคึผืขืฆืืคืืฆืืจื ืืืึธืก ืจืขืกืืจืกื ืึธืคืขื ืืขื ืืืืฃ ืืขื ืืืื.
- ืึทืืึธื ืืจื - ืืขืจ ืคึผืึทืจืึทืืขืืขืจ ืกืคึผืขืฆืืคืืฆืืจื ืคืื ืืืึธืก ืจืขืกืืจืกื ืืขื ืืืื ื ืขืื ื ืึธืืืึทืคืึทืงืืืฉืึทื ื.
- ืืขืืื - ืืขืจ ืคึผืึทืจืึทืืขืืขืจ ืกืคึผืขืฆืืคืืฆืืจื ืืืึธืก ืจืขืกืืจืกื ืืึทืงืืืขื ื ืึธืืืึทืคืึทืงืืืฉืึทื ื ืคืื ืืขื ืืืื.
ืึทืืข ืคืื โโืื ืืืกืืขื ืืขืืึทืคึผืึทืจืึทืืึทืืขืจืก ืึธื ื ืขืืขื ืึธืืขืจ ืึท ืืืื ืืืื ืืื ืง ืึธืืขืจ ืึท ืืขื ืืข ืคืื โโโโืืื ืงืก ืืื ืงืืืึทืืจืึทื ืืจืึทืงืึทืฅ.
ืืื ืงืก ืฆื ืจืขืกืืจืกื
ื ืืืื ืืื ืง ืืื ืคืฉืื ืึท ืืขืจืืึธื ืขื ืคืื ืื ืืืื. ืืื ืืขื ืขื ืืขืจ ืืืืคึผื ืืขื ืืฆื ืฆื ืึธื ืืืืึทืื ืืืคึผืขื ืืึทื ืกืื. ืจืืคืขืจืื ื ืึท ื ืื-ืขืืืืกืืึทื ื ืืืื ืืืขื ืคืึทืจืฉืึทืคื ืึท ืืึทืืืื ื ืืขืืช.
ืืขืจ ืกืื ืืึทืงืก ืคืื ืื ืืื ืง ืืื ืืื ืืืื: ืืืื ืืืคึผ ืืื ืึท ืงืึทืคึผืืืึทื ืืจืืื (ืืืื ืื ืืืคึผ ื ืึธืืขื ืึผืืื ืืึธืคึผื ืงืึธืืึธื ืก, ืืขืืขืจ ืืืื ืคืื ืื ื ืึธืืขื ืฆืืืืฉื ืื ืงืึธืืึธื ืก ืืื ืงืึทืคึผืืืึทืืืืื), ืืขืืึธืื ืืขืจ ืืืื ื ืึธืืขื ืืื ืงืืืึทืืจืึทื ืืจืึทืงืึทืฅ (ืื ืคืึทื ืคืื ืื ื ืึธืืขื) ืืื ื ืืฉื ืืืืฉื!). ืขืก ืืึธื ืืืื ืงืืื ืกืคึผืืืกืึทื ืงืืืึทืืจืึทื ืืจืึทืงืึทืฅ ืืขื ืขื ืืขืฉืจืืื ืืื ื ืึธื ืื ืืืคึผ ื ืึธืืขื.
ืืืึทืฉืคึผืื:
file { '/file1': ensure => present }
file { '/file2':
ensure => directory,
before => File['/file1'],
}
file { '/file3': ensure => absent }
File['/file1'] -> File['/file3']
ืึธืคืขื ืืืงืืึทื ืืื ื ืึธืืืึทืคืึทืงืืืฉืึทื ื
ืืื ืกืืืืืื ืคืจืืขืจ, ืคึผืฉืื ืืืคึผืขื ืืึทื ืกืื ืฆืืืืฉื ืจืขืกืืจืกื ืืขื ืขื ืืจืึทื ืืืืืื. ืืืจื ืืขื ืืืขื, ืืืื ืึธืคึผืืขืืื ืืืขื ืึทืืื ื ืืืคึผืขื ืืึทื ืกืื - ืืืจ ืงืขื ืขื ืืึทืื ืกืืืงืืืง ืืืคึผืขื ืืึทื ืกืื, ืืืึธืก ืืืขื ืคืึทืจืฉืึทืคื ืึท ืืึทืืืื ื ืืขืืช.
ื ืื ืขื ืืขื ืืืคึผืขื ืืึทื ืกืื, ื ืึธืืืึทืคืึทืงืืืฉืึทื ื ืืขื ืขื ื ืืฉื ืืจืึทื ืืืืืื. ืื ืคืืืืขื ืืข ืึผืืืื ืึทืคึผืืืื ืคึฟืึทืจ ื ืึธืืืึทืคืึทืงืืืฉืึทื ื:
- ืืืื ืื ืืืื ื ืขืื ืึท ืึธื ืืึธื, ืขืก ืืื ืืขืจืืืึทื ืืืงื. ืื ืืขืจืืืึทื ืืืงื ืึทืงืฉืึทื ื ืึธืคืขื ืืขื ืืืืฃ ืื ืืืื ืืืคึผ - exec ืืืืคื ืื ืืึทืคึฟืขื, ืืื ืกื ืจืืกืืึทืจื ืื ืืื ืกื, ืคึผืขืงื ืจืืื ืกืืึทื ืื ืคึผืขืงื. ืืืื ืื ืืืื ืืื ื ืืฉื ืืืคืืื ื ืึท ืืขืจืืืึทื ืืืงื ืงืึทืืฃ, ืืึธืจื ืืฉื ืืึทืคึผืึทื ื.
- ืืขืฉืึทืก ืืืื ืืืืคื ืคืื ืคึผืึทืคึผืขื, ืื ืืืื ืืื ืืขืจืืืึทื ืืืงื ื ืื ืืขืจ ืืื ืึทืืึธื. ืืึธืก ืืื ืืขืืืขื ืืืืึทื ื ืึธืืืึทืคืึทืงืืืฉืึทื ื ืึทืจืืึทื ื ืขืืขื ืืืคึผืขื ืืึทื ืกืื ืืื ืื ืืขืคึผืขื ืืขื ืกื ืืจืึทืคืืง ืืื ื ืืฉื ืึทื ืืืึทืืื ืกืืืงืึทืื.
- ืืืื ืคึผืึทืคึผืขื ืขื ืืขืจืื ืืขื ืื ืฉืืึทื ืคืื ืึท ืืืื, ืื ืืืื ืกืขื ืื ื ืึธืืืึทืคืึทืงืืืฉืึทื ื ืฆื ืึทืืข ืจืขืกืืจืกื ืึทืืึธื ืืจื ืฆื ืขืก.
- ืืืื ืึท ืืืื ืืื ืืขืจืืืึทื ืืืงื, ืขืก ืกืขื ืื ื ืึธืืืึทืคืึทืงืืืฉืึทื ื ืฆื ืึทืืข ืจืขืกืืจืกื ืึทืืึธื ืืจื ืฆื ืขืก.
ืืึทื ืืืื ื ืื ืกืคึผืขืกืืคืืขื ืคึผืึทืจืึทืืขืืขืจืก
ืืื ืึท ืืขืจืฉื, ืืืื ืขืืืขืืข ืืืื ืคึผืึทืจืึทืืขืืขืจ ืืื ื ืืฉื ืืึธืื ืึท ืคืขืืืงืืึทื ืืืขืจื ืืื ืืขื ืคึผืึทืจืึทืืขืืขืจ ืืื ื ืืฉื ืกืคึผืขืกืืคืืขื ืืื ืื ืืึทืฉืืึทืืคึผืขืจืืขื, ืื ืคึผืึทืคึผืขื ืืืขื ื ืืฉื ืืืืฉื ืืขื ืคืึทืจืืึธื ืคึฟืึทืจ ืื ืงืึธืจืึทืกืคึผืึทื ืืื ื ืืืื ืืืืฃ ืื ื ืึธืืข. ืคึฟืึทืจ ืืืึทืฉืคึผืื, ืืืื ืึท ืืืื ืคืื ืืืคึผ ืืขืงืข ืคึผืึทืจืึทืืขืืขืจ ื ืื ืกืคึผืขืกืึทืคืืื owner
, ืืขืืึธืื ืคึผืึทืคึผืขื ืืืขื ื ืืฉื ืืืืฉื ืื ืืึทืืืฆืขืจ ืคืื ืื ืงืึธืจืึทืกืคึผืึทื ืืื ื ืืขืงืข.
ืืงืืื ืฆื ืงืืืกื, ืืืขืจืืึทืืึทืื ืืื ืืื
ืจืขืื ืืืจ ืืึธืื ืขืืืขืืข ื ืึธืืื ืืืึธืก ืืึธืื ืื ืืขืืืข ืืืื ืคืื ืื ืงืึทื ืคืืืืขืจืืืฉืึทื, ืึธืืขืจ ืขืก ืืขื ืขื ืืืื ืืืคืขืจืึทื ืกืื - ืึทื ืืขืจืฉ ืืืจ ืงืขื ืืึทืฉืจืืึทืื ืขืก ืึทืืข ืืื ืืืื ืืืึธืง node {}
. ืคืื ืงืืจืก, ืืืจ ืงืขื ืขื ืคืฉืื ื ืึธืืืึทืื ืืืืขื ืืงืึทื ืคึผืึทืจืฅ ืคืื ืื ืงืึทื ืคืืืืขืจืืืฉืึทื, ืึธืืขืจ ืืื ืึทืืืขืืืื, ืืึธืก ืืื ืึท ืฉืืขืื ืืืืืื ื - ืื ืงืึทื ืคืืืืขืจืืืฉืึทื ืืืืงืกื, ืืื ืืืื ืืืจ ืืืืฉื ืื ืึทืืืขืืืื ืข ืืืื ืคืื ืื ืงืึทื ืคืืืืขืจืืืฉืึทื, ืืืจ ืืืขื ืืึธืื ืฆื ืจืขืืึทืืืจื ืื ืืขืืืข ืืึทื ืืื ืคืืืข ืขืจืืขืจ. ืืื ืืขืจ ืืขืืืืงืขืจ ืฆืืื, ืขืก ืืื ืืจืื ื ืฆื ืืึทืื ืึท ืืจืืึทื, ืืื ืืื ืึทืืืขืืืื, ืื ืืจืื (ืืึธื ื ืื ืืืืขืจืืืจื ืืื) ืคึผืจืื ืฆืืคึผ ืืื ืื ืืืขื ืืึทื ืคึฟืึทืจ ืึท ืกืืื.
ืฆื ืกืึธืืืืข ืืขื ืคึผืจืึธืืืขื ืขืก ืืื ืึทืืึท ืึท ืคึผืืึทื ืืื ืงืืึทืก.
ืงืืืกื
ืงืืื ืืึทืจืฃ ืืขื ืืึทืฉืจืืืื ืืขื ืงืืึทืก. ืื ืืึทืฉืจืืึทืืื ื ืืื ืืื ื ืืฉื ืืืืื ืงืืื ืจืขืกืืจืกื ืขืจืืขืฅ. ืืขืจ ืงืืึทืก ืืื ืืืกืงืจืืืื ืืื ืืึทื ืึทืคืขืกืืืืฉืึทื ื:
# ะะฟะธัะฐะฝะธะต ะบะปะฐััะฐ ะฝะฐัะธะฝะฐะตััั ั ะบะปััะตะฒะพะณะพ ัะปะพะฒะฐ class ะธ ะตะณะพ ะฝะฐะทะฒะฐะฝะธั.
# ะะฐะปััะต ะธะดัั ัะตะปะพ ะบะปะฐััะฐ ะฒ ัะธะณััะฝัั
ัะบะพะฑะบะฐั
.
class example_class {
...
}
ื ืึธื ืืขื, ืื ืงืืึทืก ืงืขื ืขื ืืืื ืืขืืืืื ื:
# ะฟะตัะฒัะน ะฒะฐัะธะฐะฝั ะธัะฟะพะปัะทะพะฒะฐะฝะธั โ ะฒ ััะธะปะต ัะตััััะฐ ั ัะธะฟะพะผ class
class { 'example_class': }
# ะฒัะพัะพะน ะฒะฐัะธะฐะฝั ะธัะฟะพะปัะทะพะฒะฐะฝะธั โ ั ะฟะพะผะพััั ััะฝะบัะธะธ include
include example_class
# ะฟัะพ ะพัะปะธัะธะต ััะธั
ะดะฒัั
ะฒะฐัะธะฐะฝัะพะฒ ะฑัะดะตั ัะฐััะบะฐะทะฐะฝะพ ะดะฐะปััะต
ืึท ืืืืฉืคึผืื ืคืื ืื ืคืจืืขืจืืืงืข ืึทืจืืขื - ืืึธืื ืืื ืื ืืึทื ืื ืื ืกืืึทืืืจืื ื ืืื ืงืึทื ืคืืืืขืจืืืฉืึทื ืคืื nginx ืืื ืึท ืงืืึทืก:
class nginx_example {
package { 'nginx':
ensure => installed,
}
-> file { '/etc/nginx':
ensure => directory,
source => 'puppet:///modules/example/nginx-conf',
recure => true,
purge => true,
force => true,
}
~> service { 'nginx':
ensure => running,
enable => true,
}
}
node 'server2.testdomain' {
include nginx_example
}
ืืืขืจืืึทืืึทืื
ืืขืจ ืงืืึทืก ืคืื ืื ืคืจืืขืจืืืงืข ืืืึทืฉืคึผืื ืืื ื ืืฉื ืคืืขืงืกืึทืืึทื ืืื ืึทืืข ืืืืึทื ืขืก ืฉืืขื ืืืง ืืจืขื ืื ืื ืืขืืืข nginx ืงืึทื ืคืืืืขืจืืืฉืึทื. ืืึธืืืจ ืืึทืื ืืขื ืืืขื ืฆื ืื ืงืึทื ืคืืืืขืจืืืฉืึทื ืืืึทืืขืืืืืง, ืืื ืืขื ืงืืึทืก ืงืขื ืขื ืืืื ืืขืืืืื ื ืฆื ืื ืกืืึทืืืจื nginx ืืื ืงืืื ืงืึทื ืคืืืืขืจืืืฉืึทื.
ืขืก ืงืขื ืขื ืืืื ืืขืืื
ืืืืื ื: ืืืขืจืืึทืืึทืื ืืื ืืืึทืืงืข ืืขื ืขื ืืืืืืึทืืึทื!
ืืื ืืขืจืฆื, ืึท ืืืึทืืขืืืืืง ืงืขื ืขื ืืืื ืึทืงืกืขืกื ืืืืื ื ืึธื ืขืก ืืื ืืขืืืขื ืืขืจืงืืขืจื, ืึทื ืืขืจืฉ ืื ืืืขืจื ืคืื ืื ืืืึทืืขืืืืืง ืืืขื ืืืื undef
.
ืืืึทืฉืคึผืื ืคืื ืืจืืขืื ืืื ืืืขืจืืึทืืึทืื:
# ัะพะทะดะฐะฝะธะต ะฟะตัะตะผะตะฝะฝัั
$variable = 'value'
$var2 = 1
$var3 = true
$var4 = undef
# ะธัะฟะพะปัะทะพะฒะฐะฝะธะต ะฟะตัะตะผะตะฝะฝัั
$var5 = $var6
file { '/tmp/text': content => $variable }
# ะธะฝัะตัะฟะพะปััะธั ะฟะตัะตะผะตะฝะฝัั
โ ัะฐัะบัััะธะต ะทะฝะฐัะตะฝะธั ะฟะตัะตะผะตะฝะฝัั
ะฒ ัััะพะบะฐั
. ะ ะฐะฑะพัะฐะตั ัะพะปัะบะพ ะฒ ะดะฒะพะนะฝัั
ะบะฐะฒััะบะฐั
!
$var6 = "Variable with name variable has value ${variable}"
ืืืึทืืงืข ืืื ื ืึธืืขื ืกืคึผืืืกืึทื, ืืื ืื ืืืขืจืืึทืืึทืื, ืึทืงืึธืจืืื ืืื, ืืึธืื ืฉืื ืคืื ืืืืืึทืืืืืื: ื ืืืขืจืืึทืืึทื ืืื ืื ืืขืืืข ื ืึธืืขื ืงืขื ืขื ืืืื ืืืคืืื ื ืืื ืคืึทืจืฉืืืขื ืข ื ืึทืืขืกืคึผืึทืกืขืก. ืืืขื ืกืึธืืืืข ืื ืืืขืจื ืคืื ืึท ืืืขืจืืึทืืึทื, ืื ืืืขืจืืึทืืึทื ืืื ืืขืืืื ืืื ืื ืงืจืึทื ื ื ืึทืืขืกืคึผืึทืกืข, ืืขืืึธืื ืืื ืื ืขื ืงืืึธืืืื ื ื ืึทืืขืกืคึผืึทืกืข, ืืื ืึทืืื ืืืืฃ.
ืืืืฉืคืืื ืคืื ื ืึธืืขื ืคึผืืึทืฅ:
- ืืืืืืืข - ืืืขืจืืึทืืึทืื ืึทืจืืืก ืื ืงืืึทืก ืึธืืขืจ ื ืึธืืข ืืึทืฉืจืืึทืืื ื ืืืื ืืึธืจื;
- ื ืึธืืข ื ืึทืืขืกืคึผืึทืกืข ืืื ืื ื ืึธืืข ืืึทืฉืจืืึทืืื ื;
- ืงืืึทืก ื ืึทืืขืกืคึผืึทืกืข ืืื ืื ืงืืึทืก ืืึทืฉืจืืึทืืื ื.
ืฆื ืืืกืืืืื ืึทืืืืืืืึทืื ืืืขื ืึทืงืกืขืกืื ื ืึท ืืืึทืืขืืืืืง, ืืืจ ืงืขื ืขื ืกืคึผืขืฆืืคืืฆืืจื ืื ื ืึทืืขืกืคึผืึทืกืข ืืื ืื ืืืึทืืขืืืืืง ื ืึธืืขื:
# ะฟะตัะตะผะตะฝะฝะฐั ะฑะตะท ะฟัะพัััะฐะฝััะฒะฐ ะธะผัะฝ
$var
# ะฟะตัะตะผะตะฝะฝะฐั ะฒ ะณะปะพะฑะฐะปัะฝะพะผ ะฟัะพัััะฐะฝััะฒะต ะธะผัะฝ
$::var
# ะฟะตัะตะผะตะฝะฝะฐั ะฒ ะฟัะพัััะฐะฝััะฒะต ะธะผัะฝ ะบะปะฐััะฐ
$classname::var
$::classname::var
ืืึธืืืจ ืฉืืืืขื ืึทื ืืขืจ ืืจื ืฆื ืื nginx ืงืึทื ืคืืืืขืจืืืฉืึทื ืืืื ืืื ืื ืืืึทืืขืืืืืง $nginx_conf_source
. ืืขืจื ืึธื ืื ืงืืึทืก ืืืขื ืงืืงื ืืื ืืึธืก:
class nginx_example {
package { 'nginx':
ensure => installed,
}
-> file { '/etc/nginx':
ensure => directory,
source => $nginx_conf_source, # ะทะดะตัั ะธัะฟะพะปัะทัะตะผ ะฟะตัะตะผะตะฝะฝัั ะฒะผะตััะพ ัะธะบัะธัะพะฒะฐะฝะฝะพะน ัััะพะบะธ
recure => true,
purge => true,
force => true,
}
~> service { 'nginx':
ensure => running,
enable => true,
}
}
node 'server2.testdomain' {
$nginx_conf_source = 'puppet:///modules/example/nginx-conf'
include nginx_example
}
ืึธืืขืจ, ืืขืจ ืืขืืขืื ืืืึทืฉืคึผืื ืืื ืฉืืขืื ืืืืึทื ืขืก ืืื ืขืืืขืืข "ืกืื ืืืืกื" ืึทื ืขืจืืขืฅ ืืื ืื ืงืืึทืก ืืื ืืขื ืืฆื ืึท ืืืึทืืขืืืืืง ืืื ืึทืืึท ืืื ืึทืืึท ืึท ื ืึธืืขื. ืขืก ืืื ืคืื ืืขืจ ืจืืืืืง ืฆื ืืึทืื ืืขื ืืืืกื ืึทืืืขืืืื - ืงืืืกื ืงืขื ืขื ืืึธืื ืคึผืึทืจืึทืืขืืขืจืก.
ืงืืึทืก ืคึผืึทืจืึทืืขืืขืจืก ืืขื ืขื ืืืขืจืืึทืืึทืื ืืื ืื ืงืืึทืก ื ืึทืืขืกืคึผืึทืกืข, ืืื ืืขื ืขื ืกืคึผืขืกืืคืืขื ืืื ืื ืงืืึทืก ืืขืืขืจ ืืื ืงืขื ืขื ืืืื ืืขืืืืื ื ืืื ืจืขืืืืขืจ ืืืขืจืืึทืืึทืื ืืื ืื ืงืืึทืก ืืืฃ. ืคึผืึทืจืึทืืขืืขืจ ืืืึทืืืขืก ืืขื ืขื ืกืคึผืขืกืืคืืขื ืืืขื ื ืืฆื ืื ืงืืึทืก ืืื ืื ืืึทื ืึทืคืขืกืืืืฉืึทื.
ืืขืจ ืคึผืึทืจืึทืืขืืขืจ ืงืขื ืขื ืืืื ืืึทืฉืืืื ืฆื ืึท ืคืขืืืงืืึทื ืืืขืจื. ืืืื ืึท ืคึผืึทืจืึทืืขืืขืจ ืืื ื ืืฉื ืึท ืคืขืืืงืืึทื ืืืขืจื ืืื ืื ืืืขืจื ืืื ื ืืฉื ืืึทืฉืืืื ืืืขื ืืขืืืืื ื, ืขืก ืืืขื ืคืึทืจืฉืึทืคื ืึท ืืึทืืืื ื ืืขืืช.
ืืึธืืืจ ืคึผืึทืจืึทืืขืืขืจืืืืจื ืื ืงืืึทืก ืคึฟืื ืืขื ืืืืฉืคึผืื ืืืืื ืืื ืืืืื ืฆืืืื ืคึผืึทืจืึทืืขืืขืจืก: ืืขืจ ืขืจืฉืืขืจ, ืคืืจืืื ืื, ืืื ืืขืจ ืืจื ืฆื ืื ืงืึทื ืคืืืืขืจืืืฉืึทื, ืืื ืื ืจืืข, ืึทืคึผืฉืึทื ืึทื, ืืื ืื ื ืึธืืขื ืคืื ืื ืคึผืขืงื ืืื nginx (ืืื ืืขืืืึทื, ืคึฟืึทืจ ืืืึทืฉืคึผืื, ืขืก ืืขื ืขื ืคึผืึทืงืึทืืืฉืึทื. nginx
, nginx-light
, nginx-full
).
# ะฟะตัะตะผะตะฝะฝัะต ะพะฟะธััะฒะฐัััั ััะฐะทั ะฟะพัะปะต ะธะผะตะฝะธ ะบะปะฐััะฐ ะฒ ะบััะณะปัั
ัะบะพะฑะบะฐั
class nginx_example (
$conf_source,
$package_name = 'nginx-light', # ะฟะฐัะฐะผะตัั ัะพ ะทะฝะฐัะตะฝะธะตะผ ะฟะพ ัะผะพะปัะฐะฝะธั
) {
package { $package_name:
ensure => installed,
}
-> file { '/etc/nginx':
ensure => directory,
source => $conf_source,
recurse => true,
purge => true,
force => true,
}
~> service { 'nginx':
ensure => running,
enable => true,
}
}
node 'server2.testdomain' {
# ะตัะปะธ ะผั ั
ะพัะธะผ ะทะฐะดะฐัั ะฟะฐัะฐะผะตััั ะบะปะฐััะฐ, ััะฝะบัะธั include ะฝะต ะฟะพะดะพะนะดัั* โ ะฝัะถะฝะพ ะธัะฟะพะปัะทะพะฒะฐัั resource-style declaration
# *ะฝะฐ ัะฐะผะพะผ ะดะตะปะต ะฟะพะดะพะนะดัั, ะฝะพ ะฟัะพ ััะพ ัะฐััะบะฐะถั ะฒ ัะปะตะดัััะตะน ัะตัะธะธ. ะะปััะตะฒะพะต ัะปะพะฒะพ "Hiera".
class { 'nginx_example':
conf_source => 'puppet:///modules/example/nginx-conf', # ะทะฐะดะฐัะผ ะฟะฐัะฐะผะตััั ะบะปะฐััะฐ ัะพัะฝะพ ัะฐะบ ะถะต, ะบะฐะบ ะฟะฐัะฐะผะตััั ะดะปั ะดััะณะธั
ัะตััััะพะฒ
}
}
ืืื Puppet, ืืืขืจืืึทืืึทืื ืืขื ืขื ืืืืคึผื. ืขืกื
ืืขืจ ืืืคึผ ืืื ืืขืฉืจืืื ืืืืื ืืืืืขืจ ืื ืคึผืึทืจืึทืืขืืขืจ ื ืึธืืขื:
class example (
String $param1,
Integer $param2,
Array $param3,
Hash $param4,
Hash[String, String] $param5,
) {
...
}
ืงืืืกื: ืึทืจืืึทื ื ืขืืขื ืงืืึทืกื ืึทืืข ืืืก ืงืืึทืก {'ืงืืืกื ืึทืืข':}
ืืขืืขืจ ืงืืึทืก ืืื ืึท ืืืื ืคืื ืืืคึผ ืงืืึทืก. ืืื ืืื ืงืืื ืื ืืขืจืข ืืืคึผ ืคืื ืืืื, ืขืก ืงืขื ืขื ื ืื ืืืื ืฆืืืื ืื ืกืืึทื ืกืื ืคืื ืืขืจ ืืขืืืืงืขืจ ืงืืึทืก ืืืืฃ ืืขืจ ืืขืืืืงืขืจ ื ืึธืืข.
ืืืื ืืืจ ืคึผืจืืืืจื ืฆื ืืืืื ืึท ืงืืึทืก ืฆื ืืขืจ ืืขืืืืงืขืจ ื ืึธืืข ืฆืืืื ืืึธื ื ืืฆื class { 'classname':}
(ืงืืื ืืืืืง, ืืื ืคืึทืจืฉืืืขื ืข ืึธืืขืจ ืืืืขื ืืงืึทื ืคึผืึทืจืึทืืขืืขืจืก), ืขืก ืืืขื ืืืื ืึท ืืึทืืืื ื ืืขืืช. ืืืขืจ ืืืื ืืืจ ื ืืฆื ืึท ืงืืึทืก ืืื ืื ืืืื ื ืืกื, ืืืจ ืงืขื ืขื ืืืืื ืฉืืขืื ืึทืืข ืืืึทื ืคึผืึทืจืึทืืขืืขืจืก ืืื ืื ืืึทืฉืืืื.
ืึธืืขืจ, ืืืื ืืืจ ื ืืฆื include
, ืืขืืึธืื ืืขืจ ืงืืึทืก ืงืขื ืขื ืืืื ืืืกืืฃ ืืื ืคืืืข ืืื ืืื ืืืจ ืืืืื. ืืขืจ ืคืึทืงื ืืื ืึทื include
ืืื ืึทื ืืืืขืืคึผืึธืืขื ื ืคึฟืื ืงืฆืืข ืืืึธืก ืงืึธื ืืจืึธืืืจื ืฆื ืึท ืงืืึทืก ืืื ืฆืืืขืืืืื ืฆื ืืขืจ ืืืขืืืืืึทืืขืจ. ืืืื ืืขืจ ืงืืึทืก ืืื ื ืืฉื ืืื ืื ืืืขืืืืืึทืืขืจ, ืขืก ืืืกืืฃ ืขืก, ืืื ืืืื ืขืก ืฉืืื ืืืืืกืฅ, ืขืก ืืื ืืึธืจื ืืฉื. ืืืขืจ ืืื ืคืึทื ืคืื ื ืืฆื include
ืืืจ ืงืขื ืขื ื ืืฉื ืฉืืขืื ืงืืึทืก ืคึผืึทืจืึทืืขืืขืจืก ืืขืฉืึทืก ืงืืึทืก ืืขืงืืึทืจืึทืฆืืข - ืึทืืข ืคืืจืืื ืื ืคึผืึทืจืึทืืขืืขืจืก ืืืื ืืืื ืฉืืขืื ืืื ืึท ืคืื ืืจืืืกื ืืืง ืืึทืื ืืงืืจ - Hiera ืึธืืขืจ ENC. ืืืจ ืืืขืื ืจืขืื ืืืขืื ืืื ืืื ืืขืจ ืืืืึทืืขืจ ืึทืจืืืงื.
ืืขืคืื ืืจื
ืืื ืืขืืึธืื ืืื ืืขื ืคืจืืขืจืืืงื ืืืึธืง, ืืขืจ ืืขืืืืงืขืจ ืงืืึทืก ืงืขื ื ืืฉื ืืืื ืคืึธืจืฉืืขืื ืืืืฃ ืึท ื ืึธืืข ืืขืจ ืืื ืึทืืึธื. ืึธืืขืจ, ืืื ืขืืืขืืข ืงืึทืกืขืก ืืืจ ืืึทืจืคึฟื ืฆื ืงืขื ืขื ืฆื ื ืืฆื ืื ืืขืืืข ืืืึธืง ืคืื ืงืึธื ืืื ืคืึทืจืฉืืืขื ืข ืคึผืึทืจืึทืืขืืขืจืก ืืืืฃ ืืขืจ ืืขืืืืงืขืจ ื ืึธืืข. ืืื ืื ืืขืจืข ืืืขืจืืขืจ, ืขืก ืืื ืึท ื ืืื ืคึฟืึทืจ ืึทื ืืืืืขื ืข ืืืื.
ืคึฟืึทืจ ืืืึทืฉืคึผืื, ืฆื ืื ืกืืึทืืืจื ืื PHP ืืึธืืืืข, ืืืจ ืืึธื ืื ืคืืืืขื ืืข ืืื Avito:
- ืื ืกืืึทืืืจื ืืขื ืคึผืขืงื ืืื ืืขื ืืึธืืืืข.
- ืืึธืืืจ ืืึทืื ืึท ืงืึทื ืคืืืืขืจืืืฉืึทื ืืขืงืข ืคึฟืึทืจ ืืขื ืืึธืืืืข.
- ืืืจ ืืึทืื ืึท ืกืืืืื ืง ืฆื ืื ืงืึทื ืคืืืืขืจืืืฉืึทื ืคึฟืึทืจ php-fpm.
- ืืืจ ืืึทืื ืึท ืกืืืืื ืง ืฆื ืื ืงืึทื ืคืืืืขืจืืืฉืึทื ืคึฟืึทืจ php ืงืื.
ืืื ืึทืืึท ืงืึทืกืขืก, ืึท ืคึผืืึทื ืึทืืึท ืืื $title
, ืืื ืื ืืืื ื ืึธืืขื ืืืื ืืืขื ืขืก ืืื ืืขืจืงืืขืจื. ืืืื ืืื ืืื ืื ืงืืืกื ืืืจืฃ ืืขื ืงืืื ืืืฉืจืืืื ื ืืขืคืื ืืฆืืข, ื ืืืืขื ืงืขื ืืขื ืื ืืื ืืฆื.
ื ืกืืืคึผืืึทืคืืื ืืืึทืฉืคึผืื ืืื ืึท ืืึธืืืืข ืคึฟืึทืจ PHP:
define php74::module (
$php_module_name = $title,
$php_package_name = "php7.4-${title}",
$version = 'installed',
$priority = '20',
$data = "extension=${title}.son",
$php_module_path = '/etc/php/7.4/mods-available',
) {
package { $php_package_name:
ensure => $version,
install_options => ['-o', 'DPkg::NoTriggers=true'], # ััะธะณะณะตัั ะดะตะฑะธะฐะฝะพะฒัะบะธั
php-ะฟะฐะบะตัะพะฒ ัะฐะผะธ ัะพะทะดะฐัั ัะธะผะปะธะฝะบะธ ะธ ะฟะตัะตะทะฐะฟััะบะฐัั ัะตัะฒะธั php-fpm - ะฝะฐะผ ััะพ ะฝะต ะฝัะถะฝะพ, ัะฐะบ ะบะฐะบ ะธ ัะธะผะปะธะฝะบะฐะผะธ, ะธ ัะตัะฒะธัะพะผ ะผั ัะฟัะฐะฒะปัะตะผ ั ะฟะพะผะพััั Puppet
}
-> file { "${php_module_path}/${php_module_name}.ini":
ensure => $ensure,
content => $data,
}
file { "/etc/php/7.4/cli/conf.d/${priority}-${php_module_name}.ini":
ensure => link,
target => "${php_module_path}/${php_module_name}.ini",
}
file { "/etc/php/7.4/fpm/conf.d/${priority}-${php_module_name}.ini":
ensure => link,
target => "${php_module_path}/${php_module_name}.ini",
}
}
node server3.testdomain {
php74::module { 'sqlite3': }
php74::module { 'amqp': php_package_name => 'php-amqp' }
php74::module { 'msgpack': priority => '10' }
}
ืื ืืืืึทืกื ืืืขื ืฆื ืืึทืคึผื ืื ืืืคึผืืืงืึทื ืืขืงืืึทืจืึทืฆืืข ืืขืืช ืืื ืืื ืืขืคืื ืืจื. ืืึธืก ืืึทืคึผืึทื ื ืืืื ืึท ืืขืคึฟืื ืืฆืืข ืืื ืึท ืืืื ืืื ืึท ืงืขืกืืืืขืจืืืง ื ืึธืืขื, ืืื ืขืก ืืขื ืขื ืฆืืืื ืึธืืขืจ ืืขืจ ืงืึทืกืขืก ืคืื ืืขื ืืขืคึฟืื ืืฆืืข ืืืืฃ ืขืืืขืืข ื ืึธืืข.
ืขืก ืืื ืืจืื ื ืฆื ืืึทืฉืืฆื ืืื ืคืื ืืขื: ืึทืืข ืจืขืกืืจืกื ืืื ืืขืจ ืืขืคึฟืื ืืฆืืข ืืืื ืืึธืื ืึท ื ืึธืืขื ืืืคึผืขื ืืื ื ืืืืฃ $title
. ืึทื ืึธืืืขืจื ืึทืืืื ืืื ืืืืขื ืืงืึทื ืึทืืืฉืึทื ืคืื ืจืขืกืืจืกื ืืื ืื ืกืืืคึผืืึทืกื ืคืึทื, ืขืก ืืื ืืขื ืื ืฆื ืึทืจืืืขืจืคืืจื ืื ืจืขืกืึธืืจืกืขืก ืคึผืจืึธืกื ืคึฟืึทืจ ืึทืืข ืื ืกืืึทื ืกืื ืคืื ืื ืืขืคึฟืื ืืฆืืข ืืื ืึท ืืึทืืื ืืขืจ ืงืืึทืก ืืื ืึทืจืืึทื ื ืขืืขื ืืขื ืงืืึทืก ืืื ืื ืืขืคึฟืื ืืฆืืข - ืคืื ืงืฆืืข; include
ืืืืขืืคืืืขื ื.
ืขืก ืืขื ืขื ืื ืืขืจืข ืืืขืื ืฆื ืืขืจืืจืืืื ืืืขืืคึผืึธืืขื ืกื ืืืขื ืึทืืื ื ืจืขืกืืจืกื, ื ืืืืื ื ืืฆื ืคืึทื ืืงืฉืึทื ื defined
ะธ ensure_resources
, ืึธืืขืจ ืืื ืืืขื ืืึธืื ืืืจ ืืืขืื ืืื ืืื ืืขืจ ืืืืึทืืขืจ ืขืคึผืืืึธื.
ืืขืคึผืขื ืืึทื ืกืื ืืื ื ืึธืืืึทืคืึทืงืืืฉืึทื ื ืคึฟืึทืจ ืงืืืกื ืืื ืืื
ืงืืืกื ืืื ืืขืคึฟืื ืืฆืืขืก ืืืืื ืื ืคืืืืขื ืืข ืึผืืืื ืฆื ืืึทื ืืืื ื ืืืคึผืขื ืืึทื ืกืื ืืื ื ืึธืืืึทืคืึทืงืืืฉืึทื ื:
- ืืขืคึผืขื ืืขื ืกื ืืืืฃ ืึท ืงืืึทืก / ืืขืคืื ืืจื ืืืกืืฃ ืืืคึผืขื ืืึทื ืกืื ืืืืฃ ืึทืืข ืจืขืกืืจืกื ืคืื ืื ืงืืึทืก / ืืขืคืื ืืจื;
- ืึท ืงืืึทืก / ืืขืคืื ืืจื ืืขืคึผืขื ืืขื ืกื ืืืกืืฃ ืืืคึผืขื ืืึทื ืกืื ืฆื ืึทืืข ืงืืึทืก / ืืขืคืื ืืจื ืจืขืกืืจืกื;
- ืงืืึทืก / ืืขืคืื ืืจื ืึธื ืืึธื ื ืึธืืืึทืคืืื ืึทืืข ืจืขืกืืจืกื ืคืื ืืขืจ ืงืืึทืก / ืืขืคืื ืืจื;
- ืงืืึทืก / ืืขืคืื ืืจื ืึทืืึธื ืขืืขื ื ืึทืืึธื ืืจื ืฆื ืึทืืข ืจืขืกืืจืกื ืคืื ืืขืจ ืงืืึทืก / ืืขืคืื ืืจื.
ืงืึทื ืืืฉืึทื ืึทื ืกืืืืืืึทื ืฅ ืืื ืกืขืืขืงืืึธืจืก
if
ืขืก ืืื ืคึผืฉืื ืืึธ:
if ะะซะ ะะะะะะ1 {
...
} elsif ะะซะ ะะะะะะ2 {
...
} else {
...
}
ืกืืึทืื
ืกืืึทืื ืืื ืึท ืืืื ืืื ืคืึทืจืงืขืจื: ืื ืืืึธืง ืคืื ืงืึธื ืืืขื ืืืื ืขืงืกืึทืงืืืืึทื ืืืื ืืขืจ ืืืืกืืจืืง ืืื ืคืึทืืฉ.
unless ะะซะ ะะะะะะ {
...
}
ืคืึทื
ืขืก ืืื ืืืื ืืึธืจื ืืฉื ืงืึธืืคึผืืืฆืืจื ืืึธ. ืืืจ ืงืขื ืขื ื ืืฆื ืจืขืืืืขืจ ืืืึทืืืขืก (ืกืืจืื ืืก, ื ืืืขืจื, ืืื"ื ื), ืจืขืืืืขืจ ืืืืกืืจืืงื ืืื ืืึทืื ืืืืคึผืก ืืื ืืืึทืืืขืก.
case ะะซะ ะะะะะะ {
ะะะะงะะะะ1: { ... }
ะะะะงะะะะ2, ะะะะงะะะะ3: { ... }
default: { ... }
}
ืกืขืืขืงืืขืจื
ื ืกืขืืขืงืืึธืจ ืืื ืึท ืฉืคึผืจืึทื ืงืึทื ืกืืจืึทืงื ืขื ืืขื ืฆื case
, ืึธืืขืจ ืึทื ืฉืืึธื ืคืื ืขืงืกืึทืงืืืืื ื ืึท ืืืึธืง ืคืื ืงืึธื, ืขืก ืงืขืจื ืึท ืืืขืจื.
$var = $othervar ? { 'val1' => 1, 'val2' => 2, default => 3 }
ืืึธืืืืขืก
ืืืขื ืื ืงืึทื ืคืืืืขืจืืืฉืึทื ืืื ืงืืืื, ืขืก ืงืขื ืขื ืืืืื ืืืื ืืขืืืืื ืืื ืืืื ืืึทืฉืืึทืืคึผืขืจืืขื. ืืืขืจ ืื ืืขืจ ืงืึทื ืคืืืืขืจืืืฉืึทื ื ืืืจ ืืึทืฉืจืืึทืื, ืื ืืขืจ ืงืืืกื ืืื ื ืึธืืื ืขืก ืืขื ืขื ืืื ืื ืืึทื ืึทืคืขืกืืืืฉืึทื, ืขืก ืืืืงืกื, ืืื ืขืก ืืืขืจื ืืืืึทืงืืืขื ืฆื ืึทืจืืขืื ืืื.
ืืื ืึทืืืฉืึทื, ืขืก ืืื ืื ืคึผืจืึธืืืขื ืคืื ืงืึธื ืจืืืื - ืืืขื ืึทืืข ืื ืงืึธื ืืื ืืื ืืืื ืืึทืฉืืึทืืคึผืขืจืืขื, ืขืก ืืื ืฉืืืขืจ ืฆื ืืืืื ืืขื ืงืึธื ืืื ืื ืืขืจืข. ืฆื ืกืึธืืืืข ืื ืฆืืืื ืคึผืจืึธืืืขืืก, ืคึผืึทืคึผืขื ืืื ืึท ืขื ืืืื ืืขืจืืคื ืืึทืืืฉืืื.
ืืึธืืืืขืก - ืืึธืก ืืขื ืขื ืฉืืขืื ืคืื ืงืืืกื, ืืขืคึฟืื ืืฆืืข ืืื ืื ืืขืจืข ืืืึทืืงืข ืขื ืืืืื ืืขืฉืืขืื ืืื ืึท ืืึทืืื ืืขืจ ืืืขืืืืืึทืืขืจ. ืืื ืื ืืขืจืข ืืืขืจืืขืจ, ืึท ืืึธืืืืข ืืื ืึท ืคืจืืึท ืฉืืืง ืคืื ืืืึทืืงืข ืืึธืืืง. ืคึฟืึทืจ ืืืึทืฉืคึผืื, ืขืก ืงืขื ืืืื ืึท ืืึธืืืืข ืคึฟืึทืจ ืืจืืขืื ืืื nginx, ืืื ืขืก ืืืขื ืึทื ืืืึทืืื ืืืึธืก ืืื ืืืืื ืืืึธืก ืืื ืืืจืฃ ืฆื ืึทืจืืขืื ืืื nginx, ืึธืืขืจ ืขืก ืงืขื ืืืื ืึท ืืึธืืืืข ืคึฟืึทืจ ืืจืืขืื ืืื PHP, ืืื ืึทืืื ืืืืฃ.
ืืึธืืืืขืก ืืขื ืขื ืืืขืจืกืืขืก, ืืื ืื ืืืคึผืขื ืืึทื ืกืื ืคืื ืืึทืืืฉืืื ืืืืฃ ืืขืืขืจ ืื ืืขืจืขืจ ืืขื ืขื ืืืื ืืขืฉืืืฆื. ืขืก ืืื ืึทื ืึธืคึฟื ืจืืคึผืึทืืึทืืึธืจื ืคืื ืืึทืืืฉืืื -
ืืืืฃ ืื ืืืึทืืงืข ืกืขืจืืืขืจ, ืืึทืืืฉืืื ืืขื ืขื ืืืื ืืื ืื ืืึทืืืฉืืื ืกืืืืืจืขืงืืึธืจื ืคืื ืืขืจ ืืืึธืจืฆื ืืืขืืืืืึทืืขืจ. ืื ืืขืืขืจ ืืึธืืืืข ืขืก ืืื ืึท ื ืึธืจืืึทื ืืืขืืืืืึทืืขืจ ืกืืขืืข - ืืึทื ืึทืคืขืกืฅ, ืืขืงืขืก, ืืขืืคึผืืึทืืขืก, ืืื, ืืื ืึทืืื ืืืืฃ.
ืืขืงืข ืกืืจืืงืืืจ ืืื ืึท ืืึธืืืืข
ืืขืจ ืืืึธืจืฆื ืคืื ืื ืืึธืืืืข ืงืขื ืึทื ืืืึทืืื ืื ืคืืืืขื ืืข ืืืจืขืงืืขืจืื ืืื ืืืกืงืจืืคึผืืืื ื ืขืืขื:
manifests
- ืขืก ืึผืืื ืืึทื ืืคืขืกืืึธืกfiles
- ืขืก ืึผืืื ืืขืงืขืกtemplates
- ืขืก ืึผืืื ืืขืืคึผืืึทืืขืกlib
- ืขืก ืึผืืื ืจืืื ืงืึธื
ืืึธืก ืืื ื ืืฉื ืึท ืืึทื ืฅ ืจืฉืืื ืคืื ืืืจืขืงืืขืจืื ืืื ืืขืงืขืก, ืึธืืขืจ ืขืก ืืื ืืขื ืื ืคึฟืึทืจ ืืขื ืึทืจืืืงื ืคึฟืึทืจ ืืืฆื.
ื ืขืืขื ืคืื ืจืขืกืืจืกื ืืื ื ืขืืขื ืคืื ืืขืงืขืก ืืื ืื ืืึธืืืืข
ืจืขืกืึธืืจืกืขืก (ืงืืืกื, ืืื) ืืื ืึท ืืึธืืืืข ืงืขื ืขื ื ืื ืืืื ืืขืืืืกื ืืืึธืก ืืืจ ืืืืื. ืืื ืึทืืืฉืึทื, ืขืก ืืื ืึท ืืืจืขืงื ืงืึธืจืขืกืคึผืึธื ืืขื ืฅ ืฆืืืืฉื ืื ื ืึธืืขื ืคืื ืึท ืืืื ืืื ืื ื ืึธืืขื ืคืื ืืขืจ ืืขืงืข ืืื ืืืึธืก ืคึผืึทืคึผืขื ืืืขื ืงืืงื ืคึฟืึทืจ ืึท ืืึทืฉืจืืึทืืื ื ืคืื ืืขื ืืืื. ืืืื ืืืจ ืืจืขืื ืื ื ืึทืืื ื ืึผืืืื, ืืืึทืืงืข ืคืฉืื ืืืขื ื ืืฉื ืืขืคึฟืื ืขื ืื ืืืื ืืึทืฉืจืืึทืืื ื ืืื ืืืจ ืืืขื ืืึทืงืืืขื ืึท ืืึทืืืื ื ืืขืืช.
ืื ืืืืื ืืขื ืขื ืคืฉืื:
- ืึทืืข ืจืขืกืืจืกื ืืื ืึท ืืึธืืืืข ืืืื ืืืื ืืื ืื ืืึธืืืืข ื ืึทืืขืกืคึผืึทืกืข. ืืืื ืื ืืึธืืืืข ืืื ืืขืจืืคื
foo
, ืืขืืึธืื ืึทืืข ืจืขืกืืจืกื ืืื ืขืก ืืึธื ืืืื ืืขืืืืกืfoo::<anything>
, ืึธืืขืจ ื ืึธืจfoo
. - ืืขืจ ืืืื ืืื ืื ื ืึธืืขื ืคืื ืื ืืึธืืืืข ืืืื ืืืื ืืื ืืขืจ ืืขืงืข
init.pp
. - ืคึฟืึทืจ ืื ืืขืจืข ืจืขืกืืจืกื, ืื ืืขืงืข ื ืึทืืื ื ืกืืขืืข ืืื ืืื ืืืื:
- ืื ืคึผืจืขืคืืงืก ืืื ืื ืืึธืืืืข ื ืึธืืขื ืืื ืึทืืืขืงืืขื ืืืขื
- ืึทืืข ืืึธืคึผื ืงืึธืืึธื ืก, ืืืื ืขืก ืืื, ืืขื ืขื ืจืืคึผืืืืกื ืืื ืกืืึทืฉืื
- ืคืึทืจืืขื ืืขืจืื ื ืืื ืฆืืืขืืขืื
.pp
ืืื ืืืขื ืืขืืึธื ืกืืจืืจื ืืื ืึท ืืืืฉืคึผืื. ืืื ืก ืืึธืื ืืื ืืื ืฉืจืืืื ืึท ืืึธืืืืข nginx
. ืขืก ืึผืืื ืื ืคืืืืขื ืืข ืจืขืกืืจืกื:
- ืงืืึทืก
nginx
ืืืกืงืจืืืื ืืื ืื ืืึทื ืึทืคืขืกืืืืฉืึทืinit.pp
; - ืงืืึทืก
nginx::service
ืืืกืงืจืืืื ืืื ืื ืืึทื ืึทืคืขืกืืืืฉืึทืservice.pp
; - ืืขืคืื ืืจื
nginx::server
ืืืกืงืจืืืื ืืื ืื ืืึทื ืึทืคืขืกืืืืฉืึทืserver.pp
; - ืืขืคืื ืืจื
nginx::server::location
ืืืกืงืจืืืื ืืื ืื ืืึทื ืึทืคืขืกืืืืฉืึทืserver/location.pp
.
ืคึผืึทืืขืจื ื
ืฉืืจืื ืืืจ ืืื ืืืืกื ืืืึธืก ืืขืืคึผืืึทืืขืก ืืขื ืขื, ืืื ืืืขื ื ืืฉื ืืึทืฉืจืืึทืื ืืื ืืื ืืขืืึทื ืืึธ. ืึธืืขืจ ืืื ืืืขื ืืึธืื ืขืก ื ืึธืจ ืืื ืคืึทื
ืืื ืฆื ื ืืฆื ืืขืืคึผืืึทืืขืก: ืื ืืืึทืืฉ ืคืื ืึท ืืืกืืขืจ ืงืขื ืขื ืืืื ืืงืกืคึผืึทื ืืื ืืื ืึท ืคึฟืื ืงืฆืืข template
, ืืืึธืก ืืื ืืืจืืืขืืื ืืขื ืืขื ืืจื ืฆื ืื ืืืกืืขืจ. ืคึฟืึทืจ ืืืืคึผืก ืคืื ืจืขืกืืจืกื ืืขืงืข ืืขืืืืื ื ืฆืืืึทืืขื ืืื ืืขื ืคึผืึทืจืึทืืขืืขืจ content
. ืคึฟืึทืจ ืืืึทืฉืคึผืื, ืืื ืืึธืก:
file { '/tmp/example': content => template('modulename/templatename.erb')
View ืืจื <modulename>/<filename>
ืืืคึผืืืื ืืขืงืข <rootdir>/modules/<modulename>/templates/<filename>
.
ืืื ืืขืจืฆื, ืขืก ืืื ืึท ืคึฟืื ืงืฆืืข inline_template
- ืขืก ื ืขืื ืืขื ืืืกืืขืจ ืืขืงืกื ืืื ืึทืจืืึทื ืฉืจืืึทื, ื ืืฉื ืื ืืขืงืข ื ืึธืืขื.
ืื ืืขืืคึผืืึทืืขืก, ืืืจ ืงืขื ืขื ื ืืฆื ืึทืืข ืคึผืึทืคึผืขื ืืืขืจืืึทืืึทืื ืืื ืืขื ืงืจืึทื ื ืคืึทืจื ืขื.
ืืืึทืืงืข ืฉืืืฆื ืืขืืคึผืืึทืืขืก ืืื ERB ืืื EPP ืคึฟืึธืจืืึทื:
ืืขืงืืฆืขืจ ืืืขืื ืขืจื
ืงืึธื ืืจืึธื ืกืืจืืงืืืจ:
<%= ะะซะ ะะะะะะ %>
โ ืึทืจืฒึทื ืืืืื ืืขื ืืืขืจื ืคึฟืื ืืขื ืืืืกืืจืืง<% ะะซะ ะะะะะะ %>
โ ืืืืกืจืขืืขื ืขื ืืขื ืืืขืจื ืคืื ืื ืืืืกืืจืืง (ืึธื ืขืก ืืจืืื ืืืืื). ืงืึทื ืืืฉืึทื ืึทื ืกืืืืืืึทื ืฅ (ืืืื) ืืื ืืืคึผืก (ืืขืืขืจ) ืืืืฉืึทืืืึทืื ืืืื ืืึธ.<%# ะะะะะะะขะะ ะะ %>
ืืืืกืืจืืงื ืืื ERB ืืขื ืขื ืืขืฉืจืืื ืืื ืจืืื (ืขืจื ืืื ืคืืงืืืฉ ืขืืืขืืื ืจืืื).
ืฆื ืึทืงืกืขืก ืืืขืจืืึทืืึทืื ืคืื ืื ืืึทื ืึทืคืขืกืืืืฉืึทื, ืืืจ ืืึทืจืคึฟื ืฆื ืืืืื @
ืฆื ืื ืืืขืจืืึทืืึทื ื ืึธืืขื. ืฆื ืืึทืืืึทืืืงื ืึท ืฉืืจื ืืจืขืื ืืืึธืก ืืื ืืจืืืก ื ืึธื ืึท ืงืึธื ืืจืึธื ืงืึทื ืกืืจืึทืงืฉืึทื, ืืืจ ืืึทืจืคึฟื ืฆื ื ืืฆื ืึท ืงืืึธืืืื ื ืงืืืืื -%>
.
ืืืึทืฉืคึผืื ืคืื ื ืืฆื ืื ืืืกืืขืจ
ืืื ืก ืืึธืื ืืื ืืื ืฉืจืืืื ืึท ืืึธืืืืข ืฆื ืงืึธื ืืจืึธืืืจื ZooKeeper. ืืขืจ ืงืืึทืก ืคืึทืจืึทื ืืืืึธืจืืืขื ืคึฟืึทืจ ืงืจืืืืืื ื ืื ืงืึทื ืคืืืืขืจืืืฉืึทื ืงืืงื ืขืคึผืขืก ืืื ืืึธืก:
class zookeeper::configure (
Array[String] $nodes,
Integer $port_client,
Integer $port_quorum,
Integer $port_leader,
Hash[String, Any] $properties,
String $datadir,
) {
file { '/etc/zookeeper/conf/zoo.cfg':
ensure => present,
content => template('zookeeper/zoo.cfg.erb'),
}
}
ืืื ืื ืงืึธืจืึทืกืคึผืึทื ืืื ื ืืืกืืขืจ zoo.cfg.erb
โ ืืืื:
<% if @nodes.length > 0 -%>
<% @nodes.each do |node, id| -%>
server.<%= id %>=<%= node %>:<%= @port_leader %>:<%= @port_quorum %>;<%= @port_client %>
<% end -%>
<% end -%>
dataDir=<%= @datadir %>
<% @properties.each do |k, v| -%>
<%= k %>=<%= v %>
<% end -%>
Facts ืืื ืืขืืืื-ืืื ืืืขืจืืึทืืึทืื
ืึธืคื ืืขืจ ืกืคึผืขืฆืืคืืฉ ืืืื ืคืื ืื ืงืึทื ืคืืืืขืจืืืฉืึทื ืืขืคึผืขื ืืก ืืืืฃ ืืืึธืก ืืื ืืืฆื ืืขืฉืขืขื ืืฉ ืืืืฃ ืื ื ืึธืืข. ืคึฟืึทืจ ืืืึทืฉืคึผืื, ืืืคึผืขื ืืื ื ืืืืฃ ืืืึธืก ืืขืืืึทื ืืขืืืื ื ืืื, ืืืจ ืืึทืจืคึฟื ืฆื ืื ืกืืึทืืืจื ืืืื ืึธืืขืจ ืื ืืขืจื ืืืขืจืกืืข ืคืื โโืืขื ืคึผืขืงื. ืืืจ ืงืขื ืขื ืืึธื ืืืึธืจ ืึทืืข ืืขื ืืึทื ืืืึทืื, ืจืืจืืืืื ื ืืึทื ืึทืคืขืกืืื ืืืื ื ืึธืืื ืืืืฉื. ืืืขืจ ืืึธืก ืืื ื ืืฉื ืึท ืขืจื ืกื ืฆืืืึทื ื;
ืฆื ืงืจืืื ืืื ืคึฟืึธืจืืึทืฆืืข ืืืขืื ื ืึธืืื, ืคึผืึทืคึผืขื ืืื ืึท ืืขืงืึทื ืืืึทื ืืขืจืืคื ืคืืงืื. ืคืึทืงืก - ืืึธืก ืืื ืืื ืคึฟืึธืจืืึทืฆืืข ืืืขืื ืืขื ื ืึธืืข, ืื ืืืฆื ืืื ืืึทื ืึทืคืขืกืืืืฉืึทื ื ืืื ืื ืคืึธืจืขื ืคืื ืคึผืจืึธืกื ืืืขืจืืึทืืึทืื ืืื ืื ืืืืืืืข ื ืึทืืขืกืคึผืึทืกืข. ืคึฟืึทืจ ืืืึทืฉืคึผืื, ืืึทืืขืืึธืก ื ืึธืืขื, ืึธืคึผืขืจืืืืื ื ืกืืกืืขื ืืืขืจืกืืข, ืคึผืจืึทืกืขืกืขืจ ืึทืจืงืึทืืขืงืืฉืขืจ, ืจืฉืืื ืคืื ื ืืฆืขืจืก, ืจืฉืืื ืคืื ื ืขืฅ ืื ืืขืจืคืืืกืื ืืื ืืืืขืจ ืึทืืจืขืกืขืก, ืืื ืคืื, ืคืื ืืขืจ. ืคืืงืื ืืขื ืขื ืื ืืืฆื ืืื ืืึทื ืืคืขืกืฅ ืืื ืืขืืคึผืืึทืืขืก ืืื ืจืขืืืืขืจ ืืืขืจืืึทืืึทืื.
ื ืืืืฉืคืื ืคืื ืืจืืขืื ืืื ืคืืงืื:
notify { "Running OS ${facts['os']['name']} version ${facts['os']['release']['full']}": }
# ัะตัััั ัะธะฟะฐ notify ะฟัะพััะพ ะฒัะฒะพะดะธั ัะพะพะฑัะตะฝะธะต ะฒ ะปะพะณ
ืคืึธืจืืึทื ืืขืจืขืื, ืึท ืคืึทืงื ืืื ืึท ื ืึธืืขื (ืฉืืจืืงื) ืืื ืึท ืืืขืจื (ืคืึทืจืฉืืืขื ืข ืืืืคึผืก ืืขื ืขื ืื ืืืฆื: ืกืืจืื ืืก, ืขืจืืื, ืืืขืจืืขืจืืื). ืขืกื
ืืขืฉืึทืก ืึธืคึผืขืจืึทืฆืืข, ืืขืจ ืืืึทืืงืข ืึทืืขื ื ืขืจืฉืืขืจ ืงืืคืืขืก ืึทืืข ืื ืืืฆื ืคืึทืงื ืงืึทืืขืงืืขืจื ืคืื ืื ืคึผืึทืคึผืคึผืขืืกืขืจืืืขืจ ืฆื ืื ื ืึธืืข, ื ืึธื ืืืึธืก ืขืก ืืึธื ืืฉืื ืืื ืืื ืกืขื ืื ืื ืืขืืืืื ืคืืงืื ืฆื ืื ืกืขืจืืืขืจ; ื ืึธื ืืขื, ืืขืจ ืกืขืจืืืขืจ ืืืืื ืฆื ืฆืื ืืืคืฉืืขืื ืืขื ืงืึทืืึทืืึธื.
Facts ืืื ืื ืคืึธืจืขื ืคืื ืขืงืกืขืงืืืึทืืืข ืืขืงืขืก
ืึทืืึท ืคืืงืื ืืขื ืขื ืืขืฉืืขืื ืืื ืืึทืืืฉืืื ืืื ืื ืืืขืืืืืึทืืขืจ facts.d
. ืคืื ืงืืจืก, ืื ืืขืงืขืก ืืืื ืืืื ืขืงืกืขืงืืืึทืืืข. ืืืขื ืืื ืืืืคื, ืืื ืืืื ืึทืจืืืกืคืืจื ืืื ืคึฟืึธืจืืึทืฆืืข ืฆื ื ืึธืจืืึทื ืจืขืืืืืึทื ืืื ืืื ืึธืืขืจ ืฉืืืกื = ืืืขืจื ืคึฟืึธืจืืึทื.
ืื ืืืืกื ื ืืฉื ืคืึทืจืืขืกื ืึทื ืื ืคืืงืื ืึทืคึผืืืื ืฆื ืึทืืข ื ืึธืืื ืืืึธืก ืืขื ืขื ืงืึทื ืืจืึธืืื ืืืจื ืื ืืึทืคึผืขืื ืกืขืจืืืขืจ ืฆื ืืืึธืก ืืืื ืืึธืืืืข ืืื ืืืคึผืืืื. ืืขืจืืืขืจ, ืืื ืืขื ืฉืจืืคื, ื ืขืืขื ืงืขืืจ ืฆื ืงืึธื ืืจืึธืืืจื ืึทื ืื ืกืืกืืขื ืืื ืึทืืข ืื ืืืืื ืืื ืืขืงืขืก ื ืืืืืง ืคึฟืึทืจ ืืืื ืคืึทืงื ืฆื ืึทืจืืขืื.
#!/bin/sh
echo "testfact=success"
#!/bin/sh
echo '{"testyamlfact":"success"}'
ืจืืืื ืคืืงืื
ืึทืืึท ืคืืงืื ืืขื ืขื ืืขืฉืืขืื ืืื ืืึทืืืฉืืื ืืื ืื ืืืขืืืืืึทืืขืจ lib/facter
.
# ะฒัั ะฝะฐัะธะฝะฐะตััั ั ะฒัะทะพะฒะฐ ััะฝะบัะธะธ Facter.add ั ะธะผะตะฝะตะผ ัะฐะบัะฐ ะธ ะฑะปะพะบะพะผ ะบะพะดะฐ
Facter.add('ladvd') do
# ะฒ ะฑะปะพะบะฐั
confine ะพะฟะธััะฒะฐัััั ััะปะพะฒะธั ะฟัะธะผะตะฝะธะผะพััะธ ัะฐะบัะฐ โ ะบะพะด ะฒะฝัััะธ ะฑะปะพะบะฐ ะดะพะปะถะตะฝ ะฒะตัะฝััั true, ะธะฝะฐัะต ะทะฝะฐัะตะฝะธะต ัะฐะบัะฐ ะฝะต ะฒััะธัะปัะตััั ะธ ะฝะต ะฒะพะทะฒัะฐัะฐะตััั
confine do
Facter::Core::Execution.which('ladvdc') # ะฟัะพะฒะตัะธะผ, ััะพ ะฒ PATH ะตััั ัะฐะบะพะน ะธัะฟะพะปะฝัะตะผัะน ัะฐะนะป
end
confine do
File.socket?('/var/run/ladvd.sock') # ะฟัะพะฒะตัะธะผ, ััะพ ะตััั ัะฐะบะพะน UNIX-domain socket
end
# ะฒ ะฑะปะพะบะต setcode ะฟัะพะธัั
ะพะดะธั ัะพะฑััะฒะตะฝะฝะพ ะฒััะธัะปะตะฝะธะต ะทะฝะฐัะตะฝะธั ัะฐะบัะฐ
setcode do
hash = {}
if (out = Facter::Core::Execution.execute('ladvdc -b'))
out.split.each do |l|
line = l.split('=')
next if line.length != 2
name, value = line
hash[name.strip.downcase.tr(' ', '_')] = value.strip.chomp(''').reverse.chomp(''').reverse
end
end
hash # ะทะฝะฐัะตะฝะธะต ะฟะพัะปะตะดะฝะตะณะพ ะฒััะฐะถะตะฝะธั ะฒ ะฑะปะพะบะต setcode ัะฒะปัะตััั ะทะฝะฐัะตะฝะธะตะผ ัะฐะบัะฐ
end
end
ืืขืงืกื ืคืืงืื
ืึทืืึท ืคืืงืื ืืขื ืขื ืืขืฉืืขืื ืืืืฃ ื ืึธืืื ืืื ืื ืืืขืืืืืึทืืขืจ /etc/facter/facts.d
ืืื ืึทืื ืืืึทืืงืข ืึธืืขืจ /etc/puppetlabs/facts.d
ืืื ืื ื ืืึทืข ืคึผืึทืคึผืขื.
examplefact=examplevalue
---
examplefact2: examplevalue2
anotherfact: anothervalue
ืืึทืงืืืขื ืฆื ืื Facts
ืขืก ืืขื ืขื ืฆืืืื ืืืขืื ืฆื ืฆืืืึทื ื ืื ืคืืงืื:
- ืืืจื ืืขื ืืืขืจืืขืจืืื
$facts
:$facts['fqdn']
; - ื ืืฆื ืื ืคืึทืงื ื ืึธืืขื ืืื ืื ืืืึทืืขืืืืืง ื ืึธืืขื:
$fqdn
.
ืขืก ืืื ืืขืกืืขืจ ืฆื ื ืืฆื ืึท ืืืขืจืืขืจืืื $facts
, ืึธืืขืจ ืืคืืื ืืขืกืขืจ, ืึธื ืืืืึทืื ืื ืืืืืืืข ื ืึทืืขืกืคึผืึทืกืข ($::facts
).
ืืขืืืื-ืืื ืืืขืจืืึทืืึทืื
ืืืฅ ืื ืคืืงืื ืืื ืื ืืืื
- ืืจืึทืกืืื ืคืืงืื - ืืืขืจืืึทืืึทืื ืืืึธืก ืืขื ืขื ืืขื ืืืขื ืคืื ืืขื ืงืืืขื ื ืก ืืึทืืืืึทืื (ืืื ื ืื ืืึทืืืืึทืื ืืื ืืืืฉืึทืืืึทืื ืืจืืืก ืืืืฃ ืึท ืคึผืึธืคึผืคึผืขื ืกืขืจืืืขืจ, ืืขืจ ืึทืืขื ื ืงืขื ื ืืฉื ื ืึธืจ ื ืขืืขื ืืื ืืืืฉื ืืืื ืืึทืืืืึทืื, ืึทืืื ืื ืืืขืจืืึทืืึทืื ืืขื ืขื "ืืจืึทืกืืื"): ืื ื ืึธืืขื ืคืื ืื ืืึทืืืืึทืื, ืื ื ืึธืืขื ืคืื ืื ืืึทืืืืึทืื. ืืึทืืขืืึธืก ืืื ืคืขืื, ืืงืกืืขื ืฉืึทื ื ืคืื ืื ืืึทืืืืึทืื.
- ืกืขืจืืืขืจ ืคืืงืื - ืืืขืจืืึทืืึทืื ืฉืืึทืืืช ืฆื ืืื ืคึฟืึธืจืืึทืฆืืข ืืืขืื ืื ืกืขืจืืืขืจ - ืืืขืจืกืืข, ื ืึธืืขื, ืกืขืจืืืขืจ IP ืึทืืจืขืก, ืกืืืืืืข.
- ืึทืืขื ื ืคืืงืื - ืืืขืจืืึทืืึทืื ืฆืืืขืืขืื ืืืืึทื ืืืจื ืืืึทืืงืข-ืึทืืขื ื, ืืื ื ืืฉื ืืืจื ืคืึทืงื - ืืึทืืืืึทืื ื ืึธืืขื, ืึทืืขื ื ืืืขืจืกืืข, ืืืึทืืงืข ืืืขืจืกืืข.
- ืืขื ืืืขืจืืึทืืึทืื - ืคึผืึทืคึผืขืืืึทืกืืขืจ ืืืขืจืืึทืืึทืื (ืกืืง!). ืขืก ืืื ืืืขืื ืื ืืขืืืข ืืื ืืื ืกืขืจืืืขืจ ืคืืงืื, ืคึผืืืก ืงืึทื ืคืืืืขืจืืืฉืึทื ืคึผืึทืจืึทืืขืืขืจ ืืืึทืืืขืก ืืขื ืขื ืืืจืขืืืืื.
- ืงืึทืืคึผืืืืขืจ ืืืขืจืืึทืืึทืื - ืงืึทืืคึผืืืืขืจ ืืืขืจืืึทืืึทืื ืืืึธืก ืืขื ืขื ืึทื ืืขืจืฉ ืืื ืืขืืขืจ ืคืึทืจื ืขื: ืื ื ืึธืืขื ืคืื ืืขื ืงืจืึทื ื ืืึธืืืืข ืืื ืื ื ืึธืืขื ืคืื ืื ืืึธืืืืข ืืื ืืืึธืก ืื ืงืจืึทื ื ืืืืคืขืฅ ืืื ืึทืงืกืขืกื. ืืื ืงืขื ืขื ืืืื ืืขืืืืื ื, ืืืฉื, ืฆื ืงืึธื ืืจืึธืืืจื ืึทื ืืืื ืคึผืจืืืืึทื ืงืืืกื ืืขื ืขื ื ืืฉื ืืขืืืืื ื ืืืืึทื ืคึฟืื ืื ืืขืจืข ืืึทืืืฉืืื.
Addendum 1: ืืื ืฆื ืืืืคื ืืื ืืืืึทืืื ื ืึทืืข ืืขื?
ืืขืจ ืึทืจืืืงื ืึผืืื ืคืืืข ืืืืฉืคืืื ืคืื ืืืึทืืงืข ืงืึธื, ืึธืืขืจ ืืื ื ืืฉื ืืึธืื ืืื ืื ืืื ืฆื ืืืืคื ืืขื ืงืึธื. ื ื, ืืื ืคืืจืจืืื ืืื.
ืึทื ืึทืืขื ื ืืื ืืขื ืื ืฆื ืืืืคื Puppet, ืึธืืขืจ ืคึฟืึทืจ ืจืืึฟ ืงืึทืกืขืก ืืืจ ืืืขื ืืืื ืืึทืจืคึฟื ืึท ืกืขืจืืืขืจ.
ืึทืืขื ื
ืืื ืืื ืืกืืขืจ ืืื ื ืืืขืจืกืืข 5, ืืืึทืืงืข-ืึทืืขื ื ืคึผืึทืงืึทืืืฉืึทื ืคืื
ืืื ืื ืกืืืคึผืืึทืกื ืคืึทื, ืฆื ื ืืฆื ืื ืืืึทืืงืข ืงืึทื ืคืืืืขืจืืืฉืึทื, ืขืก ืืื ืืขื ืื ืฆื ืงืึทืืขืจ ืืขื ืึทืืขื ื ืืื ืกืขืจืืืขืจืืขืกืก ืืึธืืข: ืฆืืืขืฉืืขืื ืึทื ืื ืืืึทืืงืข ืงืึธื ืืื ืงืึทืคึผืื ืฆื ืื ื ืึธืืข, ืงืึทืืขืจ 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)[
ืึทืืขื ืืื 2: ืงืึธืืืจืื ื ืืืืืืืื ื
- ืฉืืขืื ืึทืืข ืืึธืืืง ืืื ืงืืืกื ืืื ืืื.
- ืืึทืืื ืงืืืกื ืืื ืืขืคึฟืื ืืฆืืข ืืื ืืึทืืืฉืืื, ื ืืฉื ืืื ืืึทื ืืคืขืกืฅ ืืืกืงืจืืืืื ื ื ืึธืืื.
- ื ืืฆื ืื ืคืืงืื.
- ืื ืืืืกื ื ืืฉื ืืึทืื ืืืื ืืืืืจื ืืืืฃ ืืึธืกืื ืึทืืขืก.
- ืคืืื ืคืจืื ืฆื ืืืืื ืคึผืึทืจืึทืืขืืขืจืก ืคึฟืึทืจ ืงืืืกื ืืื ืืื - ืืึธืก ืืื ืืขืกืขืจ ืืื ืืืคึผืืืกืึทื ืืึธืืืง ืคืึทืจืืึธืจืื ืืื ืื ืืืฃ ืคืื ืื ืงืืึทืก / ืืขืคืื ืืจื.
ืืื ืืืขื ืืขืจืงืืขืจื ืืืึธืก ืืื ืจืขืงืึธืืขื ืืืจื ืฆื ืืึธื ืืึธืก ืืื ืืขืจ ืืืืึทืืขืจ ืึทืจืืืงื.
ืกืึธืฃ
ืืื ืก ืขื ืืืงื ืืื ืื ืืงืืื. ืืื ืืขืจ ืืืืึทืืขืจ ืึทืจืืืงื ืืื ืืืขื ืืึธืื ืืืจ ืืืขืื Hiera, ENC ืืื PuppetDB.
ืืืืื ืจืขืืืกืืจืืจื ื ืืฆืขืจืก ืงืขื ืขื ืึธื ืืืื ื ืขืืขื ืืื ืื ืืืขืจืืืืง.
ืืื ืคืึทืงื, ืขืก ืืื ืคืื ืืขืจ ืืึทืืขืจืืึทื - ืืื ืงืขื ืขื ืฉืจืืึทืื ืึทืจืืืงืืขื ืืืืฃ ืื ืคืืืืขื ืืข ืืขืืขืก, ืฉืืืืขื ืืืืฃ ืืืึธืก ืืืจ ืืืึธืื ืืืื ืืื ืืขืจืขืกืืจื ืืื ืืืืขื ืขื ืืืขืื:
- ืงืกื ืืืงืก%ืึทืืืึทื ืกืืจืืข ืืืึทืืงืข ืงืึทื ืกืืจืึทืงืฉืึทื ื - ืขืืืขืืข ืืจืขืง ืืืืฃ ืืขืจ ืืืืึทืืขืจ ืืืจืื: ืืืคึผืก, ืืึทืคึผืื ื ืืื ืื ืืขืจืข ืืึทืืืืึท ืืืืกืืจืืงื, ืืืื ืงืึทืืขืงืืขืจื, ืืงืกืคึผืึธืจืืึทื ืจืขืกืืจืกื ืืื ืื ืืขืจ-ืืึทืืขืืึธืก ืงืึธืืื ืืงืึทืฆืืข ืืืจื ืืืึทืืงืข, ืืึทืืก, ืคึผืจืึทืืืืืืขืจื, ืึทืืกืืจืึทืงื ืืึทืื ืืืืคึผืก.13
- ืงืกื ืืืงืก%"ืืื ืืื ืืขืจ ืึทืืืื ืืกืืจืึทืืึธืจ ืคืื ืืืื ืืืืขืจ" ืึธืืขืจ ืืื ืืืจ ืืื ืึทืืืืืึธ ืืึธืื ืคืจืขื ืื ืืื ืขืืืขืืข ืืึทืคึผืขืื ืกืขืจืืืขืจืก ืคืื ืคืึทืจืฉืืืขื ืข ืืืขืจืกืืขืก, ืืื, ืืื ืคึผืจืื ืฆืืคึผ, ืืขืจ ืืืื ืืืขืื ืึทืืืื ืึทืกืืขืจืื ื ืื ืืึทืคึผืขืื ืกืขืจืืืขืจ.
- ืงืกื ืืืงืก%ืืื ืืืจ ืฉืจืืึทืื ืืืึทืืงืข ืงืึธื: ืื ืกืืจืึทืืขื ืืืืฉืึทื, ืืึทืงืืืืขื ืืืืฉืึทื, ืืขืกืืื ื, ืกื / ืงื.18
22 ืืื ืืฆืขืจ ืืืื ืืขืฉืืืื. 9 ืืื ืืฆืขืจ ืืืื ืืื ืืคืืขืืืืื.
ืืงืืจ: www.habr.com