Ansible: 작업 실행 속도 향상
이 기사는 원래 my blog 에 게재되었습니다.
SSH 개선
플레이북이 실행되면 Ansible은 세 개의 SSH 연결을 열고 닫습니다.
하나의 SSH 연결로 이 모든 단계를 수행하려면sible.cfg에 다음 코드를 입력합니다.
[ssh_config]
pipelining = true
두 번째 옵션은 SSH 다중화를 사용하는 것입니다. 다른 노드에 대한 다른 SSH 연결이 형성되는 하나의 나가는 TCP 연결을 엽니다. Ansible은 default SSH 멀티플렉싱을 사용하지만 SSH 구성을 변경해야 할 수도 있습니다multiplexing cookbook.
더 많은 작업을 병렬로 실행
가능한 플레이북이 작동하는 동시 노드 수를 늘릴 수 있습니다. 다음을 사용하여 노드 임계값을 늘리십시오.
[defaults]
forks = 20
작업을 비동기식으로 실행할 수도 있습니다. 즉, Ansible은 다음 작업 전에 작업이 완료될 때까지 기다리지 않습니다. 이것은 일정 시간 동안 지속되는 작업이 있는 경우에 유용할 수 있지만 후속 작업에는 필요하지 않습니다. 비동기 작업의 설정 및 사용에는 약간의 생각이 필요합니다(official documentation 참조).
"무료" 전략 사용
Ansible이 여러 호스트에서 작업을 실행할 때 다음 작업을 실행하기 전에 모든 호스트에서 각 작업이 완료될 때까지 대기합니다. 다음 설정을 사용하면 호스트가 현재 작업을 완료하는 즉시 호스트에서 작업이 실행됩니다.
[defaults]
strategy = free
팩트 수집 비활성화 또는 캐시
각 노드에 대한 팩트 수집은 작업이 실행되기 전에 매번 발생하는 시간 소모적인 작업입니다. 사실이 전혀 필요하지 않은 경우 다음과 같이 플레이북에서 사실 수집을 비활성화할 수 있습니다.
- name: playbook
gather_facts: false
전역적으로 비활성화하려면 다음을 작성하십시오.
[defaults]
gathering = explicit
팩트가 필요하지만 팩트가 너무 자주 변경되지 않는다고 확신하는 경우 캐싱할 수 있습니다. 로컬 JSON 파일에 24시간 동안 팩트를 캐시하려면 ansible.cfg에 이것을 작성하십시오.
[defaults]
gathering = smart
fact_caching_timeout = 86400
fact_caching = jsonfile
fact_caching_connection = ./ansible_fact_cache
MongoDb, Redis 또는 Memched와 같은 other caching plugins을 사용할 수도 있습니다.
결론
이 기사에서는 호스트에서 작업을 실행하는 데 필요한 SSH 연결 수를 줄이고, 더 많은 호스트에서 작업 실행을 시작하고, 작업 실행을 간소화하는 네 가지 옵션을 사용하여 Ansible 작업 실행을 개선하는 방법을 배웠습니다. 이것을 당신의sible.cfg에 추가하면 됩니다.
[defaults]
strategy = free
forks = 20
[ssh_config]
pipelining = true
그리고 시간이 많이 걸리는 사실 수집 단계를 건너뛰려면 스마트 수집을 켜십시오.
[defaults]
gathering = smart
fact_caching_timeout = 86400
fact_caching = jsonfile
fact_caching_connection = ./ansible_fact_cache
이러한 개선 사항을 즐기십시오.
Reference
이 문제에 관하여(Ansible: 작업 실행 속도 향상), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/admantium/ansible-boost-task-execution-speed-54b3텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)