Ansible sọ pé ó ti bẹ̀rẹ̀, ṣùgbọ́n WireGuard ṣì ń lo ìṣètò àtijọ́
state: started kò fi ọwọ́ kan unit tí ń ṣiṣẹ́ tẹ́lẹ̀, nítorí náà wg0.conf tí a tún kọ kò ní lọ́nà láti wá. Fi handler ìyípadà kún, kí o sì fi ẹ̀rọ tó ń ṣiṣẹ́ wé fáìlì náà.
Ìgbà tí playbook ń ṣiṣẹ́ parí pẹ̀lú àwọ̀ ewé, unit WireGuard ń ṣiṣẹ́, handshake ń ṣiṣẹ́, ṣùgbọ́n peer tuntun kò dé ibi kankan. Láti rí i tí playbook ń sọ àsìkò rere nígbà tí server ń lo ìṣètò àná jẹ́ ìbànújẹ́ pàtàkì, nítorí kò sí ohun tí kò tọ́ nínú àbájáde. Ansible ṣe gbogbo ohun tí a béèrè: ó rí i dájú pé wọ́n ti bẹ̀rẹ̀ unit, ó sì ti bẹ̀rẹ̀ tẹ́lẹ̀. Lílo fáìlì ìṣètò tí a tún kọ jẹ́ iṣẹ́ mìíràn, yóò sì ṣẹlẹ̀ kìkì tí ohun kan bá sọ fún iṣẹ́ náà pé kí ó tún un kà.
Wo ohun tí ìgbà kejì ń sọ ní ti gidi
Ṣe playbook ní ìgbà méjì pẹ̀lú ìṣètò tí a yí padà, kí o sì fi àkópọ̀ wé. Ìgbà kejì yẹ kí ó fi iṣẹ́ unit hàn gẹ́gẹ́ bí ok, kì í ṣe changed, nítorí iṣẹ́ tó ń ṣiṣẹ́ tẹ́lẹ̀ ni a fi í sílẹ̀ ní àlàáfíà gẹ́gẹ́ bí àpẹẹrẹ. Ìyẹn ni idempotence tí ń ṣiṣẹ́ dáadáa, ìyẹn sì ni ìdí tí fáìlì tuntun kò fi dé kernel.
Fi ìgbà àyẹ̀wò kún pẹ̀lú àbájáde diff láti wo iṣẹ́ wo ni yóò fọwọ́ kan ohunkóhun.
ansible-playbook -i inventory site.yml --check --diff
systemctl show wg-quick@wg0 -p ActiveEnterTimestamp -p NRestarts
stat -c '%y %n' /etc/wireguard/wg0.confÀwọn àmì àkókò mẹ́ta sọ ìtàn kí o tó ka ìlà log kan. Tí fáìlì ìṣètò bá jẹ́ tuntun ju àkókò tí unit di aláàyè, a kọ́ ojú-ọ̀nà tó ń ṣiṣẹ́ láti inú fáìlì àtijọ́, gbogbo àmì tó tẹ̀lé sì ti ibẹ̀ wá.
Èyí kì í ṣe àbùkù Ansible. Ìhùwàsí kan náà máa ń fara hàn nínú irinṣẹ́ ìṣàkóso ìṣètò kankan tí ó ya «rí i dájú pé ó ń ṣiṣẹ́» sọ́tọ̀ kúrò nínú «rí i dájú pé òun ni ó ń ṣiṣẹ́». Ìyàtọ̀ náà máa ń dàbí àṣejù títí yóò fi gba ọ̀sán kan lọ́wọ́ rẹ.
Bíbẹ̀rẹ̀ jẹ́ ipò, kì í ṣe àtúnkó
state: started sọ ipò kan nípa unit. Kò ṣèlérí pé iṣẹ́ náà yóò tún àwọn ohun tí ó ń gbà kà, kò sì lè mọ̀ pé fáìlì tí kò ṣí rí ti yí padà. Nínú ìmúṣẹ wg-quick, àwọn ohun tí ó ń gbà ní ojú-ọ̀nà ìṣètò, àwọn àdírẹ́sì, àwọn ọ̀nà, àwọn àkọsílẹ̀ DNS àti hook post-up èyíkéyìí.
Nítorí náà fáìlì tí a ṣe àtúnṣe lè ní peer tuntun, àdírẹ́sì mìíràn tàbí ìtọ́nisọ́nà ọ̀nà tí ó yí padà nígbà tí ojú-ọ̀nà tó ń ṣiṣẹ́ ṣì ń fi ẹ̀kún àtijọ́ náà jíǹ. Handshake ṣì ń ṣe àṣeyọrí nítorí àwọn kọ́kọ́rọ́ àti àwọn ibi ìparí tí a gbé wọlé ṣì wúlò. Ìyẹn gan-an ni ó mú kí àìṣeé ṣe rí, àti ìdí tí àwọn ènìyàn fi ń lépa DNS fún wákàtí kan kí wọ́n tó yẹ̀wò àmì àkókò.
Àwọn àṣàyàn méjì mìíràn ti module ni a sábà máa ń gbà bí ojútùú. daemon_reload mú kí systemd tún àwọn fáìlì unit kà, èyí kò ní í ṣe pẹ̀lú fáìlì ìṣètò WireGuard. state: reloaded béèrè lọ́wọ́ unit pé kí ó ṣe ìgbésẹ̀ àtúnkó rẹ̀, bóyá ó ṣe ohun tí o nílò sì dúró pátápátá lórí unit náà. Kò sí èyí tí ó rọ́pò mímọ àwọn ohun tí ìlànà tó ń ṣiṣẹ́ kà ní ti gidi.
Fi fáìlì náà sórí ẹ̀rọ, kí o sì sọ fún handler
Ọ̀nà tí ń pa idempotence mọ́ tí ó sì ń lo àwọn ìyípadà ni èyí tí ó wọ́pọ̀: iṣẹ́ tí ń kọ fáìlì náà sọ fún handler, handler sì ń ṣiṣẹ́ kìkì nígbà tí fáìlì náà bá yí padà ní ti gidi. Ìgbà kejì láìsí àtúnṣe kò ṣe ohunkóhun, ìyẹn sì ni ohun tí o fẹ́.
- name: write the interface configuration
ansible.builtin.template:
src: wg0.conf.j2
dest: /etc/wireguard/wg0.conf
owner: root
mode: "0600"
notify: apply wg0
- name: ensure the interface unit is enabled
ansible.builtin.systemd_service:
name: wg-quick@wg0
enabled: true
state: started
- name: apply wg0
listen: apply wg0
ansible.builtin.systemd_service:
name: wg-quick@wg0
state: restartedÀwọn handler ń ṣiṣẹ́ ní ìparí play, lẹ́yìn àwọn iṣẹ́ tí ó sọ fún wọn, nítorí náà iṣẹ́ kan tó wà lẹ́yìn nínú play kan náà lè ṣì rí ojú-ọ̀nà àtijọ́. Tí ìtòlẹ́sẹẹsẹ bá ṣe pàtàkì, sọ àwọn handler di òfo ní gbangba pẹ̀lú meta: flush_handlers kí iṣẹ́ tó gbára lé ìṣètò tuntun tó bẹ̀rẹ̀.
Lo restart dípò reload àyàfi tí o bá ti yẹ̀wò ìgbésẹ̀ àtúnkó unit. Unit wg-quick ti upstream ṣe àtìlẹ́yìn fún ọ̀kan, ó sì ń mú ìṣètò WireGuard bá ara wọn, ṣùgbọ́n kò tún ìṣètò àdírẹ́sì, ọ̀nà, DNS tàbí hook ṣe. Nítorí náà reload lẹ́yìn fífi ìtọ́nisọ́nà ọ̀nà kún dàbí ẹni pé ó ṣe àṣeyọrí, kò sì yí ohunkóhun padà.
Fi ẹ̀rọ tó ń ṣiṣẹ́ wé fáìlì náà
Àyẹ̀wò tí ó ti ẹ̀ka àṣìṣe yìí dé ni ìfiwéra láàrin ohun tí kernel ní àti ohun tí fáìlì náà sọ. Àṣẹ méjì ń mú àbájáde tí a lè fi wé jáde, ìyàtọ̀ sì ni ìyapa.
sudo wg showconf wg0
sudo wg-quick strip wg0
sudo diff <(sudo wg showconf wg0) <(sudo wg-quick strip wg0)wg showconf ń tẹ̀ ẹ̀rọ tó ń ṣiṣẹ́ jáde, pẹ̀lú kọ́kọ́rọ́ àṣírí, nítorí náà kà á sí àṣírí, má sì fi í lẹ̀ mọ́ tikẹ́ẹ̀tì. wg-quick strip ń tẹ̀ fáìlì jáde láìsí àwọn kọ́kọ́rọ́ tí ó jẹ́ ti wg-quick nìkan, ìdí ni pé a lè fi àwọn méjèèjì wé.
Ìyàtọ̀ nínú àkójọ peer túmọ̀ sí pé a kò lo fáìlì náà rí. Ìyàtọ̀ nínú àwọn kọ́kọ́rọ́ tàbí ibi ìparí tí o retí pé yóò yí padà túmọ̀ sí pé ohun kan lo ó ní apá kan. Kò sí ìyàtọ̀ túmọ̀ sí pé ìṣètò náà wà lọ́wọ́lọ́wọ́, àṣìṣe sì wà níbòmíràn, èyí fúnra rẹ̀ jẹ́ àbájáde wúlò.
San owó àtúndá pẹ̀lú ìmọ̀
Àtúndá ojú-ọ̀nà gé òjijì náà, tí òjijì náà bá sì ń gbé ìpàdé ìṣàkóso rẹ, àtúndá náà pari ìpàdé tí ó béèrè rẹ̀. Fi handler sí ẹ̀yìn fèrèsé ìyípadà, tàbí ṣe playbook láti ọ̀nà ìṣàkóso tí kò gbára lé àtúndá ojú-ọ̀nà.
Owó náà ni ìdí tí àwọn ènìyàn fi ń yipada sí reload. Ìwà-ìṣe tí ó bọ́gbọ́n mu ni, yóò sì di ẹni tí ó tọ́ nígbà tí o bá mọ àwọn ìyípadà tí reload ń lò ní ti gidi. Fún àwọn ìyípadà peer àti kọ́kọ́rọ́ lórí unit wg-quick upstream ó tó; fún àdírẹ́sì, ìtọ́nisọ́nà ọ̀nà àti hook kò tó. Lílò ó mọ́ kí ó tó jẹ́ àdánwò pọ̀ sí i ju láti ṣàwárí rẹ̀ lákòókò fèrèsé ìyípadà.
Ìwé àkọsílẹ̀ module systemd_service ṣàlàyé ìyàtọ̀ láàrin started, restarted àti reloaded, ó sì yẹ kí a kà á lẹ́ẹ̀kan dípò láti ṣe àfojúsùn láti inú àkópọ̀ ewé. Gbogbo ohun nínú ìtọ́sọ́nà yìí wá láti inú ìyàtọ̀ kan náà.