자 저번 글([Ansible] 조건별로 nginx를 "한방에" 설치하기)에서는
fact에서 생성한 인자를 받아서, 그걸 다시 when이라는 조건을 걸어서 우분투나 센트OS를 설치했었죠~!!!
음...근데 솔직히 아름답지 않죠 무슨 뜻이냐면...세상에는 많은 종류의 OS가 있는데 이때 마다 3줄씩 추가해서 (아래처럼) 작성해야 한다는거거든요..
- name: nginx for CentOS
include_tasks: CentOS.yml
when: ansible_distribution == 'CentOS'
모름지기 좋은 코드 혹은 좋은 내용이란 짧은 줄에 많은 내용을 담아야 하고, 그게 보기 좋아야 한다고...배웠거든요! 제가 하는 말이 아닙니다 그러니까 신뢰하셔도 되요
그래서 저쪽에서 중복되는 부분을 제거할꺼에요.
즉 CentOS? Ubuntu이렇게 생긴 부분인거죠.
이 부분을 변수 처리해서 현재의 ansible_distribution을 바로 인자로 쓸껀데, 이걸 하기 위해서는 조건문이라는 것을 써야 합니당.
개발자 분들이야 조건문이라는 말이 나오기 전부터 분기 해야 겠네 라고 생각하시겠지만요
(이 붕가는 아닙니다아 -_-;)
참 그리고 CentOS와 Ubuntu 같은 것을 변수 처리 하기 위해서 vars쪽에 선언해 주어야 합니다.
코드가 기존에 비하면 한결 간결....해져 보이겠죠...? 저만의 착각은 아니겠죠오~!
1 2 3 4 5 6 7 8 9 10 | --- - name: Install nginx on the nodes hosts: nodes become: yes vars: lnx_name: "{{ 'Ubuntu' if ansible_distribution == 'Ubuntu' else 'CentOS' if ansible_distribution == 'CentOS' else 'Just Linux' }}" tasks: - name: nginx for Any Linux include_tasks: "{{ lnx_name }}.yml" |
이걸 돌리면 이렇게 돌아간답니다.
0 개의 댓글:
댓글 쓰기