run_once 여러 호스트를 대상으로 플레이북을 실행하여도 local_action과 같이 로컬에서 실행하는 경우가 발생할 수 있습니다. 이때, 해당 작업을 하나의 호스트에서만 수행하도록 하는 옵션이 run_once입니다. - name: run only once command: /usr/bin/custom-command run_once: true 위와 같이 작성 시, 모든 호스트들 중에서 최초 호스트에서만 작업을 수행하게됩니다. - name: copy only once local_action: command /usr/bin/custom/command run_once: true 또한 컨트롤러 역할의 로컬에서 작업을 수행하도록 하는 local_action과 함께 사용시 특히 유용할 수 있습니다.
Serial 기본적으로 ansible은 모든 호스트에서 각 태스크를 병렬로 실행하지만 serial을 통해 한 번에 몇 개의 호스트가 play를 수행할지 지정할 수 있는데 사용 예시는 다음과 같다. 한 번에 하나의 호스트에서만 실행 - name: serial-one hosts: all serial: 1 tasks: - name: get info - name: remove host from elb group - name: update - name: put host into elb group 위와 같은 playbook을 통해 한 번에 하나의 호스트에서만 실행하도록 전달할 수 있다. 또한 위와 같은 상황에선 특정 비율 이상의 실패 발생 시에 이후 작업들도 실패가 발생할 확률이 높기에 서비스가 중단될 수 있으므로..
Host Ansible 사용 시 호스트를 지정해서 사용하게 되는데 ansible에서는 다양한 상황에서 유연하게 대처할 수 있도록 패턴을 통해 호스트 범위를 지정할 수 있도록 한다. 일반적인 예시 hosts: web 모든 호스트 hosts: all 합집합 hosts: web:production 교집합 hosts: database:&production 그 외에도 다양한 패턴을 지원한다. 액션 사용법 모든 호스트 all 모든 호스트 * 합집합 dev:production 교집합 dev:&production 배제 dev:!production 와일드카드 *.example.com 번호 범위 web[5:10] 정규식 ~web\d+.example.(com 또한 —limit 옵션을 통해 실행할 호스트를 지정할 수 있습니다..
Lookup 기본적으로 Ansible에서는 vars를 통해 변수를 정의할 수 있다. 다만 자동화 환경 구축을 진행하다보면 다양한 곳에서 입력되는 변수를 처리해야할 필요가 있는데, 때문에 Ansible에서는 lookup plugin을 통해 이러한 변수 처리에 도움을 준다. (lookup 플러그인은 jinja2 template language의 Ansible-specific extension이다.) Support 해당 글에서는 lookup에서 사용할 수 있는 대표적인 조회 몇 가지만 제시한다. --- - name: lookup_test hosts: localhost tasks: # 파일 내용 조회 후 반환 - name: file debug: msg="file {{lookup('file', '/Users/an..
requirements.txt Python Project에서는 requires.txt 파일에 버전과 함께 패키지 의존성 라이브러리를 지정한다. 이를 통해 추후 python package의 버전 업그레이드로 인한 불안정한 호환 문제에서 해방되었다. 또한 이러한 의존성 관리는 virtualenv에도 영감을 주었는데, venv를 active 할 시 해당 가상환경에 포함된 패키지들만 남게됨을 알고 있을 것이다. 이를 활용해 아래와 같이 requirements.txt 파일을 생성해 공급할 수 있다. $ source project/bin/active $ pip freeze > requirements.txt Use on ansible requirements.txt를 사용해 아래와 같이 패키지를 설치할 수 있다. - ..
Facts ansible에서 제공하는 호스트에 대한 정보. $ ansible-playbook test.yaml PLAY [show return value of command module] ********************************************************************************************************************************************************************************************************** TASK [Gathering Facts] *******************************************************************..