티스토리 뷰

IT/Ansible

[RHCSAA 교육 정리] 7 장 - 8장

트래이닝맨 2018. 3. 2. 07:44
728x90
반응형
7장 Ansible Galaxy


Ansible playbook을 찾는 방법 

ansible-galaxy search 'install git' --platforms el

ansible playbook을 다운받기 (-p는 위치를 지정)
ansible-galaxy install -r davidkarban.git -p roles/

다운받은 playbook을 확인
ansible-galaxy list

다운받은 playbook을 삭제
ansible-galaxy remove student.bash_env

새로운 playbook을 만듦
ansible-galaxy init --offline student.example
ansible-galaxy init --offline -p roles empty.example


Ansible Galaxy options




Requirements 파일에 playbook dependencies을 정의할수 있음(자세한 내용)
예)

- src: http://materials.example.com/roles-library/student.bash_env.tgz

  name: student.bash_env 



8장 Asynchronous Check

원하는 hosts를 찾는 command 모음
ansible web.example.com -i myinventory --list-hosts
ansible '*.example.com' -i myinventory --list-hosts
ansible '*' -i myinventory --list-hosts
ansible ungrouped -i myinventory --list-hosts
ansible '192.168.2.*' -i myinventory --list-hosts
ansible labhost1.example.com,test2.example.com,192.168.2.2 -i myinventory --list-hosts
ansible lab,datacenter1 -i myinventory --list-hosts

ansible 'lab,data*,192.168.2.2' -i myinventory --list-hosts

datacenter1 그룹에도 정의 되어 있고 또 lab 그룹에도 같이 정의된 머신들
ansible 'lab,&datacenter1' -i myinventory --list-hosts

test2.example.com을 제외한 datacenter안의 모든 머신들
ansible 'datacenter,!test2.example.com' -i myinventory --list-hosts

datacenter1 그룹안에 속한 호스트를 제외한 인벤토리 안의 모든 호스트
ansible 'all,!datacenter1' -i myinventory --list-hosts

 



로컬에서 command를 실행하기 위한 방법
local_action ==>>> delegate_to: localhost.

보통 delegate_to를 이용하면 현재 실행하는 host의 facts를 가져오는 데 만약 delegate_to 호스트의 facts를 가져오고 싶다면 아래 명령어를 사용
delegate_facts: True


Thread수늘리기 (매니지하는 호스트의 수가 많으면 Thread를 늘려줘야한다.)
grep forks /etc/ansible/ansible.cfg
#forks = 5

Rolling updates
한번에 정해진 호스트에서만 command가 실행할수 있다. 아래는 한번에 2개의 hosts에서 실행된다.
- name: 한번에 실행가능한 Hosts를 제한
  hosts: appservers

  serial: 2 




Asynchronous 체크를 하는 여러방법

- 매 10초마다 1시간동안 체크 ( async/poll를 이용함)

 

- name: 실행시간이 긴 TASK
  hosts: demoservers
  remote_user: devops
  tasks:
  - name: Download big file
    get_url: 
      url: http://demo.example.com/bigfile.tar.gz
    async: 3600
    poll: 10




Task를 시작하고 나중에 check하는 방식

- wait_for를 사용하는  방식

---
- name: 서버를 재시작
  hosts: demoservers
  remote_user: devops
  tasks:
  - name: restart machine
    shell: sleep 2 && shutdown -r now "Ansible updates triggered"
    async: 1
    poll: 0
    become: true
    ignore_errors: true

  - name: 서버가 다시 시작될때까지 기다림
      wait_for: 
         host: "{{ inventory_hostname }}"
         state: started
         delay: 30 
         timeout: 300
         port: 22
      delegate_to: localhost

      become: false 



Fire - forget 방식 (async_status를 이용)
- name: fire and forget task
  hosts: demoservers
  remote_user: devops
  become: true
  tasks:

  - name: 큰 사이즈의 파일 다운로드
    get_url: 
         url: http://demo.example.com/bigfile.tar.gz
    async: 3600 
    poll: 0
    register: download_sleeper

  - name: 다운로드가 끝날때까지 기다림.
    async_status: 
    jid: "{{ download_sleeper.ansible_job_id }}"
    register: job_result
    until: job_result.finished

    retries: 30 



같은 방식이지만, 특정한 정보를 얻을때까지 계속 체크하는 방식(until을 이용)

 

- name: Gather Master VMs info
    ovirt_vms_facts:
         pattern: "name={{item.vm.name}}"
         auth:
           username: "{{rhev.id}}"
           password: "{{rhev.pw}}"
           url: "{{rhev.api_url}}"
           ca_file: "{{rhev.ca_file}}"
  with_items: "{{created_master_vms_info.results}}"
  register: vms_info
  until: vms_info.ansible_facts.ovirt_vms[0].fqdn is defined
  ignore_errors: yes
  retries: 60
  delay: 10
  when: (master_node_vms is defined and master_node_vms > 0 and j_deploy_type == 'ocp_cluster')




여러 군데서 확인을 해야할경우는 아래와 같이 delegate_to를 여러가 줄수 있다.
 
  delegate_to: "{{ item }}"
  with_items: "{{ groups.lbserver }}" 



반응형

'IT > Ansible' 카테고리의 다른 글

[RHCSAA 교육 정리] 9 장 - 12 장  (0) 2018.03.02
[RHCSAA 교육 정리] 5 장 - 6장  (0) 2018.03.02
[RHCSAA 교육 정리] 3 장 - 4장  (0) 2018.03.02
[RHCSAA 교육 정리] 1 장 - 2장  (0) 2018.03.02
[RHCSAA]앤서블 자격증  (3) 2018.03.02
댓글
250x250
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함