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

데몬실행여부 체크 플레이북이니까 디렉토리명은 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

엘라스틱서치랑 rdb 비교

http://blog.naver.com/PostView.nhn?blogId=indy9052&logNo=220940682941&parentCategoryNo=&categoryNo=66&viewDate=&isShowPopularPosts=false&from=postView

 

[Elasticsearch] RDB VS Elasticsearch

일단 기존에 RDB와 비교해서 차이점이나 개념 등을 잡으면 더 효율적인 면이 있을 것으로 보여진다.기존...

blog.naver.com

https://hsp1116.tistory.com/62

 

엘라스틱서치 정리

Elasticsearch Elasticsearch와 RDBMS의 데이터구조 비교 Elasticsearch RDBMS 인덱스 데이터베이스 타입 테이블 도큐먼트 로우 필드 컬럼 매핑 스키마 클러스터 엘라스틱서치의 가장 큰 시스템 단위. 하나의 클러..

hsp1116.tistory.com

 

 

예제

https://12bme.tistory.com/171

 

[ELK] 엘라스틱서치(ElasticSearch) 시작하기

ELK스택 ElasticSearch를 실습하기 전에 ELK스택에 대해 알아보겠습니다. 데이터과학은 깊고 넓은 분야입니다. 분야가 다양하기때문에 데이터과학은 각 분야의 팀워크가 생명입니다. 아래는 데이터 과학을 구성하..

12bme.tistory.com

 

 

 

 

 

 

 

 

 

 

 

 

 

 

yum.repos.d]# yum list | grep python
Traceback (most recent call last):
  File "/usr/bin/yum", line 29, in ?
    yummain.user_main(sys.argv[1:], exit_code=True)
  File "/usr/share/yum-cli/yummain.py", line 309, in user_main
    errcode = main(args)
  File "/usr/share/yum-cli/yummain.py", line 178, in main
    result, resultmsgs = base.doCommands()
  File "/usr/share/yum-cli/cli.py", line 345, in doCommands
    self._getTs(needTsRemove)
  File "/usr/lib/python2.4/site-packages/yum/depsolve.py", line 101, in _getTs
    self._getTsInfo(remove_only)
  File "/usr/lib/python2.4/site-packages/yum/depsolve.py", line 112, in _getTsInfo
    pkgSack = self.pkgSack
  File "/usr/lib/python2.4/site-packages/yum/__init__.py", line 662, in 
    pkgSack = property(fget=lambda self: self._getSacks(),
  File "/usr/lib/python2.4/site-packages/yum/__init__.py", line 502, in _getSacks
    self.repos.populateSack(which=repos)
  File "/usr/lib/python2.4/site-packages/yum/repos.py", line 260, in populateSack
    sack.populate(repo, mdtype, callback, cacheonly)
  File "/usr/lib/python2.4/site-packages/yum/yumRepo.py", line 168, in populate
    if self._check_db_version(repo, mydbtype):
  File "/usr/lib/python2.4/site-packages/yum/yumRepo.py", line 226, in _check_db_version
    return repo._check_db_version(mdtype)
  File "/usr/lib/python2.4/site-packages/yum/yumRepo.py", line 1226, in _check_db_version
    repoXML = self.repoXML
  File "/usr/lib/python2.4/site-packages/yum/yumRepo.py", line 1399, in 
    repoXML = property(fget=lambda self: self._getRepoXML(),
  File "/usr/lib/python2.4/site-packages/yum/yumRepo.py", line 1391, in _getRepoXML
    self._loadRepoXML(text=self)
  File "/usr/lib/python2.4/site-packages/yum/yumRepo.py", line 1381, in _loadRepoXML
    return self._groupLoadRepoXML(text, ["primary"])
  File "/usr/lib/python2.4/site-packages/yum/yumRepo.py", line 1365, in _groupLoadRepoXML
    if self._commonLoadRepoXML(text):
  File "/usr/lib/python2.4/site-packages/yum/yumRepo.py", line 1201, in _commonLoadRepoXML
    result = self._getFileRepoXML(local, text)
  File "/usr/lib/python2.4/site-packages/yum/yumRepo.py", line 974, in _getFileRepoXML
    cache=self.http_caching == 'all')
  File "/usr/lib/python2.4/site-packages/yum/yumRepo.py", line 811, in _getFile
    http_headers=headers,
  File "/usr/lib/python2.4/site-packages/urlgrabber/mirror.py", line 412, in urlgrab
    return self._mirror_try(func, url, kw)
  File "/usr/lib/python2.4/site-packages/urlgrabber/mirror.py", line 398, in _mirror_try
    return func_ref( *(fullurl,), **kwargs )
  File "/usr/lib/python2.4/site-packages/urlgrabber/grabber.py", line 936, in urlgrab
    return self._retry(opts, retryfunc, url, filename)
  File "/usr/lib/python2.4/site-packages/urlgrabber/grabber.py", line 854, in _retry
    r = apply(func, (opts,) + args, {})
  File "/usr/lib/python2.4/site-packages/urlgrabber/grabber.py", line 922, in retryfunc
    fo = URLGrabberFileObject(url, filename, opts)
  File "/usr/lib/python2.4/site-packages/urlgrabber/grabber.py", line 1010, in __init__
    self._do_open()
  File "/usr/lib/python2.4/site-packages/urlgrabber/grabber.py", line 1093, in _do_open
    fo, hdr = self._make_request(req, opener)
  File "/usr/lib/python2.4/site-packages/urlgrabber/grabber.py", line 1202, in _make_request
    fo = opener.open(req)
  File "/usr/lib64/python2.4/urllib2.py", line 358, in open
    response = self._open(req, data)
  File "/usr/lib64/python2.4/urllib2.py", line 376, in _open
    '_open', req)
  File "/usr/lib64/python2.4/urllib2.py", line 337, in _call_chain
    result = func(*args)
  File "/usr/lib64/python2.4/site-packages/M2Crypto/m2urllib2.py", line 82, in https_open
    h.request(req.get_method(), req.get_selector(), req.data, headers)
  File "/usr/lib64/python2.4/httplib.py", line 810, in request
    self._send_request(method, url, body, headers)
  File "/usr/lib64/python2.4/httplib.py", line 833, in _send_request
    self.endheaders()
  File "/usr/lib64/python2.4/httplib.py", line 804, in endheaders
    self._send_output()
  File "/usr/lib64/python2.4/httplib.py", line 685, in _send_output
    self.send(msg)
  File "/usr/lib64/python2.4/httplib.py", line 652, in send
    self.connect()
  File "/usr/lib64/python2.4/site-packages/M2Crypto/httpslib.py", line 55, in connect
    sock.connect((self.host, self.port))
  File "/usr/lib64/python2.4/site-packages/M2Crypto/SSL/Connection.py", line 174, in connect
    ret = self.connect_ssl()
  File "/usr/lib64/python2.4/site-packages/M2Crypto/SSL/Connection.py", line 167, in connect_ssl
    return m2.ssl_connect(self.ssl, self._timeout)
M2Crypto.SSL.SSLError: tlsv1 alert protocol version

 

 

repo 등록돼있는 URL중 지원하지않는 centos5의 ssl 버전때문이다.

설치해야하는 레포때문에 문제가 나는거라면 ssl 새로 설치해서 yum을 새로 설치한 ssl을 참조하도록 하거나(당연히 yum을 컴파일 설치해야함)

설치에 필요하지 않는 레포때문에 문제가 나는거라면 그냥 그 레포 삭제해버리면 된다.
ㄴ나는 dell 레포때문에 문제가 났었는데 dell 레포 필요하지 않아서 삭제해버림

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

sysdig 로 해킹당한 서버 분석해보기  (0) 2019.06.20
서버 점검..  (0) 2019.06.11
nodejs npm , socket.io 설치  (0) 2019.04.10
ionice  (1) 2019.04.09
strace debug  (0) 2019.02.21

+ Recent posts