운영 Ansible - 작업 실행 위치 제어( Delegation/Local Action )
페이지 정보
본문
Ansible 활용 시, 특정 호스트에서 작업을 수행하고 싶을 경우 작업 위임 및 local action 을 사용할 수 있다.
delegate_to : 작업을 수행하고자 하는 호스트에 권한을 위임하여 실행하는 옵션.
inventory 내 작업대상 외에 다른 서버에서의 작업이 필요한 경우 등 사용 가능
> 127.0.0.1 은 Ansible 컨트롤러 머신에서( localhost ) 실행됨을 뜻함.
> Ansible 컨트롤러 머신에 권한을 위임할 경우 delegate_to 키워드 대신 local_action을 활용할 수도 있음.
>local_action 모듈과 mail 모듈을 활용하여 로컬 서버에서 메일을 발송하는 예시 코드
SSH를 통해 연결하는 대신 원격 호스트에서 로컬로 플레이 북을 사용하는 것이 유용 할 수도 있다.
> 플레이북을 로컬로 실행하려면 플레이북 내에서 hosts: 127.0.0.1 설정 후 위와 같이 connection 옵션을 활용할 수 있음.
>또는 위와 같이 플레이북 내에서 로컬 연결 설정 가능.
1. 작업 위임 - Delegation
delegate_to : 작업을 수행하고자 하는 호스트에 권한을 위임하여 실행하는 옵션.
inventory 내 작업대상 외에 다른 서버에서의 작업이 필요한 경우 등 사용 가능
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | --- - hosts: webservers serial: 5 tasks: - name: Take out of load balancer pool ansible.builtin.command: /usr/bin/take_out_of_pool {{ inventory_hostname }} delegate_to: 127.0.0.1 - name: Actual steps would go here ansible.builtin.yum: name: acme-web-stack state: latest - name: Add back to load balancer pool ansible.builtin.command: /usr/bin/add_back_to_pool {{ inventory_hostname }} delegate_to: 127.0.0.1 | cs |
2. Local Action
1 2 3 4 5 6 7 8 9 10 11 | --- # ... tasks: - name: Take out of load balancer pool local_action: ansible.builtin.command /usr/bin/take_out_of_pool {{ inventory_hostname }} # ... - name: Add back to load balancer pool local_action: ansible.builtin.command /usr/bin/add_back_to_pool {{ inventory_hostname }} | cs |
1 2 3 4 5 6 7 8 9 10 11 | --- # ... tasks: - name: Send summary mail local_action: module: community.general.mail subject: "Summary Mail" to: "{{ mail_recipient }}" body: "{{ mail_body }}" run_once: True | cs |
3. Local Playbook
SSH를 통해 연결하는 대신 원격 호스트에서 로컬로 플레이 북을 사용하는 것이 유용 할 수도 있다.
1 | ansible-playbook playbook.yml --connection=local | cs |
1 2 3 | --- - hosts: 127.0.0.1 connection: local | cs |
- 이전글Ansible - Ad-hoc Command 21.03.10
- 다음글Ansible - Loop 활용 21.02.05
댓글목록
등록된 댓글이 없습니다.