728x90
안녕하세요, 오늘은 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
반응형
'DevOps > Ansible' 카테고리의 다른 글
[Ansible 101] SSH 키 생성 및 복사하기 (0) | 2024.02.04 |
---|---|
[Ansible 101] 사용자 계정 생성하기 (1) | 2024.02.04 |
[Ansible 101] 앤서블 블록 및 오류처리 (0) | 2024.01.21 |
[Ansible 101] 핸들러 및 작업 실패 처리 (0) | 2024.01.21 |
[Ansible 101] 조건문 (0) | 2024.01.21 |