15.4. ceph_orch_host 모듈을 사용하여 호스트 추가 또는 제거


스토리지 관리자는 Ansible 플레이북에서 ceph_orch_host 모듈을 사용하여 스토리지 클러스터에서 호스트를 추가하고 제거할 수 있습니다.

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터.
  • 노드를 CDN에 등록하고 서브스크립션을 연결합니다.
  • 스토리지 클러스터의 모든 노드에 대한 sudo 및 암호 없는 SSH 액세스 권한이 있는 Ansible 사용자.
  • Ansible 관리 노드에 cephadm-ansible 패키지 설치
  • 새 호스트에는 스토리지 클러스터의 공용 SSH 키가 있습니다. 스토리지 클러스터의 공용 SSH 키를 새 호스트에 복사하는 방법에 대한 자세한 내용은 Red Hat Ceph Storage 설치 가이드의 호스트 추가 를 참조하십시오.

절차

  1. 다음 절차에 따라 새 호스트를 클러스터에 추가합니다.

    1. Ansible 관리 노드에 로그인합니다.
    2. Ansible 관리 노드에서 /usr/share/cephadm-ansible 디렉터리로 이동합니다.

      예제

      [ceph-admin@admin ~]$ cd /usr/share/cephadm-ansible
      Copy to Clipboard Toggle word wrap

    3. 새 호스트 및 레이블을 Ansible 인벤토리 파일에 추가합니다.

      구문

      sudo vi INVENTORY_FILE
      
      NEW_HOST1 labels="['LABEL1', 'LABEL2']"
      NEW_HOST2 labels="['LABEL1', 'LABEL2']"
      NEW_HOST3 labels="['LABEL1']"
      
      [admin]
      ADMIN_HOST monitor_address=MONITOR_IP_ADDRESS labels="['ADMIN_LABEL', 'LABEL1', 'LABEL2']"
      Copy to Clipboard Toggle word wrap

      예제

      [ceph-admin@admin cephadm-ansible]$ sudo vi hosts
      
      host02 labels="['mon', 'mgr']"
      host03 labels="['mon', 'mgr']"
      host04 labels="['osd']"
      host05 labels="['osd']"
      host06 labels="['osd']"
      
      [admin]
      host01 monitor_address= 10.10.128.68 labels="['_admin', 'mon', 'mgr']"
      Copy to Clipboard Toggle word wrap

      참고

      이전에 새 호스트를 Ansible 인벤토리 파일에 추가하고 호스트에서 preflight 플레이북을 실행한 경우 3단계로 건너뜁니다.

    4. --limit 옵션을 사용하여 preflight 플레이북을 실행합니다.

      구문

      ansible-playbook -i INVENTORY_FILE cephadm-preflight.yml --extra-vars "ceph_origin=rhcs" --limit NEWHOST
      Copy to Clipboard Toggle word wrap

      예제

      [ceph-admin@admin cephadm-ansible]$ ansible-playbook -i hosts cephadm-preflight.yml --extra-vars "ceph_origin=rhcs" --limit host02
      Copy to Clipboard Toggle word wrap

      preflight Playbook은 새 호스트에 podman,lvm2,chronyd, cephadm 을 설치합니다. 설치가 완료되면 cephadm/usr/sbin/ 디렉터리에 있습니다.

    5. 새 호스트를 클러스터에 추가하는 플레이북을 생성합니다.

      구문

      sudo vi PLAYBOOK_FILENAME.yml
      
      ---
      - name: PLAY_NAME
        hosts: HOSTS_OR_HOST_GROUPS
        become: USE_ELEVATED_PRIVILEGES
        gather_facts: GATHER_FACTS_ABOUT_REMOTE_HOSTS
        tasks:
          - name: NAME_OF_TASK
            ceph_orch_host:
              name: "{{ ansible_facts['hostname'] }}"
              address: "{{ ansible_facts['default_ipv4']['address'] }}"
              labels: "{{ labels }}"
            delegate_to: HOST_TO_DELEGATE_TASK_TO
      
          - name: NAME_OF_TASK
            when: inventory_hostname in groups['admin']
            ansible.builtin.shell:
              cmd: CEPH_COMMAND_TO_RUN
            register: REGISTER_NAME
      
          - name: NAME_OF_TASK
            when: inventory_hostname in groups['admin']
            debug:
              msg: "{{ REGISTER_NAME.stdout }}"
      Copy to Clipboard Toggle word wrap

      참고

      기본적으로 Ansible은 플레이북의 hosts 줄과 일치하는 호스트에서 모든 작업을 실행합니다. ceph orch 명령은 관리자 인증 키와 Ceph 구성 파일이 포함된 호스트에서 실행해야 합니다. delegate_to 키워드를 사용하여 클러스터에서 admin 호스트를 지정합니다.

      예제

      [ceph-admin@admin cephadm-ansible]$ sudo vi add-hosts.yml
      
      ---
      - name: add additional hosts to the cluster
        hosts: all
        become: true
        gather_facts: true
        tasks:
          - name: add hosts to the cluster
            ceph_orch_host:
              name: "{{ ansible_facts['hostname'] }}"
              address: "{{ ansible_facts['default_ipv4']['address'] }}"
              labels: "{{ labels }}"
            delegate_to: host01
      
          - name: list hosts in the cluster
            when: inventory_hostname in groups['admin']
            ansible.builtin.shell:
              cmd: ceph orch host ls
            register: host_list
      
          - name: print current list of hosts
            when: inventory_hostname in groups['admin']
            debug:
              msg: "{{ host_list.stdout }}"
      Copy to Clipboard Toggle word wrap

      이 예제에서 플레이북은 새 호스트를 클러스터에 추가하고 현재 호스트 목록을 표시합니다.

    6. 플레이북을 실행하여 클러스터에 호스트를 추가합니다.

      구문

      ansible-playbook -i INVENTORY_FILE PLAYBOOK_FILENAME.yml
      Copy to Clipboard Toggle word wrap

      예제

      [ceph-admin@admin cephadm-ansible]$ ansible-playbook -i hosts add-hosts.yml
      Copy to Clipboard Toggle word wrap

  2. 다음 절차에 따라 클러스터에서 호스트를 제거합니다.

    1. Ansible 관리 노드에 로그인합니다.
    2. Ansible 관리 노드에서 /usr/share/cephadm-ansible 디렉터리로 이동합니다.

      예제

      [ceph-admin@admin ~]$ cd /usr/share/cephadm-ansible
      Copy to Clipboard Toggle word wrap

    3. 클러스터에서 호스트 또는 호스트를 제거하는 플레이북을 생성합니다.

      구문

      sudo vi PLAYBOOK_FILENAME.yml
      
      ---
      - name: NAME_OF_PLAY
        hosts: ADMIN_HOST
        become: USE_ELEVATED_PRIVILEGES
        gather_facts: GATHER_FACTS_ABOUT_REMOTE_HOSTS
        tasks:
          - name: NAME_OF_TASK
            ceph_orch_host:
              name: HOST_TO_REMOVE
              state: STATE
      
          - name: NAME_OF_TASK
            ceph_orch_host:
              name: HOST_TO_REMOVE
              state: STATE
            retries: NUMBER_OF_RETRIES
            delay: DELAY
            until: CONTINUE_UNTIL
            register: REGISTER_NAME
      
          - name: NAME_OF_TASK
            ansible.builtin.shell:
              cmd: ceph orch host ls
            register: REGISTER_NAME
      
          - name: NAME_OF_TASK
              debug:
                msg: "{{ REGISTER_NAME.stdout }}"
      Copy to Clipboard Toggle word wrap

      예제

      [ceph-admin@admin cephadm-ansible]$ sudo vi remove-hosts.yml
      
      ---
      - name: remove host
        hosts: host01
        become: true
        gather_facts: true
        tasks:
          - name: drain host07
            ceph_orch_host:
              name: host07
              state: drain
      
          - name: remove host from the cluster
            ceph_orch_host:
              name: host07
              state: absent
            retries: 20
            delay: 1
            until: result is succeeded
            register: result
      
           - name: list hosts in the cluster
             ansible.builtin.shell:
               cmd: ceph orch host ls
             register: host_list
      
           - name: print current list of hosts
             debug:
               msg: "{{ host_list.stdout }}"
      Copy to Clipboard Toggle word wrap

      이 예제에서 플레이북 작업은 host07 의 모든 데몬을 드레이닝하고, 클러스터에서 호스트를 제거하고, 현재 호스트 목록을 표시합니다.

    4. Playbook을 실행하여 클러스터에서 호스트를 제거합니다.

      구문

      ansible-playbook -i INVENTORY_FILE PLAYBOOK_FILENAME.yml
      Copy to Clipboard Toggle word wrap

      예제

      [ceph-admin@admin cephadm-ansible]$ ansible-playbook -i hosts remove-hosts.yml
      Copy to Clipboard Toggle word wrap

검증

  • 클러스터의 현재 호스트 목록을 표시하는 Ansible 작업 출력을 검토합니다.

    예제

    TASK [print current hosts] ******************************************************************************************************
    Friday 24 June 2022  14:52:40 -0400 (0:00:03.365)       0:02:31.702 ***********
    ok: [host01] =>
      msg: |-
        HOST    ADDR           LABELS          STATUS
        host01  10.10.128.68   _admin mon mgr
        host02  10.10.128.69   mon mgr
        host03  10.10.128.70   mon mgr
        host04  10.10.128.71   osd
        host05  10.10.128.72   osd
        host06  10.10.128.73   osd
    Copy to Clipboard Toggle word wrap

맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2025 Red Hat