본문 바로가기

Linux/RHCE

[RHCE]웹 컨텐츠 디렉토리 만들기/하드웨어 보고서 생성

 

10. 웹 컨텐츠 디렉토리 만들기

문제 및 답
문제 10)
/home/matthew/ansible/webcontent.yml이라는 스크립트를 만듭니다. 
yml은 다음과 같습니다.
- 플레이 북은 dev 호스트 그룹의 관리 노드에서 실행됩니다.
- 다음 요구 사항에 따라 /webdev 디렉터리를 만듭니다.
     - Webdev 그룹 구성원
     - 권한 : 
      owner = read + write + excute, 
      group = read + write + excute, 
      other = read + excute
        = 특별 권한 : 그룹 ID 설정 
        
심볼릭 링크 /var/www/html/webdev를 /webdev로 생성하세요.
/webdev/index.html 파일을 생성하고, 해당 파일 내용은 "Development"라는 단일 텍스트 라인이어야 합니다.
dev 호스트 그룹의 호스트에서 이 디렉토리를 브라우징하면(http://node1.domain1.example.com/webdev/), 
"Development"가 출력되어야 합니다.
답 10)
# vi /home/matthew/ansible/webcontent.yml
- name: create web
  hosts: dev
  tasks:
    - name: create group
      group:
        name: webdev
        state: present
    - name: create /webdev
      file:
        path: /webdev
        mode: '2775'
        state: directory
        group: webdev
        setype: httpd_sys_content_t
    - name: creat link
      file:
        src: /webdev
        dest: /var/www/html/webdev
        state: link
    - name: copy using content
      copy:
        content: "Development\n"
        dest: /webdev/index.html
        setype: httpd_sys_content_t

ansible-playbook webcontent.yml

# curl http://node1/webdev/index.html

 

풀이과정

 

1. node1) http 설치 및 설정 - 실제 시험에서는 자동으로 설정되어 있음

sudo dnf install httpd -y 
sudo systemctl enable --now httpd

 

2. playbook 생성 : 위에 답과 동일하게 생성 및 실행

 

 

3. node1에서 결과 확인

  • /webdev 권한 확인 : webdev 그룹, 2755 권한 확인

 

  • 심볼릭 링크 확인

  • http 접속 - http://퍼블릭 ip/webdev/index.html

  • Development 단일 텍스트인지 확인

 

 

 

 

11. 하드웨어 보고서 생성

문제 및 답
문제 11)
/home/matthew/ansible/hwreport.yml 이름의 playbook을 생성하여 
다음 정보가 있는 모든 관리 노드에 /root/hwreport.txt 출력 파일을 생성하십시오. 
-Inventory host name
-Total memory in MB
-BIOS version
-Size of disk device vda
-Size of disk device vdb
-Each line of the output file contains a single key = value pair.

이 Playbook은 다음을 수행해야합니다. 
-http://rhgls.domain1.example.com/materials/hwreport.empty 파일을 다운로드하고 /root/hwreport.txt로 저장합니다. 
-/root/hwreport.txt를 올바른 값으로 수정합니다. 
-하드웨어 항목이 존재하지 않으면 연관된 값은 NONE으로 설정해야합니다.
답 11)
# vi /home/matthew/ansible/hwreport.yml
- name: Create HW Report
  hosts: all
  tasks:
    - name: get_url file
      get_url:
        url: http://master-yum/hwreport.empty
        dest: /root/hwreport.txt
        mode: '0755'

    - name: change the data1
      lineinfile:
        path: /root/hwreport.txt
        line: "inventory_name = {{ ansible_hostname | default('NONE') }}"
        regexp: "^inventory_name"

    - name: change the data2
      lineinfile:
        path: /root/hwreport.txt
        line: "total_mem = {{ ansible_memtotal_mb | default('NONE') }}"
        regexp: "^total_mem"

    - name: change the data3
      lineinfile:
        path: /root/hwreport.txt
        line: "bios_version = {{ ansible_bios_version | default('NONE') }}"
        regexp: "^bios_version"

    - name: change the data4
      lineinfile:
        path: /root/hwreport.txt
        line: "vda_size = {{ ansible_devices['sda']['size'] | default('NONE') }}"
        regexp: "^vda_size"

    - name: change the data5
      lineinfile:
        path: /root/hwreport.txt
        line: "vdb_size = {{ ansible_devices['sdb']['size'] | default('NONE') }}"
        regexp: "^vdb_size"
        
 ansible-playbook hwreport.yml

 

 

풀이과정

 

<사전준비>

1. 실제 url이 없으므로 node에 접속해 hwreport.txt 생성 후 권한 바꿔주기

vi /root/hwreport.txt
inventory_name =
total_mem =
bios_version =
vda_size =
vdb_size =

chmod 0755 /root/hwreport.txt

 

2. 플레이북 수정

  • url 별도로 없으므로 해당 부분 삭제
  • lsblk 명령어 통해 디스크 이름 확인 후 변경
  • node 1번에만 테스트함
답 11)
- name: Create HW Report
  hosts: node1
  tasks:
 
    - name: change the data1
      lineinfile:
        path: /root/hwreport.txt
        line: "inventory_name = {{ ansible_hostname | default('NONE') }}"
        regexp: "^inventory_name"

    - name: change the data2
      lineinfile:
        path: /root/hwreport.txt
        line: "total_mem = {{ ansible_memtotal_mb | default('NONE') }}"
        regexp: "^total_mem"

    - name: change the data3
      lineinfile:
        path: /root/hwreport.txt
        line: "bios_version = {{ ansible_bios_version | default('NONE') }}"
        regexp: "^bios_version"

    - name: change the data4
      lineinfile:
        path: /root/hwreport.txt
        line: "vda_size = {{ ansible_devices['xvda']['size'] | default('NONE') }}"
        regexp: "^vda_size"
        
    - name: change the data5
      lineinfile:
        path: /root/hwreport.txt
        line: "vdb_size = {{ ansible_devices['sdb']['size'] | default('NONE') }}"
        regexp: "^vdb_size"

 

<풀이>

1. 플레이북 실행 전 txt파일 확인

ansible node1 -m shell -a "cat /root/hwreport.txt"

 

2. 플레이북 작성 후 실행

ansible-playbook hwreport.yml

 

3. hwreport.txt 파일 확인

ansible all -m shell -a "cat /root/hwreport.txt"