ಡೀಫಾಲ್ಟ್ ಸೆಟ್ಟಿಂಗ್ಗಳೊಂದಿಗೆ ಅನ್ಸಿಬಲ್ ತನ್ನ ಕೆಲಸವನ್ನು ತ್ವರಿತವಾಗಿ ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ ಎಂಬುದು ರಹಸ್ಯವಲ್ಲ. ಲೇಖನದಲ್ಲಿ ನಾನು ಇದಕ್ಕೆ ಹಲವಾರು ಕಾರಣಗಳನ್ನು ಸೂಚಿಸುತ್ತೇನೆ ಮತ್ತು ಉಪಯುಕ್ತ ಕನಿಷ್ಠ ಸೆಟ್ಟಿಂಗ್ಗಳನ್ನು ನೀಡುತ್ತೇನೆ, ಅದು ಬಹುಶಃ ನಿಮ್ಮ ಯೋಜನೆಯ ವೇಗವನ್ನು ಹೆಚ್ಚಿಸುತ್ತದೆ.
ಇಲ್ಲಿ ಮತ್ತು ಕೆಳಗೆ ನಾವು ಅನ್ಸಿಬಲ್ 2.9.x ಅನ್ನು ಚರ್ಚಿಸುತ್ತೇವೆ, ಇದನ್ನು ನಿಮ್ಮ ನೆಚ್ಚಿನ ರೀತಿಯಲ್ಲಿ ಹೊಸದಾಗಿ ರಚಿಸಲಾದ ವರ್ಚುವಲ್ನಲ್ಲಿ ಸ್ಥಾಪಿಸಲಾಗಿದೆ.
ಅನುಸ್ಥಾಪನೆಯ ನಂತರ, ನಿಮ್ಮ ಪ್ಲೇಬುಕ್ ಪಕ್ಕದಲ್ಲಿ "ansible.cfg" ಫೈಲ್ ಅನ್ನು ರಚಿಸಿ - ಈ ಸ್ಥಳವು ಯೋಜನೆಯ ಜೊತೆಗೆ ಈ ಸೆಟ್ಟಿಂಗ್ಗಳನ್ನು ವರ್ಗಾಯಿಸಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ, ಜೊತೆಗೆ ಅವುಗಳು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಲೋಡ್ ಆಗುತ್ತವೆ.
ಪೈಪ್ಲೈನಿಂಗ್
ಪೈಪ್ಲೈನಿಂಗ್ ಅನ್ನು ಬಳಸುವ ಅಗತ್ಯತೆಯ ಬಗ್ಗೆ ಕೆಲವರು ಈಗಾಗಲೇ ಕೇಳಿರಬಹುದು, ಅಂದರೆ, ಮಾಡ್ಯೂಲ್ಗಳನ್ನು ಟಾರ್ಗೆಟ್ ಸಿಸ್ಟಮ್ನ ಫೈಲ್ ಸಿಸ್ಟಮ್ಗೆ ನಕಲಿಸುವುದಿಲ್ಲ, ಆದರೆ Base64 ನಲ್ಲಿ ಸುತ್ತುವ ಜಿಪ್ ಆರ್ಕೈವ್ ಅನ್ನು ನೇರವಾಗಿ ಪೈಥಾನ್ ಇಂಟರ್ಪ್ರಿಟರ್ನ stdin ಗೆ ವರ್ಗಾಯಿಸುವುದು, ಆದರೆ ಇತರರು ಅಲ್ಲದಿರಬಹುದು, ಆದರೆ ವಾಸ್ತವ ಸತ್ಯವಾಗಿ ಉಳಿದಿದೆ:
pipelining = True
ಸತ್ಯಗಳನ್ನು ಸಂಗ್ರಹಿಸುವುದು
ಡೀಫಾಲ್ಟ್ ಸೆಟ್ಟಿಂಗ್ಗಳೊಂದಿಗೆ, ಪ್ರತಿ ನಾಟಕಕ್ಕೆ ಅನ್ಸಿಬಲ್ ಅದರಲ್ಲಿ ಭಾಗವಹಿಸುವ ಎಲ್ಲಾ ಹೋಸ್ಟ್ಗಳಿಗೆ ಸತ್ಯಗಳ ಸಂಗ್ರಹವನ್ನು ಪ್ರಾರಂಭಿಸುತ್ತದೆ ಎಂದು ನಿಮಗೆ ತಿಳಿದಿದೆಯೇ? ಸಾಮಾನ್ಯವಾಗಿ, ನಿಮಗೆ ತಿಳಿದಿಲ್ಲದಿದ್ದರೆ, ಈಗ ನಿಮಗೆ ತಿಳಿದಿದೆ. ಇದು ಸಂಭವಿಸದಂತೆ ತಡೆಯಲು, ನೀವು ಸತ್ಯಗಳನ್ನು ಸಂಗ್ರಹಿಸಲು (ಸ್ಪಷ್ಟ) ಅಥವಾ ಸ್ಮಾರ್ಟ್ ಮೋಡ್ಗಾಗಿ ಸ್ಪಷ್ಟವಾದ ವಿನಂತಿಯ ಮೋಡ್ ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸುವ ಅಗತ್ಯವಿದೆ. ಇದರಲ್ಲಿ, ಹಿಂದಿನ ನಾಟಕಗಳಲ್ಲಿ ಎದುರಾಗದ ಆ ಹೋಸ್ಟ್ಗಳಿಂದ ಮಾತ್ರ ಸತ್ಯಗಳನ್ನು ಸಂಗ್ರಹಿಸಲಾಗುತ್ತದೆ.
ಯುಪಿಡಿ ನಕಲಿಸುವಾಗ, ನೀವು ಈ ಸೆಟ್ಟಿಂಗ್ಗಳಲ್ಲಿ ಒಂದನ್ನು ಆರಿಸಬೇಕಾಗುತ್ತದೆ.
gathering = smart|explicit
ssh ಸಂಪರ್ಕಗಳನ್ನು ಮರುಬಳಕೆ ಮಾಡಲಾಗುತ್ತಿದೆ
ನೀವು ಎಂದಾದರೂ ಡೀಬಗ್ ಮಾಡುವ ಮೋಡ್ನಲ್ಲಿ Ansible ಅನ್ನು ರನ್ ಮಾಡಿದ್ದರೆ ("v" ಆಯ್ಕೆ, ಒಂದರಿಂದ ಒಂಬತ್ತು ಬಾರಿ ಪುನರಾವರ್ತನೆಯಾಗುತ್ತದೆ), ssh ಸಂಪರ್ಕಗಳು ನಿರಂತರವಾಗಿ ಮಾಡಲ್ಪಡುತ್ತವೆ ಮತ್ತು ಮುರಿದುಹೋಗುವುದನ್ನು ನೀವು ಗಮನಿಸಿರಬಹುದು. ಆದ್ದರಿಂದ, ಇಲ್ಲಿಯೂ ಸಹ ಒಂದೆರಡು ಸೂಕ್ಷ್ಮತೆಗಳಿವೆ.
ನೀವು ಏಕಕಾಲದಲ್ಲಿ ಎರಡು ಹಂತಗಳಲ್ಲಿ ssh ಸಂಪರ್ಕವನ್ನು ಮರು-ಸ್ಥಾಪಿಸುವ ಹಂತವನ್ನು ತಪ್ಪಿಸಬಹುದು: ಎರಡೂ ನೇರವಾಗಿ ssh ಕ್ಲೈಂಟ್ನಲ್ಲಿ ಮತ್ತು ಮ್ಯಾನೇಜರ್ನಿಂದ ನಿರ್ವಹಿಸಲಾದ ಹೋಸ್ಟ್ಗೆ ಫೈಲ್ಗಳನ್ನು ವರ್ಗಾಯಿಸುವಾಗ.
ತೆರೆದ ssh ಸಂಪರ್ಕವನ್ನು ಮರುಬಳಕೆ ಮಾಡಲು, ಅಗತ್ಯವಿರುವ ಕೀಗಳನ್ನು ssh ಕ್ಲೈಂಟ್ಗೆ ರವಾನಿಸಿ. ನಂತರ ಅದು ಈ ಕೆಳಗಿನವುಗಳನ್ನು ಮಾಡಲು ಪ್ರಾರಂಭಿಸುತ್ತದೆ: ಮೊದಲ ಬಾರಿಗೆ ssh ಸಂಪರ್ಕವನ್ನು ಸ್ಥಾಪಿಸುವಾಗ, ಇದು ಹೆಚ್ಚುವರಿಯಾಗಿ ಕಂಟ್ರೋಲ್ ಸಾಕೆಟ್ ಎಂದು ಕರೆಯಲ್ಪಡುವದನ್ನು ರಚಿಸುತ್ತದೆ, ನಂತರದ ಅನುಸ್ಥಾಪನೆಗಳಲ್ಲಿ, ಇದು ಈ ಸಾಕೆಟ್ ಅಸ್ತಿತ್ವವನ್ನು ಪರಿಶೀಲಿಸುತ್ತದೆ ಮತ್ತು ಯಶಸ್ವಿಯಾದರೆ, ಮರುಬಳಕೆ ಮಾಡಿ ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ssh ಸಂಪರ್ಕ. ಮತ್ತು ಇದೆಲ್ಲವೂ ಅರ್ಥವಾಗುವಂತೆ ಮಾಡಲು, ನಿಷ್ಕ್ರಿಯವಾಗಿರುವಾಗ ಸಂಪರ್ಕವನ್ನು ನಿರ್ವಹಿಸಲು ಸಮಯವನ್ನು ಹೊಂದಿಸೋಣ. ನೀವು ಹೆಚ್ಚು ಓದಬಹುದು
ssh_args = "-o ControlMaster=auto -o ControlPersist=15m"
ನಿರ್ವಹಿಸಲಾದ ಹೋಸ್ಟ್ಗೆ ಫೈಲ್ಗಳನ್ನು ವರ್ಗಾಯಿಸುವಾಗ ಈಗಾಗಲೇ ತೆರೆದಿರುವ ssh ಸಂಪರ್ಕವನ್ನು ಮರುಬಳಕೆ ಮಾಡಲು, ಮತ್ತೊಂದು ಅಜ್ಞಾತ ಸೆಟ್ಟಿಂಗ್ ssh_tranfer_method ಅನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸಿ. ಈ ವಿಷಯದ ಬಗ್ಗೆ ದಸ್ತಾವೇಜನ್ನು ಅತ್ಯಂತ ಹೆಚ್ಚು
transfer_method = piped
ಮೂಲಕ, "ಅಭಿವೃದ್ಧಿ" ಶಾಖೆಯಲ್ಲಿ ಈ ಸೆಟ್ಟಿಂಗ್ ಸಹ ಅಸ್ತಿತ್ವದಲ್ಲಿದೆ
ಚಾಕುವಿಗೆ ಹೆದರಬೇಡ, ಫೋರ್ಕ್ಗೆ ಹೆದರಿ
ಮತ್ತೊಂದು ಉಪಯುಕ್ತ ಸೆಟ್ಟಿಂಗ್ ಫೋರ್ಕ್ಸ್ ಆಗಿದೆ. ಇದು ಹೋಸ್ಟ್ಗಳಿಗೆ ಏಕಕಾಲದಲ್ಲಿ ಸಂಪರ್ಕಿಸುವ ಮತ್ತು ಕಾರ್ಯಗಳನ್ನು ನಿರ್ವಹಿಸುವ ಕೆಲಸಗಾರರ ಪ್ರಕ್ರಿಯೆಗಳ ಸಂಖ್ಯೆಯನ್ನು ನಿರ್ಧರಿಸುತ್ತದೆ. ಭಾಷೆಯಾಗಿ ಪೈಥಾನ್ನ ವಿಶಿಷ್ಟತೆಗಳ ಕಾರಣದಿಂದಾಗಿ, ಪ್ರಕ್ರಿಯೆಗಳನ್ನು ಬಳಸಲಾಗುತ್ತದೆ, ಥ್ರೆಡ್ಗಳಲ್ಲ, ಏಕೆಂದರೆ Ansible ಇನ್ನೂ ಪೈಥಾನ್ 2.7 ಅನ್ನು ಬೆಂಬಲಿಸುತ್ತದೆ - ನಿಮಗಾಗಿ ಯಾವುದೇ ಅಸಮಕಾಲಿಕ ನಡವಳಿಕೆಯನ್ನು ಪರಿಚಯಿಸುವುದರಲ್ಲಿ ಯಾವುದೇ ಅರ್ಥವಿಲ್ಲ! ಪೂರ್ವನಿಯೋಜಿತವಾಗಿ Ansible ರನ್ಗಳು
forks = 20
ನಿಯಂತ್ರಣ ಯಂತ್ರದಲ್ಲಿ ಲಭ್ಯವಿರುವ ಮೆಮೊರಿಯ ಪ್ರಮಾಣಕ್ಕೆ ಸಂಬಂಧಿಸಿದಂತೆ ಇಲ್ಲಿ ಕೆಲವು ತೊಂದರೆಗಳು ಉಂಟಾಗಬಹುದು ಎಂದು ನಾನು ಈಗಿನಿಂದಲೇ ನಿಮಗೆ ಎಚ್ಚರಿಕೆ ನೀಡುತ್ತೇನೆ. ಬೇರೆ ರೀತಿಯಲ್ಲಿ ಹೇಳುವುದಾದರೆ, ನೀವು ಫೋರ್ಕ್ಸ್ = 100500 ಅನ್ನು ಹೊಂದಿಸಬಹುದು, ಆದರೆ ಅದು ಕೆಲಸ ಮಾಡುತ್ತದೆ ಎಂದು ಯಾರು ಹೇಳಿದರು?
ಎಲ್ಲವನ್ನೂ ಒಟ್ಟಿಗೆ ಸೇರಿಸುವುದು
ಪರಿಣಾಮವಾಗಿ, ansible.cfg (ini ಫಾರ್ಮ್ಯಾಟ್), ಅಗತ್ಯ ಸೆಟ್ಟಿಂಗ್ಗಳು ಈ ರೀತಿ ಕಾಣಿಸಬಹುದು:
[defaults]
gathering = smart|explicit
forks = 20
[ssh_connection]
pipelining = True
ssh_args = -o ControlMaster=auto -o ControlPersist=15m
transfer_method = piped
ಮತ್ತು ನೀವು ಆರೋಗ್ಯವಂತ ವ್ಯಕ್ತಿಯ ಸಾಮಾನ್ಯ YaML- ದಾಸ್ತಾನುಗಳಲ್ಲಿ ಎಲ್ಲವನ್ನೂ ಮರೆಮಾಡಲು ಬಯಸಿದರೆ, ಅದು ಈ ರೀತಿ ಕಾಣಿಸಬಹುದು:
---
all:
vars:
ansible_ssh_pipelining: true
ansible_ssh_transfer_method: piped
ansible_ssh_args: -o ControlMaster=auto -o ControlPersist=15m
ದುರದೃಷ್ಟವಶಾತ್, ಇದು "ಗ್ಯಾಥರಿಂಗ್ = ಸ್ಮಾರ್ಟ್/ಸ್ಪಷ್ಟ" ಮತ್ತು "ಫೋರ್ಕ್ಸ್ = 20" ಸೆಟ್ಟಿಂಗ್ಗಳೊಂದಿಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸುವುದಿಲ್ಲ: ಅವುಗಳ YaML ಸಮಾನತೆಗಳು ಅಸ್ತಿತ್ವದಲ್ಲಿಲ್ಲ. ಒಂದೋ ನಾವು ಅವುಗಳನ್ನು ansible.cfg ನಲ್ಲಿ ಹೊಂದಿಸುತ್ತೇವೆ ಅಥವಾ ನಾವು ಅವುಗಳನ್ನು ANSIBLE_GATHERING ಮತ್ತು ANSIBLE_FORKS ಪರಿಸರ ವೇರಿಯಬಲ್ಗಳ ಮೂಲಕ ರವಾನಿಸುತ್ತೇವೆ.
ಮೈಟೊಜೆನ್ ಬಗ್ಗೆ
- ಮೈಟೊಜೆನ್ ಬಗ್ಗೆ ಇದು ಎಲ್ಲಿದೆ? - ಪ್ರಿಯ ಓದುಗರೇ, ಕೇಳಲು ನಿಮಗೆ ಹಕ್ಕಿದೆ. ಈ ಲೇಖನದಲ್ಲಿ ಎಲ್ಲಿಯೂ ಇಲ್ಲ. ಆದರೆ ನೀವು ನಿಜವಾಗಿಯೂ ಅದರ ಕೋಡ್ ಅನ್ನು ಓದಲು ಸಿದ್ಧರಾಗಿದ್ದರೆ ಮತ್ತು ನಿಮ್ಮ ಪ್ಲೇಬುಕ್ ಮೈಟೊಜೆನ್ನೊಂದಿಗೆ ಏಕೆ ಕ್ರ್ಯಾಶ್ ಆಗುತ್ತದೆ, ಆದರೆ ವೆನಿಲ್ಲಾ ಆನ್ಸಿಬಲ್ನೊಂದಿಗೆ ಉತ್ತಮವಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ ಅಥವಾ ಅದೇ ಪ್ಲೇಬುಕ್ ಮೊದಲು ಏಕೆ ಉತ್ತಮವಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸಿತು, ಆದರೆ ನವೀಕರಣದ ನಂತರ ವಿಚಿತ್ರವಾದ ಕೆಲಸಗಳನ್ನು ಮಾಡಲು ಪ್ರಾರಂಭಿಸಿದರೆ - ಸರಿ, ಮೈಟೊಜೆನ್ ಮಾಡಬಹುದು ಸಂಭಾವ್ಯವಾಗಿ ನಿಮ್ಮ ಸಾಧನವಾಗಿರಬಹುದು. ಅದನ್ನು ಅನ್ವಯಿಸಿ, ಅರ್ಥಮಾಡಿಕೊಳ್ಳಿ, ಲೇಖನಗಳನ್ನು ಬರೆಯಿರಿ - ನಾನು ಅದನ್ನು ಆಸಕ್ತಿಯಿಂದ ಓದುತ್ತೇನೆ.
ನಾನು ವೈಯಕ್ತಿಕವಾಗಿ ಮೈಟೊಜೆನ್ ಅನ್ನು ಏಕೆ ಬಳಸಬಾರದು? ಏಕೆಂದರೆ ಗ್ಲಾಡಿಯೋಲಸ್ ಕಾರ್ಯಗಳು ನಿಜವಾಗಿಯೂ ಸರಳವಾಗಿರುವವರೆಗೆ ಮತ್ತು ಎಲ್ಲವೂ ಉತ್ತಮವಾಗಿರುವವರೆಗೆ ಮಾತ್ರ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ. ಹೇಗಾದರೂ, ನೀವು ಸ್ವಲ್ಪ ಎಡಕ್ಕೆ ಅಥವಾ ಬಲಕ್ಕೆ ತಿರುಗಿದರೆ - ಅಷ್ಟೆ, ನಾವು ಬಂದಿದ್ದೇವೆ: ಪ್ರತಿಕ್ರಿಯೆಯಾಗಿ, ಬೆರಳೆಣಿಕೆಯಷ್ಟು ಅಸ್ಪಷ್ಟ ವಿನಾಯಿತಿಗಳು ನಿಮ್ಮತ್ತ ಹಾರುತ್ತವೆ ಮತ್ತು ಚಿತ್ರವನ್ನು ಪೂರ್ಣಗೊಳಿಸಲು, ಕಾಣೆಯಾಗಿರುವುದು ಸಾಮಾನ್ಯ ನುಡಿಗಟ್ಟು “ಎಲ್ಲರಿಗೂ ಧನ್ಯವಾದಗಳು ಎಲ್ಲರಿಗೂ ಧನ್ಯವಾದಗಳು. , ಎಲ್ಲರೂ ಸ್ವತಂತ್ರರು.” ಸಾಮಾನ್ಯವಾಗಿ, ಮುಂದಿನ "ಭೂಗತ ನಾಕ್" ಗೆ ಕಾರಣಗಳನ್ನು ಕಂಡುಹಿಡಿಯಲು ಸಮಯವನ್ನು ವ್ಯರ್ಥ ಮಾಡಲು ನಾನು ಬಯಸುವುದಿಲ್ಲ.
ಈ ಕೆಲವು ಸೆಟ್ಟಿಂಗ್ಗಳನ್ನು ಓದುವ ಪ್ರಕ್ರಿಯೆಯಲ್ಲಿ ಕಂಡುಹಿಡಿಯಲಾಯಿತು
ನೋಂದಾಯಿತ ಬಳಕೆದಾರರು ಮಾತ್ರ ಸಮೀಕ್ಷೆಯಲ್ಲಿ ಭಾಗವಹಿಸಬಹುದು.
ನಿಮ್ಮ ಪ್ರಾಜೆಕ್ಟ್ಗಳನ್ನು ವೇಗಗೊಳಿಸಲು ಈ ಕೆಳಗಿನ ಯಾವ ಅನ್ಸಿಬಲ್ ಸೆಟ್ಟಿಂಗ್ಗಳನ್ನು ನೀವು ಬಳಸುತ್ತೀರಿ?
-
69,6%ಪೈಪ್ ಲೈನಿಂಗ್=true32
-
34,8%ಒಟ್ಟುಗೂಡಿಸುವಿಕೆ = ಸ್ಮಾರ್ಟ್/ಸ್ಪಷ್ಟ16
-
52,2%ssh_args = "-o ControlMaster=auto -o ControlPersist=..."24
-
17,4%ವರ್ಗಾವಣೆ_ವಿಧಾನ = ಪೈಪ್ಡ್8
-
63,0%ಫೋರ್ಕ್ಸ್ = XXX29
-
6,5%ಇದ್ಯಾವುದೂ ಅಲ್ಲ, ಕೇವಲ Mitogen3
-
8,7%ಮೈಟೊಜೆನ್ + ಈ ಸೆಟ್ಟಿಂಗ್ಗಳಲ್ಲಿ ಯಾವುದನ್ನು ನಾನು ಗಮನಿಸುತ್ತೇನೆ4
46 ಬಳಕೆದಾರರು ಮತ ಹಾಕಿದ್ದಾರೆ. 21 ಬಳಕೆದಾರರು ದೂರವಿದ್ದಾರೆ.
ಅನ್ಸಿಬಲ್ ಬಗ್ಗೆ ಹೆಚ್ಚಿನ ವಿಷಯ ಬೇಕೇ?
-
78,3%ಹೌದು, ಸಹಜವಾಗಿ 54
-
21,7%ಹೌದು, ನಾನು ಹೆಚ್ಚು ಹಾರ್ಡ್ಕೋರ್ ವಿಷಯವನ್ನು ಬಯಸುತ್ತೇನೆ!15
-
0,0%ಇಲ್ಲ, ಮತ್ತು ಇದು ಯಾವುದಕ್ಕೂ ಅಗತ್ಯವಿಲ್ಲ
-
0,0%ಇಲ್ಲ, ಇದು ಸಂಕೀರ್ಣವಾಗಿದೆ!!!0
69 ಬಳಕೆದಾರರು ಮತ ಹಾಕಿದ್ದಾರೆ. 7 ಬಳಕೆದಾರರು ದೂರ ಉಳಿದಿದ್ದಾರೆ.
ಮೂಲ: www.habr.com