데몬의 실행여부를 체크하는 플레이북 짤건데 디렉토리 구조는 아래와 같다

데몬실행여부 체크 플레이북이니까 디렉토리명은 daemon_check로 주고
[root@localhost daemon_check]# pwd
/root/ansible/test/daemon_check

구조,간략설명

ll[root@q352-3552 daemon_check]# ll
total 4
drwxr-xr-x. 2 root root 66 May  2 13:38 group_vars   ##hosts에 지정되는 그룹들의 변수를 지정하는 디렉토리

-rw-r--r--. 1 root root  0 May  2 10:37 hosts    ###/etc/ansible/hosts와 동일한 기능이다.
drwxr-xr-x. 6 root root 82 May  2 13:32 roles   ### site.yml 에 들어가는 roles 
-rw-r--r--. 1 root root 90 May  2 10:48 site.yml

 

먼저 group_vars는 를들어 엔서블을 사용하려면 클라이언트에 파이썬 2.6버전이상이 설치 돼 있어야 하는데 클라이언트 centos5버전이라면 기본적으로 파이썬 2.4가 설치돼있다. 따라서 파이썬 2.6을 따로 설치해주고 인터럽트를 직접 지정해줘야 하는데 

이런식으로 centos5 서버들154,155,156,157,158에 하나하나 인터럽터를 지정해줘야 한다. 근데 group_vars에 centos5 라는 파일 만들고 그 안에 ansible_python_interpreter=/usr/bin/python2.6 를 적어주거나 하면 된다.

hosts 파일에

[centos5:vars]

ansible_python_interpreter=/usr/bin/python2.6

이런식으로 직접 지정해줘도 된다.

 

그다음 hosts는 클라이언트 서버 리스트고... 그룹으로 지정할 수 있고 위에 사진처럼

roles랑 site.yml 이 중요하다.

먼저 site.yml 의 내용을 보면

site.yml

crond_check 는 모든 서버가 다 실행돼야하니까 hosts 대상은 all , roles는 crond_check
마찬가지로 httpd는 방화벽도 체크해야하니까 iptables_open롤도 추가, mysql 은 mysql_check 롤만 들어간다.

우리가 실행하는건 site.yml 이다. ansible-playbook site.yml 명령어로 실행해주면 
  roles:
    - crond_check
여기에 적어준 roles들이 차례대로 실행되는데 적어준 roles 이름과 디렉토리 이름은 꼭 같아야 한다. 

[root@q352-3552 roles]# ll
total 0
drwxr-xr-x. 5 root root 52 May  2 12:57 crond_check
drwxr-xr-x. 5 root root 52 May  2 12:57 httpd_check
drwxr-xr-x. 5 root root 52 May  2 12:57 iptables_open
drwxr-xr-x. 5 root root 52 May  2 12:57 mysql_check
drwxr-xr-x. 5 root root 52 May  2 12:57 nginx_check

 

roles 디렉토리 안에 crond_check 들어가보면
[root@q352-3552 crond_check]# ll
total 0
drwxr-xr-x. 2 root root  6 May  2 15:37 defaults
drwxr-xr-x. 2 root root  6 May  2 15:37 files
drwxr-xr-x. 2 root root 22 May  2 13:01 handlers
drwxr-xr-x. 2 root root 22 May  2 13:12 tasks
drwxr-xr-x. 2 root root 21 May  2 13:23 templates
내용은 위와같은데 tasks안에 있는 main.yml(실행되는 roles들의 야믈 파일은 무조건 파일명이 main.yml 이어야 함) 파일이 가장 먼저 실행하는데 main.yml 이 실행시 templates 모듈을 사용할 때 필요한 파일은 templates 안에 있어야 하고 마찬가지로 files 모듈을 사용할 때의 파일은 files 안에 있어야 한다. defaults는 변수설정(vars보다 순쉬 높음) meta같은것도 있다는데 잘 모르겠음.. 하여튼 모든 작업이 완료되면 마지막으로 handlers가 진행된다.(이거는 보통 시작,재시작만 들어감)
ㄴ왜 시작,재시작만 들어가느냐? 모르겠음.... 대충 생각해본다면... handlers는 무조건 tasks다음 즉 마지막에 실행이 되니까 예를들어 뭐... httpd.conf 수정후 마지막에 해야할 작업이 서비스 재시작밖에 더 있을까 ?싶다.

 

 

여튼 정리하자면..

site.yml 실행 > 그안에 있는 role들이 차례대로 실행 > ./roles 디렉토리에 roles와 동일한 이름 디렉토리가 있음 > 디렉토리 안에 ./tasks/main.yml 을 실행 > 실행되면서 탬플릿,파일들의 모듈 사용시 templates, files 디렉토리가 있고 그안에 파일을 사용 > 마지막에 ./handlers/main.yml 실행 

'job > ansible' 카테고리의 다른 글

windows host에서 ansible 실행하는법  (0) 2019.05.23
ansible 공부한 모듈들 정리  (0) 2019.05.02
ansible- error  (0) 2019.04.26
ansible-3 playbook  (0) 2019.04.25
ansible-2 hosts(그룹), 멱등성  (0) 2019.04.22

+ Recent posts