-
[Ansible 101] 2주차 도전과제IT/Ansible 2024. 1. 21. 08:57728x90
안녕하세요, 오늘은 CloudNet Ansible 101 2주 차 도전과제 내용을 작성해 보았습니다.
# 1. linux user1~10(10명) 를 반복문을 통해서 생성 후 확인 후 삭제를 해보자.
1) 사용자 생성을 위한 플레이북 생성
ch1.yml
- hosts: localhost become: yes tasks: - name: 사용자 생성 ansible.builtin.user: name: "user{{ item }}" state: present loop: "{{ range(1, 11) | list }}"
2) 실행
3) 사용자 확인을 위한 플레이북 생성
ch1-2.yml
--- - hosts: localhost become: yes tasks: - name: 사용자 존재 여부 확인 command: "id user{{ item }}" loop: "{{ range(1, 11) | list }}" ignore_errors: yes register: check_users - name: 확인 결과 출력 debug: msg: "{{ item.stdout }}" loop: "{{ check_users.results }}" when: item.rc == 0
4) 실행
5) 사용자 삭제를 위한 플레이북 생성
--- - hosts: localhost become: yes tasks: - name: 사용자 삭제 ansible.builtin.user: name: "user{{ item }}" state: absent loop: "{{ range(1, 11) | list }}"
#2. loop 반복문 중 sequence 를 이용하여 /var/log/test1 ~ /var/log/test100 100개 파일(file 모듈)을 생성 확인 후 삭제 진행해 보자.
1) log 파일 생성을 위한 플레이북 생성
ch2.yml
--- - hosts: localhost become: yes tasks: - name: 파일 생성 ansible.builtin.file: path: "/var/log/test{{ item }}" state: touch loop: "{{ range(1, 101) | list }}"
2) 로그 파일 확인을 위한 플레이북 생성
ch2-1.yml
--- - hosts: localhost become: yes tasks: - name: 파일 존재 여부 확인 ansible.builtin.stat: path: "/var/log/test{{ item }}" loop: "{{ range(1, 101) | list }}" register: file_stat - name: 확인 결과 출력 ansible.builtin.debug: msg: "파일 /var/log/test{{ item.item }} 존재: {{ item.stat.exists }}" loop: "{{ file_stat.results }}"
3) 실행
# 3. Ubuntu OS이면서 fqdn으로 tnode1인 경우, debug 모듈을 사용하여 OS 정보와 fqdn 정보를 출력해 보자.
1) 플레이북 생성
--- - hosts: all tasks: - name: Print os type ansible.builtin.debug: msg: >- fqdn: {{ ansible_facts['fqdn'] }} OS: {{ ansible_facts['distribution'] }} when: - ansible_facts['fqdn'] == "ip-10-10-1-11.ap-northeast-2.compute.internal" - ansible_facts['distribution'] == "Ubuntu"
2) 실행
#4. 반복문, 조건문 동시에 사용하기
1) 플레이북 생성
- hosts: all tasks: - name: Advanced loop and when example ansible.builtin.command: echo "{{ item.name }}" loop: - { name: 'Alice', age: 24 } - { name: 'Bob', age: 30 } when: item.age > 25
2) 실행
#5. apache2 패키지를 apt 모듈을 통해서 설치 시, 핸들러를 호출하여 service 모듈로 apache2를 재시작해보자.
1) 플레이북 생성
--- - hosts: all become: yes tasks: - name: Install Apache2 apt: name: apache2 state: present update_cache: yes notify: Restart Apache2 handlers: - name: Restart Apache2 service: name: apache2 state: restarted notify: Print message after restarting Apache2 - name: Print message after restarting Apache2 debug: msg: "Apache2가 재시작 되었습니다"
2) 실행
#6. block rescure always 키워드를 사용한 플레이북을 작성하여 테스트해보자.
1) 플레이북 생성
--- - hosts: all tasks: - name: 예외 처리 예제 block: - name: 파일 복사 ansible.builtin.copy: src: /tmp/source_file.txt dest: /tmp/destination_file.txt rescue: - name: 복사 실패 시 에러 메시지 출력 ansible.builtin.debug: msg: "파일 복사에 실패했습니다." always: - name: 항상 실행되는 태스크 ansible.builtin.debug: msg: "이 태스크는 항상 실행됩니다."
2) 실행
여기서는 파일 복사가 실패해서, rescue로 넘어가고 always가 동작하는 내용입니다.
#7. 작성 중..
728x90반응형'IT > Ansible' 카테고리의 다른 글
[Ansible 101] SSH 키 생성 및 복사하기 (0) 2024.02.04 [Ansible 101] 사용자 계정 생성하기 (0) 2024.02.04 [Ansible 101] 앤서블 블록 및 오류처리 (0) 2024.01.21 [Ansible 101] 핸들러 및 작업 실패 처리 (0) 2024.01.21 [Ansible 101] 조건문 (0) 2024.01.21