인프라/앤서블(Ansible)
[ansible] disk mount, /etc/fstab 등록 playbook yml
IT맥구리나스
2022. 7. 1. 15:55
젠킨스 빌드 실행 시 아래와 같이 구동하도록 했다.
1. 젠킨스에서 빌드 파라매터로 마운트 디스크와 마운트 디렉터리 경로를 받는다.
2. yml파일내 loop 매개변수를 쉘 스크립트로 삽입
3. ansible 플레이북을 수행하도록한다.
4. 수행 완료되면 yml파일 내 loop 매개변수를 제거한다.
아래 코드는 2번에서의 실행 쉘 스크립트이다.
#!/bin/bash
mount_list=/data/ansible/file/mount_list
job_cnt=`cat $mount_list | wc -l`
for ((var=1 ; var <= $job_cnt ; var++));do
mount_disk=`cat $mount_list | head -n$var | tail -n1 | awk '{print $1}'`
mount_dir=`cat $mount_list | head -n$var | tail -n1 | awk '{print $2}'`
sed -i'' -r -e "/ loop:/a\ - { mount_disk: '$mount_disk', mount_dir: '$mount_dir' }" /data/ansible/linux_automount.yml
done
state 옵션
- 헷갈릴 수 있으니 주의하자
- mounted : 디스크를 마운트하고 /etc/fstab에 디스크 마운트 정보 등록
- absent: 디스크 마운트 해제하고/etc/fstab에서도 삭제함
- present : /etc/fstab에 디스크 마운트 정보 등록 (마운트는 하지 않음)
- unmounted : 디스크 마운트 해제하고 /etc/fstab에서도 삭제하지 않음(단순 마운트 해제)
---
- hosts: all
become: yes
vars:
ansible_become_password: "비밀번호"
tasks:
- name: disk format
filesystem:
fstype: ext4
dev: "{{ item.mount_disk }}"
loop:
- { mount_disk: '/dev/sdb', mount_dir: '/data/test01' }
- { mount_disk: '/dev/sdc', mount_dir: '/data/test02' }
- name: mkdir mount_dir
shell:
cmd: "mkdir -p /data/{{ item.mount_dir }}"
loop:
- { mount_disk: '/dev/sdb', mount_dir: '/data/test01' }
- { mount_disk: '/dev/sdc', mount_dir: '/data/test02' }
- name: mount disk & register /etc/fstab
mount:
path: "{{ item.mount_dir }}"
src: "{{ item.mount_disk }}"
fstype: ext4
state: mounted
loop:
- { mount_disk: '/dev/sdb', mount_dir: '/data/test01' }
- { mount_disk: '/dev/sdc', mount_dir: '/data/test02' }
- name: collect disk inform
shell:
cmd: df -h
register: diskk
- name: show disk
debug:
msg: "{{ diskk.stdout_lines }}"
반응형