เบเบตเปเปเบกเปเบเบเบฒเบเบเบญเบเบเปเปเบเบงเบฒเบก
เปเบฅเบตเปเบกเบเบปเปเบเบเบฒเบเบเปเบฒเบซเบกเบฑเปเบเบชเบฑเบเบเบฒเบเบตเบชเบญเบ, เบฅเบฐเบซเบฑเบเปเบเปเบเปเปเบเบฒเบเปเบเบฑเบเบกเปเบฅเบฐเบเบปเบ, เปเบเบฒเบฐเบงเปเบฒ เปเบเบงเบเบงเบฒเบกเบเบดเบเปเบเบทเปเบญเบเบเบปเปเบเปเบฅเบตเปเบกเปเบเบเบญเบญเบเบเบฒเบเบเบงเบฒเบกเปเบเบฑเบเบเบดเบเบเบตเปเบฎเบธเบเปเบฎเบ. เบญเบฑเบเบเบตเปเบเปเปเบงเปเบฒเบเบต เบซเบผเบทเบเปเปเบเบต, เบกเบฑเบเปเบเบฑเบเบเบฒเบเปเบซเปเบเบตเปเบเบฒเบเบเบตเปเบเบฐเปเบเปเปเบเปเบ เปเบฅเบฐเบเปเบญเบเบขเบนเปเบเบฑเบ. เบชเปเบงเบเบซเบเบถเปเบเบเบญเบเบเบฐเบเบงเบเบเบฒเบเบเบตเปเปเบกเปเบ refactoring. เบเบฑเบเบเบธเบเปเบเบเบชเปเบฒเบเบเบทเปเบเบเบฒเบเปเบเบฑเบเบฅเบฐเบซเบฑเบ. เปเบซเปเปเบฅเบทเปเบญเบเปเบฅเบตเปเบกเบเบปเปเบเบเปเบฝเบงเบเบฑเบเบงเบดเบเบตเบเบฒเบ refactor Ansible เปเบเบเบตเบซเบเบถเปเบเปเบฅเบฐเบเปเปเปเบซเป Crazy.
เบเบฒเบเปเบเบตเบเบเบญเบเบกเปเบฅเบฐเบเบปเบ
เบงเบฑเบเบเบต 1: เบเบปเบเปเบเบฑเบเบชเบนเบ
เบเบฑเปเบเปเบถเปเบเบกเบตเปเบเบเบเบฒเบเบเบตเปเบกเบตเปเบเบทเปเบญเบเปเบ. เบกเบฑเบเบกเบตเบเบตเบกเบเบฒเบเบเบฑเบเบเบฐเบเบฒ Dev เปเบฅเบฐเบงเบดเบชเบฐเบงเบฐเบเบญเบ Ops. เบเบงเบเปเบเบปเบฒเปเบเบปเปเบฒเปเบเปเปเบเปเปเบเบเบฑเบเบซเบฒเบเบฝเบงเบเบฑเบ: เบงเบดเบเบตเบเบฒเบเบเบดเบเบเบฑเปเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเปเบฅเบฐเบเปเบฒเปเบเบตเบเบเบฒเบเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบ. เบเบฑเบเบซเบฒเปเบกเปเบเบงเปเบฒเบเบตเบกเบเบฒเบเปเบเปเบฅเบฐเบเบปเบเปเบเปเปเบเบเบฑเบเบซเบฒเบเบตเปเบเปเบงเบเบงเบดเบเบตเบเบญเบเบเบปเบเปเบญเบ. เปเบเปเบเบเบเบฒเบ, เบกเบฑเบเปเบเปเบเบทเบเบเบฑเบเบชเบดเบเปเบเบเบตเปเบเบฐเปเบเป Ansible เปเบเบทเปเบญ synchronize เบเบงเบฒเบกเบฎเบนเปเบฅเบฐเบซเบงเปเบฒเบเบเบตเบก Dev เปเบฅเบฐ Ops.
เบงเบฑเบเบเบต 89: เบเบฒเบเปเบเบตเบเบเบญเบเบกเปเบฅเบฐเบเบปเบ
เปเบเบเบเปเปเปเบเปเบชเบฑเบเปเบเบเปเบซเบฑเบเบเบปเบงเปเบญเบ, เบเบงเบเปเบเบปเบฒเบเปเบญเบเบเบฒเบเปเบฎเบฑเบเบกเบฑเบเปเบซเปเบเบตเบเบตเปเบชเบธเบเปเบเบปเปเบฒเบเบตเปเปเบเบฑเบเปเบเปเบเป, เปเบเปเบกเบฑเบเปเบเปเบเบฒเบเปเบเบฑเบเบกเปเบฅเบฐเบเบปเบ. เบเบตเปเปเบเบตเบเบเบถเปเบเปเบเบงเปเบ?
- เบเบงเบโเปเบฎเบปเบฒโเบกเบตโเบงเบฝเบโเบเบฒเบโเบญเบฑเบโเบฎเบตเบโเบเปเบงเบโเบขเบนเปโเบเบตเปโเบเบตเปโ, เปเบซเปโเบเบญเบโเปเบฎเบฑเบโเบเบฒเบ hack เปเบเบทเปเบญเบโเปเบฅเบฐโเบซเบผเบฑเบโเบเบฒเบโเบเบฑเปเบโเปเบเปโเปเบโเบกเบฑเบโ.
- เบเปเบฒเบเบเปเป เบเบณ เปเบเบฑเบเบเปเบญเบเบเบฝเบเปเบญเบเบฐเบชเบฒเบเปเบฅเบฐเบเบธเบเบขเปเบฒเบเบเบฐเปเบเปเบเบเปเบฝเบงเบเบฑเบเบชเบดเปเบเบเบตเป เบเบณ เบฅเบฑเบเปเบเบตเบเบเบทเปเบเบขเบนเปเบเบตเปเบเบตเป.
- เบเปเบญเบเบฎเบนเปเบเบฑเบ Ansible/Python/Bash/Terraform! เปเบเบดเปเบเบงเบดเบเบตเบเบตเปเบเปเบญเบเบชเบฒเบกเบฒเบเบซเบฅเบตเบเบฅเปเบฝเบเปเบเป!
- เบเปเบญเบเปเบเบฑเบเบเบนเปเบเบฑเบเบเบฐเบเบฒ Full Stack Overflow เปเบฅเบฐเบเบฑเบเบฅเบญเบเบเบตเปเบกเบฒเบเบฒเบ stackoverflow, เบเปเบญเบเบเปเปเบฎเบนเปเบงเปเบฒเบกเบฑเบเปเบฎเบฑเบเบงเบฝเบเปเบเบงเปเบ, เปเบเปเบกเบฑเบเปเบเบดเปเบเบเบทเบงเปเบฒเปเบขเบฑเบเปเบฅเบฐเปเบเปเปเบเบเบฑเบเบซเบฒ.
เบเบฑเปเบเบเบฑเปเบ, เบเปเบฒเบเบชเบฒเบกเบฒเบเปเบเปเบฎเบฑเบเบเบฐเปเบเบเบเบญเบเบฅเบฐเบซเบฑเบเบเบตเปเบเปเปเบชเบฒเบกเบฒเบเปเบเบปเปเบฒเปเบเปเบเป, เบเบตเปเบเปเปเบกเบตเปเบญเบเบฐเบชเบฒเบ, เบกเบฑเบเบเปเปเบเบฑเบเปเบเบเบงเปเบฒเบกเบฑเบเปเบฎเบฑเบเบซเบเบฑเบ, เบเปเปเบงเปเบฒเบเบฐเบกเบตเบเบงเบฒเบกเบเปเบฒเปเบเบฑเบ, เปเบเปเบเบฑเบเบซเบฒเปเบกเปเบเบงเปเบฒเบเปเบฒเบเบเปเบญเบเบเบฑเบเบเบฐเบเบฒเบกเบฑเบ, เบเบฑเบเปเบเบเบกเบฑเบ, เปเบเบตเปเบกเปเบกเปเบเปเบญเบเปเบเบปเปเบฒเปเบฅเบฐเบชเบฐเบซเบเบฑเบเบชเบฐเบซเบเบนเบ. , เปเบฎเบฑเบเปเบซเปเบชเบฐเบเบฒเบเบฐเบเบฒเบเบฎเปเบฒเบเปเบฎเบเบเบงเปเบฒเปเบเบปเปเบฒ.
- hosts: localhost
tasks:
- shell: echo -n Z >> a.txt && cat a.txt
register: output
delay: 1
retries: 5
until: not output.stdout.find("ZZZ")
เบกเบทเป #109: เบเบงเบฒเบกเบฎเบฑเบเบฎเบนเปเบเบญเบเบเบฑเบเบซเบฒ
เบฎเบนเบเปเบเบ IaC เบเบตเปเปเบเปเบเบดเบเปเบงเปเปเบเบเบญเบเบเบปเปเบ เปเบฅเบฐ เบเบฐเบเบดเบเบฑเบเบเปเปเปเบเปเบเบฒเบกเบเบงเบฒเบกเบเปเบญเบเบเบฒเบเบเบญเบเบเบนเปเปเบเป / เบเบธเบฅเบฐเบเบดเบ / เบเบตเบกเบเบฒเบเบญเบทเปเบเป, เปเบฅเบฐเปเบงเบฅเบฒเบเบตเปเบเบฐเบเปเบฝเบเปเบเบเปเบเบเบชเปเบฒเบเบเบทเปเบเบเบฒเบเบเปเปเบขเบธเบเปเบเบปเบฒเบเบฒเบเบเบญเบกเบฎเบฑเบ. เปเบเปเบงเบฅเบฒเบเบตเป, เบเบงเบฒเบกเปเบเบปเปเบฒเปเบเบกเบฒเบงเปเบฒเบกเบฑเบเปเบกเปเบเปเบงเบฅเบฒเบเบตเปเบเบฐเบเปเบฒเปเบเบตเบเบเบฒเบ.
IaC refactoring
เบกเบทเปเบเบต 139: เปเบเบปเปเบฒเบเปเบญเบเบเบฒเบ refactor เปเบเปเปเบเป?
เบเปเบญเบเบเบตเปเบเปเบฒเบเบเบฐเบเปเบฒเบงเปเบเบซเบฒ refactor, เบเปเบฒเบเบเปเบญเบเบเบญเบเบเปเบฒเบเบฒเบกเบเบตเปเบชเปเบฒเบเบฑเบเบเปเบฒเบเบงเบเบซเบเบถเปเบ:
- เปเบเบฑเบเบซเบเบฑเบเบเปเบฒเบเบเปเบญเบเบเบฒเบเบเบฑเบเบซเบกเบปเบเบเบตเป?
- เปเบเบปเปเบฒเบกเบตเปเบงเบฅเบฒเบเป?
- เบเบงเบฒเบกเบฎเบนเปเบเบฝเบเบเปเบเป?
เบเปเบฒเบเปเบฒเบเบเปเปเบฎเบนเปเบงเบดเบเบตเบเบญเบเบเปเบฒเบเบฒเบก, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ, เบเบฒเบเบเบทเปเบเบเบนเบเบฐเบชเบดเปเบเบชเบธเบเบฅเบปเบเบเปเบญเบเบเบตเปเบกเบฑเบเบเบฐเปเบฅเบตเปเบกเบเบปเปเบ, เบซเบผเบทเบกเบฑเบเบญเบฒเบเบเบฐเบฎเปเบฒเบเปเบฎเบเบเบงเปเบฒเปเบเบปเปเบฒ. เปเบเบทเปเบญเบเบเบฒเบเบงเปเบฒ เบกเบตเบเบฐเบชเบปเบเบเบฒเบ (
เบกเบทเปเบเบต 149: เบเบฒเบเบเบฐเบเบฝเบก refactoring
เบชเบดเปเบเบเปเบฒเบญเบดเบเปเบกเปเบเบเบฒเบเบเบฐเบเบฝเบก. เบเบฑเบเบชเบดเบเปเบเบงเปเบฒเบเบงเบเปเบฎเบปเบฒเบเบฐเปเบฎเบฑเบเปเบเบงเปเบ. เปเบเบทเปเบญเปเบฎเบฑเบเบชเบดเปเบเบเบตเป, เบเบงเบเปเบฎเบปเบฒเบเบดเบเบเปเปเบชเบทเปเบชเบฒเบ, เบเบญเบเบซเบฒเบเบทเปเบเบเบตเปเบเบฑเบเบซเบฒเปเบฅเบฐเบเบญเบเบซเบฒเบงเบดเบเบตเบเบตเปเบเบฐเปเบเปเปเบเปเบซเปเปเบเบปเบฒเปเบเบปเปเบฒ. เบเบงเบเปเบฎเบปเบฒเบเบฑเบเบเบถเบเปเบเบงเบเบงเบฒเบกเบเบดเบเบเบตเปเปเบเบฑเบเบเบปเบเบกเบฒเบเบฒเบเบเบฒเบเบญเบฑเบ, เบเบปเบงเบขเปเบฒเบเปเบเบฑเปเบเบเบปเบเบเบงเบฒเบกเปเบเบเบธเบเปเบเบทเปเบญเบกเบเปเป, เบเบฑเปเบเบเบฑเปเบเปเบกเบทเปเบญเบเปเบฒเบเบฒเบกเปเบเบตเบเบเบทเปเบเบงเปเบฒ "เบญเบฑเบเปเบเบเบตเบเบตเปเบชเบธเบ?" เบซเบผเบท "เบญเบฑเบเปเบเบเบทเบเบเปเบญเบ?" เบเบงเบเปเบฎเบปเบฒเบเปเปเปเบเปเบชเบนเบเปเบชเบเบเบฒเบเบเบญเบเบเบงเบเปเบฎเบปเบฒ. เปเบเบเปเบฅเบฐเบเบตเบเบญเบเบเบงเบเปเบฎเบปเบฒ, เบเบงเบเปเบฎเบปเบฒ stuck เบเบฑเบเบเบงเบฒเบกเบเบดเบ เปเบเปเบโเปเบเบโเปเบฅเบฐโเบเบปเบโเบเบญเบโ: เบเบงเบเปเบฎเบปเบฒเปเบเบเปเบเบเบชเปเบฒเบเบเบทเปเบเบเบฒเบเบญเบญเบเปเบเบฑเบเบเปเบญเบเบเปเบญเบเป/เบญเบดเบ. เบงเบดเบเบตเบเบฒเบเบเบตเปเบเปเบงเบเปเบซเปเบเปเบฒเบเบชเบฒเบกเบฒเบเปเบญเบปเบฒเปเบเบเบชเปเบฒเบเบเบทเปเบเบเบฒเบเบเบตเปเปเบเบเบเปเบฝเบง, เปเบเบปเปเบฒเปเบเบชเบดเปเบเบเบตเปเบกเบฑเบเปเบฎเบฑเบ, เบเบงเบกเปเบญเบปเบฒเบกเบฑเบเบเปเบงเบเบเบฒเบเบเบปเบเบชเบญเบเปเบฅเบฐเบเปเบฝเบเปเบเบเบกเบฑเบเปเบเบเบเปเปเบกเบตเบเบงเบฒเบกเบขเปเบฒเบเบเบปเบงเบเบตเปเบเบฐเบเปเบฒเบฅเบฒเบเบชเบดเปเบเปเบ.
เบกเบฑเบ turns เปเบซเปโเปเบซเบฑเบโเบงเปเบฒโเบเบฒเบโเบเบปเบโเบชเบญเบโเบเบทเปเบโเบเบฒเบโเปเบเบโเบฅเปเบฒเบโเบเบฒเบโเปเบเบฑเบโเบเบทเปเบโเบเบฒเบโเบเบตเปโเบชเปเบฒโเบเบฑเบโเปเบฅเบฐโเปเบโเบเบตเปโเบเบตเปโเบกเบฑเบโเบเบงเบโเบเบฐโเบเปเบฒเบงโเปเบเบดเบ pyramid เบเบฒเบโเบเบปเบโเบชเบญเบโเปเบเบโเบฅเปเบฒเบโเบเบทเปเบโเบเบฒเบโ. เปเบเปเบเบดเบเปเบฅเปเบงเปเบเบงเบเบงเบฒเบกเบเบดเบเบเบฝเบงเบเบฑเบเบเบฑเบเบเบฒเบเบเบฑเบเบเบฐเบเบฒ, เปเบเปเบชเปเบฒเบฅเบฑเบเปเบเบเบชเปเบฒเบเบเบทเปเบเบเบฒเบ: เบเบงเบเปเบฎเบปเบฒเบเปเบฒเบฅเบฑเบเปเบเบทเปเบญเบเบเปเบฒเบเบเบฒเบเบเบฒเบเบเบปเบเบชเบญเบเปเบงเบฅเบฒเบเบฒเบเบทเบเบเบตเปเบเบงเบเปเบเบดเปเบเบชเบดเปเบเบเบตเปเบเปเบฒเบเบเบฒเบ, เปเบเบฑเปเบ: indentation, เปเบเบซเบฒเบเบฒเบเบเบปเบเบชเบญเบเปเบเบฑเบกเบเบฐเบชเบดเบเบเบดเบเบฒเบเบฅเบฒเบเบฒเปเบเบเบเบตเป deploy เปเบเบเบฅเปเบฒเบเบเบทเปเบเบเบฒเบเบเบฑเบเบซเบกเบปเบ.
เบเบงเบฒเบกเบเบฐเบเบฒเบเบฒเบกเบเบปเบเบชเบญเบ Ansible
เบเปเบญเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเบเบฐเปเบเบญเบฐเบเบดเบเบฒเบเบงเบดเบเบตเบเบฒเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเบเบงเบกเปเบญเบปเบฒเบเบฒเบเบเบปเบเบชเบญเบ Ansible เปเบเปเบเบเบเบฒเบ, เบเปเบญเบเบเบฐเบญเบฐเบเบดเบเบฒเบเบเบงเบฒเบกเบเบฐเบเบฒเบเบฒเบกเปเบฅเบฐเบงเบดเบเบตเบเบฒเบเบเบตเปเบเปเบญเบเบกเบตเปเบญเบเบฒเบเบเบตเปเบเบฐเปเบเปเบเปเบญเบเบซเบเปเบฒเบเบตเปเปเบเบทเปเบญเปเบเบปเปเบฒเปเบเบชเบฐเบเบฒเบเบเบฒเบเบเบญเบเบเบฒเบเบเบฑเบเบชเบดเบเปเบ.
เบงเบฑเบเบเบต -997: เบเบฒเบเบชเบฐเบซเบเบญเบ SDS
เบเบฑเปเบเบเบณเบญเบดเบเบเบตเปเบเปเบญเบเบเบปเบเบชเบญเบ Ansible เปเบกเปเบเบขเบนเปเปเบเปเบเบเบเบฒเบเบเบฑเบเบเบฐเบเบฒ SDS (Software Defined Storage). เบกเบตเบเบปเบเบเบงเบฒเบกเปเบเบเบเปเบฒเบเบซเบฒเบเบเปเบฝเบงเบเบฑเบเบซเบปเบงเบเปเปเบเบตเป
เบกเบทเป # -701: เปเบฎเบทเบญเบเบเบปเบง Ansible เปเบฅเบฐเบเบปเบเบชเบญเบ
เบเบฒเบโเบเบฑเบโเบเบฐโเบเบฒโเบเบญเบโเบเบงเบฒเบกโเบเบดเบโเบเบฒเบโเบเบปเบโเบชเบญเบ Ansible เปเบกเปเบโเบเบฒเบโเบเปเบฒโเปเบเปโเปเบเบทเปเบญเบโเบกเบทโเบเบตเปโเบเบฝเบกโเบเปเบญเบกโ, เบเบทโเบซเปเบญเบโเบเบปเบงโเบเบปเบโเบชเบญเบ / kitchen-ci เปเบฅเบฐ inspecโ. เบเบฒเบเปเบฅเบทเบญเบเปเบเปเบเบทเบเบเปเบฒเบเบปเบเปเบเบเบเบงเบฒเบกเบฎเบนเปเบเบญเบ Ruby (เบชเปเบฒเบฅเบฑเบเบฅเบฒเบเบฅเบฐเบญเบฝเบเปเบเบตเปเบกเปเบเบตเบก, เปเบเบดเปเบเบเบปเบเบเบงเบฒเบกเบเปเบฝเบงเบเบฑเบ Habrรฉ:
เปเบเบเบเบปเปเบงเปเบ, เบเบฒเบเปเบเปเปเบเปเบเปเปเบฎเบฑเบเบงเบฝเบ, เปเบเปเบกเบตเบเบฐเบเบญเบเบเบฒเบเบญเบฑเบเปเบเบทเปเบญเบเบเบฒเบเบเบงเบฒเบกเปเบเบเบเปเบฒเบเบเบฑเบ. เปเบกเบทเปเบญเบเปเบฒเบเบงเบเบเบปเบเบเบตเปเบเบทเบเบเบปเบเบชเบญเบเปเบเปเปเบเบตเปเบกเบเบถเปเบเปเบเบดเบ 13 เบเบปเบเบเบฒเบเบเบทเปเบเบเบฒเบเปเบฅเบฐ 2 เบเบปเบเบเบฒเบ meta เบเบฐเบชเบปเบกเบเบฐเบชเบฒเบเบเบฑเบเบเบปเบเบเบฒเบเบเบฐเบซเบเบฒเบเบเปเบญเบเบเบงเปเบฒ, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเบฑเบเบเบตเบเบฑเบเปเบเบเบฒเบเบเบปเบเบชเบญเบเปเบฅเบตเปเบกเบเปเบฒเปเบเบตเบเบเบฒเบเบชเปเบฒเบฅเบฑเบ 70 เบเบฒเบเบต, เปเบเบดเปเบเปเบเบทเบญเบ 2 เปเบเบปเปเบฒ. เบกเบฑเบเปเบเบฑเบเบเบฒเบเบเบฒเบเบเบตเปเบเบฐเปเบงเบปเปเบฒเบเปเบฝเบงเบเบฑเบ XP (เบเบฒเบเบเบฝเบเปเบเบฅเปเบเบฅเบกเบเบตเปเบฎเบธเบเปเบฎเบ) เบเบฒเบเบเบฐเบเบดเบเบฑเบเปเบเบฒเบฐเบงเปเบฒ ... เบเปเปเบกเบตเปเบเบเปเบญเบเบเบฒเบเบฅเปเบเปเบฒ 70 เบเบฒเบเบต. เบเบตเปเปเบกเปเบเปเบซเบเบเบปเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเปเบฝเบเบงเบดเบเบตเบเบฒเบ
เบกเบทเป # -601: Ansible เปเบฅเบฐเปเบกเปเบฅเบเบธเบ
Conceptually, เบเบตเปเปเบกเปเบเบเปเบฒเบเบเบทเบเบฑเบเบเบฑเบ testkitchen, เบเบฝเบเปเบเปเบเบงเบเปเบฎเบปเบฒเบเปเบฒเบเบเบฒเบเบเบปเบเบชเบญเบเบเบปเบเบเบฒเบเปเบเบฑเบ docker เปเบฅเบฐเบเปเบฝเบ stack เปเบเป. เบเบฑเปเบเบเบฑเปเบ, เปเบงเบฅเบฒเปเบเปเบเบทเบเบซเบผเบธเบเบฅเบปเบเปเบเบฑเบเบเบงเบฒเบกเบซเบกเบฑเปเบเบเบปเบ 20-25 เบเบฒเบเบตเบชเปเบฒเบฅเบฑเบ 7 เบเบฒเบฅเบฐเบเบปเบเบเบฒเบ.
เปเบเบเบเบฒเบเปเบเบตเปเบกเบเปเบฒเบเบงเบเบเบญเบเบเบปเบเบเบฒเบเบเบฒเบเบเบปเบเบชเบญเบเปเบเบฑเบ 17 เปเบฅเบฐ linting 45 เบเบฒเบฅเบฐเบเบปเบเบเบฒเบ, เบเบงเบเปเบฎเบปเบฒเบเปเบฒเปเบเบตเบเบเบฒเบเบเบตเปเปเบ 28 เบเบฒเบเบตเบเปเบฝเบงเบเบฑเบ 2 jenkins เบชเปเบฒเบฅเบญเบ.
เบงเบฑเบเบเบต #167: เปเบเบตเปเบกเบเบฒเบเบเบปเบเบชเบญเบ Ansible เปเบเบปเปเบฒเปเบเปเบเบเบเบฒเบ
เบชเปเบงเบเบซเบผเบฒเบเบญเบฒเบเบเบฐ, เบกเบฑเบเปเบเบฑเบเปเบเบเปเปเปเบเปเบเบตเปเบเบฐเปเบฎเบฑเบเบซเบเปเบฒเบเบตเปเบเบฒเบเบเบฐเบเบดเบชเบฑเบเบเบญเบเบขเปเบฒเบเบฎเบตเบเบเปเบงเบ. เบงเบฝเบเบเบฒเบเบเปเบญเบเปเบเปเบฎเบฑเบเบเบฒเบเบงเบฑเบเปเบเบเปเบเบทเปเบญเปเบซเปเบเปเบฒเบเบชเบฒเบกเบฒเบเบเปเบฒเบฅเบฒเบเบกเบฑเบเปเบเบฑเบเบเปเบญเบเบเปเบญเบเปเปเบฅเบฐเบเบดเบเบเบดเปเบเบชเปเบงเบเบเบญเบเบเปเบฒเบเบเปเบงเบเบเปเบงเบเบเบฒเปเบ. เบเปเบญเบเบกเบตเบเบงเบฒเบกเปเบเบปเปเบฒเปเบเบเปเบฝเบงเบเบฑเบเบงเปเบฒเบเปเบฒเบเบเปเบฒเบฅเบฑเบเบเปเบฒเบงเปเบเปเบเบเบดเบเบเบฒเบเบเบตเปเบเบทเบเบเปเบญเบ, เปเบฅเบเบฐเปเบงเบฅเบฒเบเบตเปเบเบฐเปเบ.
เปเบเบเบเบปเปเบงเปเบ, เบกเบฑเบเบเปเปเบชเปเบฒเบเบฑเบเบงเปเบฒเบกเบฑเบเบเบฐเปเบฎเบฑเบเปเบเบงเปเบ, เบเปเบฒเบเบชเบฒเบกเบฒเบเบเบฝเบเปเบชเปเปเบเปเบ, เบเปเบฒเบเบชเบฒเบกเบฒเบเปเบชเปเบชเบฐเบเบดเบเปเบเบตเปเบ closet, เบเปเบฒเบเบชเบฒเบกเบฒเบเบชเปเบฒเบเบงเบฝเบเบเบฒเบเปเบ Jira, เบซเบผเบทเบเปเบฒเบเบชเบฒเบกเบฒเบเปเบเบตเบ Google Docs เปเบฅเบฐเบเบฝเบเบชเบฐเบเบฒเบเบฐเบเบฒเบเบเบฐเบเบธเบเบฑเบ. เบขเบนเปเบเบตเปเบเบฑเปเบ. เบเบฒเบเบฐเบซเบเบฒเบเบเบปเบงเบเบฒเบเบเบงเบฒเบกเบเบดเบเบเบตเปเบงเปเบฒเบเบฐเบเบงเบเบเบฒเบเบเปเปเบเบฑเบเบเบตเบเบฑเบเปเบ, เบกเบฑเบเบเบฐเบเบฒเบงเปเบฅเบฐเบซเบเปเบฒเปเบเบทเปเบญเบซเบเปเบฒเบ. เบกเบฑเบเบเปเปเปเปเบฒเบเบฐเปเบเบฑเบเปเบเปเบเปเบงเปเบฒเปเบเบขเบฒเบเปเบซเปเปเบเบปเปเบฒเปเบเบปเบฒเบเบฒเบเบเบงเบฒเบกเบเบดเบ, เปเบกเบทเปเบญเบเบฅเปเบฒ, เปเบฅเบฐ เบเบปเบกเบขเบนเปเปเบเบฅเบฐเบซเบงเปเบฒเบเบเบฒเบเบเบทเปเบเบเบน.
เบเบฒเบ refactoring เปเบกเปเบเบเปเบฒเบเบเบฒเบ:
- เบเบดเบเปเบเบปเปเบฒ.
- เบเบญเบ.
- เบฅเบฐเบซเบฑเบ.
- เบเบฒเบเบเบปเบเบชเบญเบ IaC.
- Repeat
เปเบฅเบฐเบเบงเบเปเบฎเบปเบฒเปเบฎเบฑเบเปเบฅเบทเปเบกเบเบทเบเบเบตเปเบเบปเบเบเปเบงเบฒเบเบงเบเปเบฎเบปเบฒเบเบฑเบเบฅเบธเปเบเบปเปเบฒเบซเบกเบฒเบเบเบตเปเบเบฑเปเบเปเบงเป.
เบกเบฑเบเบญเบฒเบเบเบฐเปเบเบฑเบเปเบเบเปเปเปเบเปเบเบตเปเบเบฐเปเบฅเบตเปเบกเบเบปเปเบเบเบฒเบเบเบปเบเบชเบญเบเบเบธเบเบขเปเบฒเบเปเบเบเบฑเบเบเบต, เบเบฑเปเบเบเบฑเปเบเบงเบฝเบเบเบฒเบเบเปเบฒเบญเบดเบเบเบญเบเบเบงเบเปเบฎเบปเบฒเปเบกเปเบเปเบเบทเปเบญเปเบฅเบตเปเบกเบเบปเปเบเบเปเบงเบ linting เปเบฅเบฐเบเบงเบเปเบเบดเปเบ syntax.
เบงเบฑเบเบเบต #181: Green Build Master
Linting เปเบเบฑเบเบเบฒเบเบเปเบฒเบงเบเปเบฒเบญเบดเบเบเบฐเบซเบเบฒเบเบเปเบญเบเปเบเบชเบนเป Green Build Master. เบเบตเปเบเบฐเบเปเปเบเปเบฒเบฅเบฒเบเปเบเบทเบญเบเบเบธเบเบขเปเบฒเบ, เปเบเปเบกเบฑเบเบเบฐเบเปเบงเบเปเบซเปเบเปเบฒเบเบชเบฒเบกเบฒเบเปเบเปเปเบเบเบฐเบเบงเบเบเบฒเบเบเปเบฒเบเปเปเบฅเบฐเบชเปเบฒเบเบเบฒเบเบชเปเบฒเบเบชเบตเบเบฝเบงเปเบ Jenkins. เปเบเบงเบเบงเบฒเบกเบเบดเบเปเบกเปเบเปเบเบทเปเบญเบเบฑเบเบเบฐเบเบฒเบเบดเปเบชเบฅเบฐเบซเบงเปเบฒเบเบเบตเบกเบเบฒเบ:
- เบเบฒเบเบเบปเบเบชเบญเบเบชเบตเปเบเบเปเบกเปเบเบเปเปเบเบต.
- เบเปเบฒเบเบฐเปเบเบปเปเบฒเปเบเปเบกเบฒเปเบเบทเปเบญเปเบเปเปเบเบเบฒเบเบชเบดเปเบเบเบฒเบเบขเปเบฒเบเปเบฅเบฐเปเบเปเบงเบฅเบฒเบเบฝเบงเบเบฑเบเปเบฎเบฑเบเปเบซเปเบฅเบฐเบซเบฑเบเปเบฅเบฑเบเบเปเบญเบเบเบตเบเบงเปเบฒเบกเบฑเบเบเปเบญเบเบเปเบฒเบ.
เบกเบทเป #193: เบเบฒเบ linting เบเบฑเบเบเบฒเบเบเบปเบเบชเบญเบเบซเบเปเบงเบ
เปเบเปเบชเปเบฒเบเบเบฐเบเบงเบเบเบฒเบเบเบญเบเบเบฒเบเปเบเปเบฎเบฑเบเบฅเบฐเบซเบฑเบเปเบเบปเปเบฒเปเบเปเบเปเบกเปเบเบปเบ, เบเปเบฒเบเบชเบฒเบกเบฒเบเปเบฅเบตเปเบกเบเบปเปเบเบเบฐเบเบงเบเบเบฒเบเบเบฑเบเบเบธเบเปเบเบทเปเบญเบฅเบฐเบเปเบฒเบง - เบเบฒเบเบเปเบฝเบเปเบเบ linting เบเบฑเบเบเบปเบเบเบฒเบเบเบฒเบเปเบเบตเบเบเบปเบง, เบเปเบฒเบเบเปเปเบชเบฒเบกเบฒเบเปเบฎเบฑเบเบกเบฑเบเปเบเปเปเบเบเบเปเปเบกเบตเบเบฒเบ idempotency. เบเปเบฒเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเปเบเบปเปเบฒเปเบเบงเบดเบเบตเบเบฒเบเบเบฐเบเบดเบเบฑเบเบเบฒเบฅเบฐเบเบปเบเบเบฒเบเปเบฅเบฐเบงเบดเบเบตเบเบฒเบเปเบฎเบฑเบเบงเบฝเบ.
เบงเบฑเบเบเบต #211: เบเบฒเบเบซเบเปเบงเบเบเบฒเบเปเบเบซเบฒเบเบฒเบเบเบปเบเบชเบญเบเบเบฒเบเปเบเบทเปเบญเบกเปเบเบ
เปเบเปเบงเบฅเบฒเบเบตเปเบเบฒเบฅเบฐเบเบปเบเบเบฒเบเบชเปเบงเบเปเบซเบเปเบเบทเบเบเบปเบเบเบธเบกเบเปเบงเบเบเบฒเบเบเบปเบเบชเบญเบเบซเบเปเบงเบเบเบฒเบเปเบฅเบฐเบเบธเบเบชเบดเปเบเบเบธเบเบขเปเบฒเบเปเบกเปเบ linted, เบเปเบฒเบเบชเบฒเบกเบฒเบเบเปเบฒเบงเปเบเบชเบนเปเบเบฒเบเปเบเบตเปเบกเบเบฒเบเบเบปเบเบชเบญเบเบเบฒเบเปเบเบทเปเบญเบกเปเบเบ. เปเบซเบผเบปเปเบฒเบเบฑเปเบ. เบเบฒเบเบเบปเบเบชเบญเบเบเปเปเปเบกเปเบเบเบดเบเบเบตเปเบเบฝเบงเปเบเปเบเบเบชเปเบฒเบเบเบทเปเบเบเบฒเบ, เปเบเปเบเบฒเบเบฅเบงเบกเบเบฑเบเบเบญเบเบเบงเบเบกเบฑเบ, เบชเปเบฒเบฅเบฑเบเบเบปเบงเบขเปเบฒเบ, เบเบฒเบเบเบฑเปเบเบเปเบฒเบเบปเบงเบขเปเบฒเบเปเบเบฑเบกเบฎเบนเบเปเบเบ.
เบเบฒเบเบเปเบฒเปเบเป jenkins, เบเบงเบเปเบฎเบปเบฒเปเบเปเบชเปเบฒเบเบซเบผเบฒเบเบเบฑเปเบเบเบญเบเบเบตเป linted เบเบฒเบฅเบฐเบเบปเบเบเบฒเบ / playbooks เปเบเบเบฐเบซเบเบฒเบ, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเบฒเบเบเบปเบเบชเบญเบเบซเบเปเบงเบเบเบฒเบเปเบ containers, เปเบฅเบฐเบชเบธเบเบเปเบฒเบเบเบฒเบเบเบปเบเบชเบญเบเบเบฒเบเปเบเบทเปเบญเบกเปเบเบ.
Jenkins + Docker + Ansible = เบเบฒเบเบเบปเบเบชเบญเบ
- Checkout repo เปเบฅเบฐเบชเปเบฒเบเบเบฑเปเบเบเบญเบเบเบฒเบเบเปเปเบชเปเบฒเบ.
- เบเปเบฒเปเบเบตเบเบเบฒเบเบเบฑเปเบเบเบญเบเบเบญเบเบเบทเปเบกเบซเบผเบดเปเบ lint เปเบเบเบฐเบซเบเบฒเบ.
- เบเปเบฒเปเบเบตเบเบเบฒเบเบเบฑเปเบเบเบญเบเบเบฒเบฅเบฐเบเบปเบเบเบฒเบเบเบญเบ lint เปเบเบเบฐเบซเบเบฒเบ.
- เบเปเบฒเปเบเบตเบเบเบฑเปเบเบเบญเบเบเบฒเบเบเบงเบเบชเบญเบ syntax เปเบเบเบฐเบซเบเบฒเบ.
- เบเปเบฒเปเบเบตเบเบเบฑเปเบเบเบญเบเบเบฒเบเบเบปเบเบชเบญเบเบเบปเบเบเบฒเบเปเบเบเบฐเบซเบเบฒเบ.
- เบเบปเบเบเบฒเบเบเบญเบ Lint.
- เบเบงเบเบชเบญเบเบเบฒเบเบเบถเปเบเบเบฑเบเบเบปเบเบเบฒเบเบญเบทเปเบเป.
- เบเบงเบเปเบเบดเปเบ syntax.
- เบชเปเบฒเบ docker instance
- เบเปเบฒเปเบเบตเบเบเบฒเบ molecule/default/playbook.yml.
- เบเบงเบโเบชเบญเบโเบเบงเบฒเบกโเปเบเบฑเปเบกโเปเบเบโ.
- เบเปเบฒเปเบเบตเบเบเบฒเบเบเบปเบเบชเบญเบเบเบฒเบเปเบเบทเปเบญเบกเปเบเบ
- เบชเปเบฒโเปเบฅเบฑเบโเบฎเบนเบ
เบงเบฑเบเบเบต #271: เบเบฑเบเปเบเบฅเบปเบเปเบก
เปเบเบเบญเบเบเปเบฒเบญเบดเบ, refactoring เปเบกเปเบเบเปเบฒเปเบเบตเบเปเบเบเบเบธเปเบกเบเบฐเบซเบเบฒเบเบเปเบญเบเบเบญเบเบชเบญเบเบซเบผเบทเบชเบฒเบกเบเบปเบ. เบเบงเบเปเบเบปเบฒเปเบเบปเปเบฒเปเบเปเบเบปเบเบเบงเบเบเบทเบเบฅเบฐเบซเบฑเบเปเบเปเบกเปเบเบปเบ. เปเบเปเบฅเบเบฐเปเบงเบฅเบฒ, เบเบตเบกเบเบฒเบเบเบฑเบเบเบฐเบเบฒเบเบงเบฒเบกเบฎเบนเปเบเปเบฝเบงเบเบฑเบเบงเบดเบเบตเบเบฒเบเบเบฝเบเบฅเบฐเบซเบฑเบเปเบฅเบฐเบเบฒเบเบเบปเบเบเบงเบเบฅเบฐเบซเบฑเบเปเบเปเบเบฐเบเบญเบเบชเปเบงเบเปเบเบปเปเบฒเปเบเบเบฒเบเปเบเบตเบเปเบเปเบเบงเบฒเบกเบฎเบนเปเบเปเบฝเบงเบเบฑเบเปเบเบเบชเปเบฒเบเบเบทเปเบเบเบฒเบเปเบฅเบฐเบงเบดเบเบตเบเบฒเบเปเบฎเบฑเบเบงเบฝเบ. เบเบธเบเปเบเบฑเปเบเบขเบนเปเบเบตเปเบเบตเปเปเบกเปเบเบงเปเบฒเบเบฑเบเบเบปเบเบเบงเบเปเบเปเบเบทเบเปเบฅเบทเบญเบเบซเบเบถเปเบเปเบเบเบซเบเบถเปเบ, เบญเบตเบเบเบฒเบกเบเบฒเบเบฐเบฅเบฒเบ, i.e. เบเปเบงเบเบฅเบฐเบเบฑเบเบเบงเบฒเบกเปเบเบฑเบเปเบเปเบเปเบเบตเปเปเบเบปเปเบฒเบเบฐเบเปเบฒเบงเปเบเบปเปเบฒเบชเบนเปเปเบเบเบชเปเบฒเบเบเบทเปเบเบเบฒเบเปเปเป.
เปเบฅเบฐเบกเบฑเบเบเบงเบเบเบฐเบชเบฐเบเบงเบเบชเบฐเบเบฒเบเบขเบนเปเบเบตเปเบเบตเป. เบกเบฑเบเบชเบฐเบเบงเบเบเบตเปเบเบฐเปเบฎเบฑเบเบเบฒเบเบเบปเบเบเบงเบ, เปเบเบดเปเบเปเบเบเบญเบเบเบญเบเบชเบดเปเบเบเบตเปเบกเบฑเบเปเบฎเบฑเบเปเบเป, เปเบฅเบฐเบเบฐเบซเบงเบฑเบเบชเบฒเบเบเบญเบเบเบฒเบเบชเบปเบเบเบฐเบเบฒ. เบเบงเบเปเบฎเบปเบฒเปเบเปเบเบฐเบชเบปเบกเบเบฐเบชเบฒเบ jenkins + bitbucket + jira.
เปเบเปเบเบฑเปเบเบเบฑเปเบ, เบเบฒเบเบเบปเบเบเบงเบเบเบทเบเบเปเปเปเบกเปเบ panacea; เบเบฒเบเบขเปเบฒเบ, เบเบงเบเปเบฎเบปเบฒเปเบเปเปเบเบปเปเบฒเปเบเปเบเบฅเบฐเบซเบฑเบเบเบปเปเบเบชเบฐเบเบฑเบ, เปเบเบดเปเบเปเบฎเบฑเบเปเบซเปเบเบงเบเปเบฎเบปเบฒเบเบปเบเบชเบญเบ flop:
- get_url:
url: "{{ actk_certs }}/{{ item.1 }}"
dest: "{{ actk_src_tmp }}/"
username: "{{ actk_mvn_user }}"
password: "{{ actk_mvn_pass }}"
with_subelements:
- "{{ actk_cert_list }}"
- "{{ actk_certs }}"
delegate_to: localhost
- copy:
src: "{{ actk_src_tmp }}/{{ item.1 }}"
dest: "{{ actk_dst_tmp }}"
with_subelements:
- "{{ actk_cert_list }}"
- "{{ actk_certs }}"
เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ, เบเบงเบเปเบเบปเบฒเปเบเบปเปเบฒเปเบเปเปเบเปเปเบเบกเบฑเบ, เปเบเปเบเบฐเบเบญเบเบเบฑเบเบเบปเบเบขเบนเป.
get_url:
url: "{{ actk_certs }}/{{ actk_item }}"
dest: "{{ actk_src_tmp }}/{{ actk_item }}"
username: "{{ actk_mvn_user }}"
password: "{{ actk_mvn_pass }}"
loop_control:
loop_var: actk_item
with_items: "{{ actk_cert_list }}"
delegate_to: localhost
- copy:
src: "{{ actk_src_tmp }}/{{ actk_item }}"
dest: "{{ actk_dst_tmp }}"
loop_control:
loop_var: actk_item
with_items: "{{ actk_cert_list }}"
เบงเบฑเบเบเบต #311: เปเบฅเบฑเปเบเบเบฒเบเบเบปเบเบชเบญเบ
เปเบกเบทเปเบญเปเบงเบฅเบฒเบเปเบฒเบเปเบ, เบกเบตเบเบฒเบเบเบปเบเบชเบญเบเบซเบผเบฒเบเบเบถเปเบ, เบเบฒเบเบเปเปเบชเปเบฒเบเปเบฅเปเบเบเปเบฒเบฅเบปเบ, เปเบเบดเบเบซเบเบถเปเบเบเบปเปเบงเปเบกเบเปเบเบเปเบฅเบฐเบเบตเบเบตเปเบฎเปเบฒเบเปเบฎเบเบเบตเปเบชเบธเบ. เปเบเบซเบเบถเปเบเบเบญเบ retros เบกเบตเบเบฐเปเบซเบเบเบเบตเปเบเปเบฒเบเบเบท "เบกเบฑเบเบเบตเบเบตเปเบกเบตเบเบฒเบเบเบปเบเบชเบญเบ, เปเบเปเบกเบฑเบเบเปเบฒ." เบเบฑเปเบเบเบฑเปเบ, เบเบงเบเปเบฎเบปเบฒเบเบฐเบเบดเปเบกเบเบฒเบเบเบปเบเบชเบญเบเบเบฒเบเปเบเบทเปเบญเบกเปเบเบเปเบเปเบเบทเปเบญเบ virtual เปเบฅเบฐเบเบฑเบเปเบเบเปเบซเปเปเบเบปเบฒเปเบเบปเปเบฒเบชเปเบฒเบฅเบฑเบ Docker เปเบเบทเปเบญเปเบฎเบฑเบเปเบซเปเบกเบฑเบเปเบงเบเบถเปเบ. เบเบงเบเปเบฎเบปเบฒเบเบฑเบเปเบเปเบเปเบฝเบเปเบเบ testinfra เบเปเบงเบเบเบปเบงเบขเบฑเปเบเบขเบทเบ ansible เปเบเบทเปเบญเบซเบผเบธเบเบเปเบญเบเบเปเบฒเบเบงเบเปเบเบทเปเบญเบเบกเบทเบเบตเปเปเบเป.
เปเบงเบปเปเบฒเบขเปเบฒเบเปเบเบฑเปเบกเบเบงเบ, เบกเบตเบเบธเบเบเบญเบเบกเบฒเบเบเบฐเบเบฒเบ:
- เบเปเบฝเบเปเบเบฑเบ docker.
- เปเบญเบปเบฒเบเบฒเบเบเบปเบเบชเบญเบเบเบปเบเบเบฒเบ, เบเบตเปเบเปเปเบฒเบเบฑเบเปเบเบทเปเบญเบเบเบฒเบเบเบฒเบเบเบถเปเบเบเบฑเบ.
- เปเบเบตเปเบกเบเปเบฒเบเบงเบเบชเปเบฒเบฅเบญเบ.
- เบเบปเบเบชเบญเบเบเปเบฒเบชเบฑเปเบเปเบฅเปเบ.
- เบเบงเบฒเบกเบชเบฒเบกเบฒเบเปเบเบเบฒเบ lint เบเบฑเบเปเบปเบ เบเปเบญเบเบเบดเปเบเบเปเบงเบเบเปเบฒเบชเบฑเปเบเบเบฝเบง.
เบเบฑเปเบเบเบฑเปเบ, Pipeline on jenkins เบเบฑเบเปเบเปเปเบเบฑเบเปเบญเบเบฐเบเบฒเบ
- เบชเปเบฒเบเบเบฑเปเบเบเบญเบเบเบฒเบเบเปเปเบชเปเบฒเบ.
- Lint เบเบฑเบเบซเบกเบปเบเปเบเบเบฐเบซเบเบฒเบ.
- เบเปเบฒเปเบเบตเบเบเบฑเปเบเบเบญเบเบเบฒเบเบเบปเบเบชเบญเบเบเบปเบเบเบฒเบเปเบเบเบฐเบซเบเบฒเบ.
- Finish
เบเบญเบโเบเบญเบโเบเบปเบโเบฎเบฝเบ
เบซเบผเบตเบเปเบงเบฑเปเบเบเบปเบงเปเบเบเบปเปเบงเปเบฅเบ
Ansible เปเบเปเบเบปเบงเปเบเบเบปเปเบงเปเบฅเบ, เบกเบตเบเบฒเบเปเบเปเปเบเบเบฒเบเบชเปเบงเบเปเบเบฎเบนเบเปเบเบ
เปเบซเปเบเปเบญเบเบเบปเบเบเบปเบงเบขเปเบฒเบเปเบซเปเปเบเบปเปเบฒ. เปเบซเปเบเบงเบเปเบฎเบปเบฒเบกเบต role_a
ะธ role_b
# cat role_a/defaults/main.yml
---
msg: a
# cat role_a/tasks/main.yml
---
- debug:
msg: role_a={{ msg }}
# cat role_b/defaults/main.yml
---
msg: b
# cat role_b/tasks/main.yml
---
- set_fact:
msg: b
- debug:
msg: role_b={{ msg }}
- hosts: localhost
vars:
msg: hello
roles:
- role: role_a
- role: role_b
tasks:
- debug:
msg: play={{msg}}
เบชเบดเปเบเบเบตเปเบเบฐเบซเบฅเบปเบเปเบกเปเบเบงเปเบฒเบเบปเบเปเบเปเบฎเบฑเบเบเบญเบ playbooks เบเบฐเบเบถเปเบเบเบฑเบเบชเบดเปเบเบเบตเปเบเปเปเบเบฑเบเปเบเบเบชเบฐ เปเปเบต เปเบ, เปเบเบฑเปเบ: เบฅเปเบฒเบเบฑเบเบเบตเปเบเบฒเบฅเบฐเบเบปเบเบเบฒเบเบเบทเบเบฅเบฐเบเบธเปเบงเป. เปเบเปเบซเบเปเบฒเปเบชเบเบเบฒเบ, เบเบตเปเปเบกเปเบเบฅเบฑเบเบชเบฐเบเบฐเบเบญเบ Ansible เปเบฅเบฐเบชเบดเปเบเบเบตเปเบเบตเบเบตเปเบชเบธเบเบเบตเปเบชเบฒเบกเบฒเบเปเบฎเบฑเบเปเบเปเปเบกเปเบเบเบฒเบเบเปเบฒเปเบเปเบเบฒเบเบเบฐเปเบเบเบเบญเบเบเปเปเบเบปเบเบฅเบปเบ, เบเบปเบงเบขเปเบฒเบ, เบเบฒเบเปเบเบเบปเบเบเบฒเบ, เปเบเปเบเบฝเบเปเบเปเบเบปเบงเปเบเบเบตเปเบญเบฐเบเบดเบเบฒเบเปเบเบเบฒเบฅเบฐเบเบปเบเบเบฒเบเบเบตเป.
BAD: เปเบเปเบเบปเบงเปเบเบเบปเปเบงเปเบฅเบ.
# cat roles/some_role/tasks/main.yml
---
debug:
var: java_home
GOOD: เบงเบต defaults
เบเปเบฒเบเบปเบเบเบปเบงเปเบเบเบตเปเบเปเบฒเปเบเบฑเบเปเบฅเบฐเบเปเปเบกเบฒเปเบเปเบเบฝเบเปเบเปเบเบงเบเบกเบฑเบ.
# cat roles/some_role/defaults/main.yml
---
r__java_home:
"{{ java_home | default('/path') }}"
# cat roles/some_role/tasks/main.yml
---
debug:
var: r__java_home
เบเบณเบเบณเปเปเบฒเบเบปเบงเปเบเบเบปเบเบเบฒเบ
BAD: เปเบเปเบเบปเบงเปเบเบเบปเปเบงเปเบฅเบ.
# cat roles/some_role/defaults/main.yml
---
db_port: 5432
GOOD: เปเบเบเบฒเบฅเบฐเบเบปเบเบเบฒเบเบชเปเบฒเบฅเบฑเบเบเบปเบงเปเบ, เปเบเปเบเบปเบงเปเบเบเบตเปเบเปเบฒเบซเบเปเบฒเบเปเบงเบเบเบทเปเบเบปเบเบเบฒเบ; เบเบตเป, เปเบเบเปเบเบดเปเบเบขเบนเปเปเบเบชเบดเบเบเปเบฒเบเบปเบเบเบฑเบ, เบเบฐเปเบฎเบฑเบเปเบซเปเปเบเบปเปเบฒเปเบเบเปเบฒเบเบเบถเปเบเบเปเบฝเบงเบเบฑเบเบชเบดเปเบเบเบตเปเปเบเบตเบเบเบถเปเบ.
# cat roles/some_role/defaults/main.yml
---
some_role__db_port: 5432
เปเบเปเบเบปเบงเปเบเบเบฒเบเบเบงเบเบเบธเบก loop
BAD: เปเบเปเบเบปเบงเปเบเบกเบฒเบเบเบฐเบเบฒเบเปเบ loops item
, เบเปเบฒเบงเบฝเบเบเบฒเบ / playbook เบเบตเปเบเบทเบเบฅเบงเบกเบขเบนเปเบเปเบญเบเปเบเบซเบเบถเปเบ, เบเบตเปเบญเบฒเบเบเบฐเบเปเบฒเปเบเบชเบนเปเบเบถเบเบเบดเบเปเบฒเบเบตเปเบเปเปเบเบฒเบเบเบดเบ
---
- hosts: localhost
tasks:
- debug:
msg: "{{ item }}"
loop:
- item1
- item2
GOOD: เบเปเบฒเบเบปเบเบเบปเบงเปเบเบเบทเบเปเบซเบกเปเปเบ loop เบเปเบฒเบ loop_var
.
---
- hosts: localhost
tasks:
- debug:
msg: "{{ item_name }}"
loop:
- item1
- item2
loop_control:
loop_var: item_name
เบเบงเบเปเบเบดเปเบเบเบปเบงเปเบเบเบฒเบเบเปเบญเบเบเปเปเบกเบนเบ
เบเบงเบโเปเบฎเบปเบฒโเปเบเปโเบเบปเบโเบฅเบปเบโเบเบตเปโเบเบฐโเบเปเบฒโเปเบเปโเบเปเบฒโเบเปเบฒโเบซเบเปเบฒโเบเบปเบงโเบเปเบฝเบโเปเบเบโเปเบเปโ; เบกเบฑเบโเบเบฐโเบเปเปโเปเบเบฑเบ superfluous เปเบโเบเบฒเบโเบเบงเบโเบชเบญเบโเบงเปเบฒโเบเบงเบโเปเบเบปเบฒโเปเบเบปเปเบฒโเปเบเปโเบเบทเบโเบเปเบฒโเบเบปเบโเปเบงเปโเบเบฒเบกโเบเบตเปโเบเบงเบโเปเบฎเบปเบฒโเบเบฒเบโเบซเบงเบฑเบโเปเบฅเบฐโ, เบชเปเบฒโเบฅเบฑเบโเบเบฒเบโเบเบปเบโเบเบปเบงโเบขเปเบฒเบโ, เบเปเปโเปเบเปโเบเบทเบโเบฅเบปเบโเบฅเปเบฒเบโเปเบเบโเบเปเบฒโเบซเบงเปเบฒเบโเปเบเบปเปเบฒ
GOOD: เบเบงเบเปเบเบดเปเบเบเบปเบงเปเบ.
- name: "Verify that required string variables are defined"
assert:
that: ahs_var is defined and ahs_var | length > 0 and ahs_var != None
fail_msg: "{{ ahs_var }} needs to be set for the role to work "
success_msg: "Required variables {{ ahs_var }} is defined"
loop_control:
loop_var: ahs_var
with_items:
- ahs_item1
- ahs_item2
- ahs_item3
เบซเบผเบตเบเปเบงเบฑเปเบเบงเบฑเบเบเบฐเบเบฒเบเบธเบเบปเบก hashes, เปเบเปเปเบเบเบชเปเบฒเบเบฎเบฒเบเบเบฝเบ
เบเปเบฒเบเบปเบเบเบฒเบเบเบฒเบเบงเปเบฒเบเบฐเบกเบต hash/dictionary เบขเบนเปเปเบเบเบปเบงเบเปเบฒเบเบปเบเบเบฒเบเบซเบเบถเปเบเบเบญเบเบกเบฑเบ, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ, เบเปเบฒเบเบงเบเปเบฎเบปเบฒเบเปเบญเบเบเบฒเบเบเปเบฝเบเบเบฒเบฅเบฒเบกเบดเปเบเบตเบเบญเบเบฅเบนเบเบซเบเบถเปเบ, เบเบงเบเปเบฎเบปเบฒเบเบฐเบเปเบญเบ override hash/dictionary เบเบฑเบเบซเบกเบปเบ, เปเบเบดเปเบเบเบฐเปเบเบตเปเบกเบเบงเบฒเบกเบชเบฑเบเบชเบปเบเปเบเบเบฒเบเบเบฑเปเบเบเปเบฒ.
BAD: เปเบเป hash/dictionary.
---
user:
name: admin
group: admin
GOOD: เปเบเปเปเบเบเบชเปเบฒเบเบเบปเบงเปเบเปเบ.
---
user_name: admin
user_group: "{{ user_name }}"
เบชเปเบฒเบเบเบถเปเบกเบซเบผเบดเปเบ เปเบฅเบฐเบเบปเบเบเบฒเบเบเบตเปเบเปเปเปเปเบฒเบฐเบชเบปเบก
เบเบฒเบฅเบฐเบเบปเบเบเบฒเบเปเบฅเบฐ playbooks เบเบฐเบเปเบญเบ ideempotent, เปเบเบทเปเบญเบเบเบฒเบเบงเปเบฒ เบซเบผเบธเบเบเปเบญเบเบเบฒเบเปเบฅเบทเปเบญเบเบเบฒเบเบเบฑเปเบเบเปเบฒ เปเบฅเบฐเบเบงเบฒเบกเบขเปเบฒเบเบเบปเบงเบเบตเปเบเบฐเบเปเบฒเบฅเบฒเบเบเบฒเบเบชเบดเปเบเบเบฒเบเบขเปเบฒเบ. เปเบเปเบเปเบฒเบเปเบฒเบเปเบเปเปเบกเปเบฅเบเบธเบ, เบเบตเปเปเบกเปเบเบเบถเบเบเบดเบเปเบฒเปเบฅเบตเปเบกเบเบปเปเบ.
เบซเบผเบตเบเปเบงเบฑเปเบเบเบฒเบเบเปเบฒเปเบเปเปเบกเบเบนเบ shell เบเปเบฒเบชเบฑเปเบ
เบเบฒเบเปเบเปเปเบกเบเบนเบ shell เบชเบปเปเบเบเบปเบเปเบซเปเบกเบต paradigm เบเปเบฒเบญเบฐเบเบดเบเบฒเบเบเบตเปเบเปเบฒเปเบเบฑเบ, เปเบเบเบเบตเปเบเบฐเปเบเบฑเบเบเบฒเบเบเบฐเบเบฒเบ, เปเบเบดเปเบเปเบเบฑเบเบซเบผเบฑเบเบเบญเบ Ansible.
เบเบปเบเบชเบญเบเบเบปเบเบเบฒเบเบเบญเบเปเบเบปเปเบฒเบเปเบฒเบเปเบกเปเบฅเบเบธเบ
เปเบกเปเบฅเบเบธเบเปเบเบฑเบเบชเบดเปเบเบเบตเปเบกเบตเบเบงเบฒเบกเบเบทเบเบซเบเบธเปเบเบซเบผเบฒเบ, เปเบซเปเปเบเบดเปเบเบชเบฐเบเบฒเบเบฐเบเบฒเบเบเปเบฒเบเบงเบเบซเบเปเบญเบเบซเบเบถเปเบ.
เปเบกเปเบฅเบเบธเบเบซเบผเบฒเบเบเบปเบงเบขเปเบฒเบ
ะ molecule.yml
เปเบเบเบฒเบ platforms
เบเปเบฒเบเบชเบฒเบกเบฒเบเบญเบฐเบเบดเบเบฒเบ hosts เบเปเบฒเบเบงเบเบซเบผเบฒเบเบเบตเปเบเปเบฒเบเบชเบฒเบกเบฒเบ deploy.
---
driver:
name: docker
platforms:
- name: postgresql-instance
hostname: postgresql-instance
image: registry.example.com/postgres10:latest
pre_build_image: true
override_command: false
network_mode: host
- name: app-instance
hostname: app-instance
pre_build_image: true
image: registry.example.com/docker_centos_ansible_tests
network_mode: host
เบเบฒเบกเบเบฑเปเบเปเบฅเปเบง, เปเบเบปเปเบฒเบเบฒเบเปเบซเบผเบปเปเบฒเบเบตเปเบชเบฒเบกเบฒเบเปเบเบฑเบ converge.yml
เปเบเป:
---
- name: Converge all
hosts: all
vars:
ansible_user: root
roles:
- role: some_role
- name: Converge db
hosts: db-instance
roles:
- role: some_db_role
- name: Converge app
hosts: app-instance
roles:
- role: some_app_role
เบเบปเบงเบเบดเบชเบนเบเบขเบทเบเบขเบฑเบ
เปเบเปเบกเปเบฅเบเบธเบเบกเบฑเบเปเบเบฑเบเปเบเปเบเปเบเบตเปเบเบฐเปเบเป ansible เปเบเบทเปเบญเบเบงเบเปเบเบดเปเบเบงเปเบฒเบเบปเบงเบขเปเบฒเบเปเบเปเบเบทเบเบเบฑเปเบเบเปเบฒเบขเปเบฒเบเบเบทเบเบเปเบญเบ, เบเบญเบเบเบฒเบเบเบฑเปเบ, เบเบตเปเปเบกเปเบเบเปเบฒเปเบฅเบตเปเบกเบเบปเปเบเบเบฑเบเบเบฑเปเบเปเบเปเบเบฒเบเบเปเบญเบ 3. เบกเบฑเบเบเปเปเบเปเบฝเบเปเบเบเปเบเปเบเบทเบเบฑเบ testinfra/inspec, เปเบเปเบเบงเบเปเบฎเบปเบฒเบชเบฒเบกเบฒเบเบเบงเบเปเบเบดเปเบเบงเปเบฒเปเบเบทเปเบญเปเบเบเบญเบเปเบเบฅเปเบเบปเบเบเบฑเบเบเบงเบฒเบกเบเบฒเบเบซเบงเบฑเบเบเบญเบเบเบงเบเปเบฎเบปเบฒ:
---
- name: Verify
hosts: all
tasks:
- name: copy config
copy:
src: expected_standalone.conf
dest: /root/wildfly/bin/standalone.conf
mode: "0644"
owner: root
group: root
register: config_copy_result
- name: Certify that standalone.conf changed
assert:
that: not config_copy_result.changed
เบซเบผเบทเบเบณเปเบเปเบเบฒเบเบเปเบฅเบดเบเบฒเบ, เบฅเปเบเปเบฒเปเบซเปเบกเบฑเบเบชเบฒเบกเบฒเบเปเบเปเปเบเป เปเบฅเบฐ เบเบปเบเบชเบญเบเบเบงเบฑเบเปเบ:
---
- name: Verify
hosts: solr
tasks:
- command: /blah/solr/bin/solr start -s /solr_home -p 8983 -force
- uri:
url: http://127.0.0.1:8983/solr
method: GET
status_code: 200
register: uri_result
until: uri_result is not failed
retries: 12
delay: 10
- name: Post documents to solr
command: /blah/solr/bin/post -c master /exampledocs/books.csv
เปเบญเบปเบฒเปเบซเบเบเบปเบเบเบตเปเบชเบฑเบเบชเบปเบเปเบเบปเปเบฒเปเบเปเบเปเบกเบเบนเบ & plugins
Ansible เบชเบฐเบซเบเบฑเบเบชเบฐเบซเบเบนเบเบงเบดเบเบตเบเบฒเบเบเบฐเบเบฒเบ, เบเบฑเปเบเบเบฑเปเบเปเบกเบทเปเบญเบเปเบฒเบเปเบฎเบฑเบเบฅเบฐเบซเบฑเบเบชเบฒเบเบฒ, เบเบฒเบเบซเบฑเบเบเปเบฝเบเบเปเปเบกเบนเบ, เปเบกเบเบนเบเปเบเบฐ, เบฅเบฐเบซเบฑเบเบเบฒเบเปเบเบฑเบเปเบฅเบทเปเบญเบเบเบฒเบเบเบตเปเบเบฐเบญเปเบฒเบ. เปเบเบทเปเบญเบเปเบฒเบเบเบฒเบเบเบตเปเปเบฅเบฐเบฎเบฑเบเบชเบฒเบกเบฑเบเปเบซเปเปเบเบปเปเบฒเปเบเบเปเบฒเบ, เบกเบฑเบเบเบฐเบเปเป superfluous เบเบตเปเบเบฐเบเปเปเบชเบนเปเบเบฑเบเบเบงเบฒเบกเบชเบฑเบเบชเบปเบเบเบตเปเปเบเบเบเบฒเบเบชเปเบฒเบเปเบกเบเบนเบเบเบญเบเบเปเบฒเบเปเบญเบ.
เบชเบฐเบซเบผเบธเบเปเบเบฑเบเบฅเบฑเบ & Tricks
- เบซเบผเบตเบเปเบงเบฑเปเบเบเบปเบงเปเบเบเบปเปเบงเปเบฅเบ.
- เบเบณเบเบณเปเปเบฒเบเบปเบงเปเบเบเบปเบเบเบฒเบ.
- เปเบเปเบเบปเบงเปเบเบเบฒเบเบเบงเบเบเบธเบก loop.
- เบเบงเบเปเบเบดเปเบเบเบปเบงเปเบเบเบฒเบเบเปเบญเบเบเปเปเบกเบนเบ.
- เบซเบผเบตเบเปเบงเบฑเปเบเบงเบฑเบเบเบฐเบเบฒเบเบธเบเบปเบก hashes, เปเบเปเปเบเบเบชเปเบฒเบเบฎเบฒเบเบเบฝเบ.
- เบชเปเบฒเบเบเบถเปเบกเบซเบผเบดเปเบ เปเบฅเบฐเบเบปเบเบเบฒเบเบเบตเปเบเปเปเปเปเบฒเบฐเบชเบปเบก.
- เบซเบผเบตเบเปเบงเบฑเปเบเบเบฒเบเบเปเบฒเปเบเปเปเบกเบเบนเบ shell เบเปเบฒเบชเบฑเปเบ.
- เบเบปเบเบชเบญเบเบเบปเบเบเบฒเบเบเบญเบเปเบเบปเปเบฒเบเปเบฒเบเปเบกเปเบฅเบเบธเบ.
- เปเบญเบปเบฒเปเบซเบเบเบปเบเบเบตเปเบชเบฑเบเบชเบปเบเปเบเบปเปเบฒเปเบเปเบเปเบกเบเบนเบ & plugins.
เบชเบฐเบซเบฅเบธเบ
เบเปเบฒเบเบเปเปเบชเบฒเบกเบฒเบเบเบฝเบเปเบเปเปเบเปเบฅเบฐเบเบฑเบเบเบธเบเปเบเบเบชเปเบฒเบเบเบทเปเบเบเบฒเบเปเบเปเบเบเบเบฒเบ, เปเบเบดเบเปเบกเปเบเบงเปเบฒเบเปเบฒเบเบกเบต IaC. เบเบตเปเปเบกเปเบเบเบฐเบเบงเบเบเบฒเบเบเบตเปเบเบฒเบงเบเบฒเบเบเบตเปเบเปเบญเบเบเบฒเบเบเบงเบฒเบกเบญเบปเบเบเบปเบ, เปเบงเบฅเบฒเปเบฅเบฐเบเบงเบฒเบกเบฎเบนเป.
เบเบฒเบเปเบเบทเปเบญเบกเบเปเป
- เบเปเบฅเบดเบเบฒเบ
เบงเบดเบเบตเบเบฒเบเบเบปเบเบชเบญเบ Ansible เปเบฅเบฐเบเปเปเปเบเบฑเบเปเบเปเบ - เบงเบดเบเบตเปเบญ
เบงเบดเบเบตเบเบฒเบเบเบปเบเบชเบญเบ Ansible เปเบฅเบฐเบเปเปเปเบเบฑเบเปเบเปเบ เบชเบดเปเบเบเบตเปเบเปเบญเบเปเบเปเบฎเบฝเบเบฎเบนเปเบเบฒเบเบเบฒเบเบเบปเบเบชเบญเบ 200 เปเบชเบฑเปเบเบเบญเบเบฅเบฐเบซเบฑเบเปเบเบเบชเปเบฒเบเบเบทเปเบเบเบฒเบ Ansible: เบเบฒเบเบเปเบฒเบเบเบฒเบเบเบฑเปเบเบเปเบฒ 120 VM เบเบฒเบ Coreos เปเบ Centos เปเบ 18 เปเบเบทเบญเบ เบงเบดเบเบตเบเบฒเบเบเปเบฒเบฅเบฒเบเบฅเบปเบเบเบตเบเบเปเบฒเบเปเบกเปเบเปเบญเบเปเบเปเบงเบฅเบฒเบเบตเปเบเบฒเบเบเบปเบเบชเบญเบเบเบฒเบเปเบเบเบขเบฒเบเบเบญเบเบเปเบฒเบ เบเบปเบเบชเบญเบเบเปเบญเบเบงเปเบฒเปเบเบปเปเบฒเบชเบฒเบกเบฒเบเบซเบผเบทเปเบฎเบฑเบเปเบเบเบเบฒเบ YML เบเบฑเบเบเบญเบเบเบฒเบเบเบปเบเบชเบญเบ Ansible? เบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบเบญเบเบเบปเบเบเบงเบฒเบกเบเบฒเบเบเบปเบเบชเบญเบ IaC เบเบตเปเบเบตเปเบฅเบตเบ, เบเปเบฒเบเบฒเปเบช & เบเบฒเบเปเบเบทเปเบญเบกเบเปเป เบเปเบฒเบกเปเบเบชเบฐเบเบต เบชเบฐเบเบฑเบเบเบฒเบชเบฒเบญเบฑเบเบเบดเบ
UPD1 2020.05.01 20:30 โ เบชเปเบฒโเบฅเบฑเบ profile เบเบปเปเบโเบเปโเบเบญเบ playbooks เบเปเบฒเบโเบชเบฒโเบกเบฒเบโเบเปเบฒโเปเบเปโ callback_whitelist = profile_tasks
เปเบเบทเปเบญเปเบเบปเปเบฒเปเบเบชเบดเปเบเบเบตเปเปเบเปเบเบญเบเปเบฎเบฑเบเบงเบฝเบเปเบเบฑเบเปเบงเบฅเบฒเบเบปเบเบเบฒเบ. เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ, เบเบงเบเปเบฎเบปเบฒเบเปเบฒเบ
UPD2 2020.05.03 16:34 -
เปเบซเบผเปเบเบเปเปเบกเบนเบ: www.habr.com