분류 전체보기 검색 결과

178개 발견
  1. 미리보기
    2018.08.22 - mr.november11

    [Ansible] 2 . Ansible Playbook 활용 및 예제

  2. 미리보기
    2018.08.21 - mr.november11

    [BMW] BMW 화재 관련 배기가스재순환장치(EGR) 리콜 대상 확인 방법 및 서비스 센터 방문 후기

  3. 미리보기
    2018.08.11 - mr.november11

    [Ansible] 1. Ansible 개요 및 설치 방법

  4. 미리보기
    2018.08.05 - mr.november11

    [GlusterFS] GlusterFS Client 연동 방법

  5. 미리보기
    2018.08.05 - mr.november11

    [GlusterFS] GlusterFS 설정 파일 구조 분석

  6. 미리보기
    2018.08.05 - mr.november11

    [GlusterFS] GlusterFS 명령어

  7. 미리보기
    2018.08.02 - mr.november11

    [MacOS] MacOS 에서 네트워크 관련 설정 확인 방법

  8. 미리보기
    2018.07.19 - mr.november11

    [Linux] systemctl status 실행 시 state : degraded 경우 해결법

[Ansible] 2 . Ansible Playbook 활용 및 예제

2018. 8. 22. 02:34 - mr.november11

[Ansible] 2 . Ansible Playbook 활용 및 예제

https://docs.ansible.com/ansible/2.3/ 내 문서를 Study하며 작성했습니다.

Ansible 은 ADHOC이라는 task 실행 모드를 통해 Inventory 내 서버 대상 원격 명령어 실행을 지원한다.

하지만, Ansible 의 자동화 기능중 가장 필요한 부분은 YAML 언어를 활용한 Playbook이다.

Playbook 구성

Playbook은 YAML 형식으로 작성된다. YALM 문법은 리스트 및 해쉬로 구성되어 있다.

관련 내용은 https://ko.wikipedia.org/wiki/YAML 위키페이지를 한 번 정독하고 Playbook 예제를 따라해본다면 금방 적응할 수 있다.

참고로, YAML에서는 tab을 지원하지 않는다. 매우 불편하다..

Playbook의 목적은 정해진 대상서버(hosts)에 정해진 순서의 작업들(tasks)들을 실행하는 것이다.

ansible 에서 지원하는 다양한 module을 통해 원하는 각 작업(task)을 할 수 있다.

 

Playbook 예제

1) ping

    server2 에 test 라는 유저 계정으로 ping 테스트를 수행하는 playbook

    • hosts는 하나의 서버 또는 그룹을 지정할 수 있다. wilecard(*)와 같은 patten 지정도 가능하다.

    • remote_user는 원격 서버에 접속할 계정명이다.

      playbook 내에 password를 별도로 저장하는 항목이 없는 것으로 봐서 ssh key 설정 후 ansible실행을 일반적인 경우로 생각하는 것 같다.

    • tasks에는 모듈 기반으로 필요한 작업들을 listing 하여 작성할 수 있다.

      playbook 실행은 task 단위로 top->bottom 순으로 실행된다.

      ansible 에서 지원하는 모듈 리스트 및 구체적인 사항은 ansible 공식 document URL을 참고https://docs.ansible.com/ansible/2.3

  1. ansible-playook 명령어를 통해 제작한 playbook을 실행할 수 있다.

    ssh key 설정을 하지 않았다면 -k 옵션을 별도로 지정하면 password 입력을 통해 실행 가능하다.

    개인적인 생각으로 운영자가 개입된 ansible 실행이라면 password 를 입력 후 실행하도록 하는 것이 보안상 좋을 것 같다.

     

 

2) Ping 테스트 후 User 생성

이전에 생성한 playbook에 novebmer11 라는 신규 user를 생성한다.

user 생성은 원격 서버의 root 권한이 필요하기 때문에 sudo 권한이 필요하다.

[Playbook]

 

위에 작성한 playbook을 실행 시 ping check 는 정상적으로 실행되지만, 신규 user 생성의 경우 root 권한이 없기 때문에 아래와 같이 Permission denied 에러가 발생한다. (아래 Error 메시지를 보면 user 모듈에서는 내부적으로 /sbin/useradd 쉘을 실행하여 신규 유저를 생성함을 알 수 있다.)

fatal: [server2]: FAILED! => {"changed": false, "cmd": "/sbin/useradd -m november11", "msg": "[Errno 13] Permission denied", "rc": 13}

 

위 문제를 해결하기 위해 playbook 을 수정한다.

root 권한이 필요한 user 모듈에 become 을 활용하여 sudo 를 수행하도록 한다.

이전 ansible 버전에서는 sudo_user 를 활용했지만 1.9 버전 부터는 become 모듈로 대체되었다.

ansible-playbook 명령어 실행 또한 sudo 패스워드를 입력할 수 있도록 -K 옵션을 추가로 넣어준다.

playbook 실행 시 아래와 같이 Create User task가 정상적으로 수행된 것을 확인할 수 있다.

신규 유저 생성으로 서버 내 변경이 일어났기 때문에 changed 상태로 기록된다.

대상 서버인 server4 에서 /etc/passwd을 통해 november11 계정이 추가되었음을 확인할 수 있다.

 

다른 카테고리의 글 목록

Ansible 카테고리의 포스트를 톺아봅니다

[BMW] BMW 화재 관련 배기가스재순환장치(EGR) 리콜 대상 확인 방법


1. BMW 코리아 RECALL대상 차량 조회

    - 조회를 위해 차대번호 필요

    URL : https://www.bmw.co.kr/ko/topics/owners/bmw-recall.html

   




2. 자동차 리콜센터 조회(추천)
    - 자동차 번호로 대상 확인 가능
    - 자동차 리콜센터로 조회한 결과 리콜 당첨 ...ㅠ





(8월 2일 추가) 18년 8월 2일 성수 BMW 도이치모터스 서비스 센터 방문 후기

8월 2일 자동차 정기 점검이 예약되어 있어 방문했고, 리콜 관련 점검도 가능한지 확인했다.

확인 결과, 리콜 관련 점검 및 조치는 예약이 없어도 서비스센터 방문시 바로 가능하다.

단, 현재 방문 고객이 몰려있는 상태로 점검 시간은 한없이 기다려야 한다 ..


아래 사진은 성수 BMW 도이치모터스 서비스 센터 2층이다.

신규로 지어진 건물이라 매우 쾌적하며 안마 의자도 2개나 준비되어 있다.


(8월5일 추가) 앞서 작성한 후기와 같이 EGR에 대한 긴급 점검은 당일 서비스 센터 방문을 통해 가능하다.

하지만 리콜에 의한 교체는 8월 20일 이후 예약을 통해 가능하다.


(8월21일 추가) EPG리콜 신청은 현재 BMW Plus 앱을 통해서만 가능하다.

아래 스크린 샷에서 '서비스예약' 버튼을 통해 리콜 신청을 진행하면 된다.

현재 서버 폭주로 인해 예약 일정 조회에 지연이 발생하는 것 같다.

사용자가 적은 새벽 시간에 예약하길 추천드린다.

참고로 금일 기준 예약 가능한 가장 빠른 일자는 10월 말이다.

그것도 대부분 아침 9시나 10시 일정 밖에 없다...





[결함내용]

엔진에 장착된 배기가스재순환장치 결함으로 고온의 배기가스가 냉각되지 않은 상태에서 흡기다기관에 유입, 구멍을 발생시키고, 위에 장착된 엔진커버 등에 발화되어 화재가 발생할 수 있는 가능성에 따른 리콜


[시정방법]

해당차량 전체에 대해 긴급 안전진단을 실시하고, 8월 중순부터 배기가스재순환장치(EGR) 모듈 개선품 교체


[대상차량]

120d, 220d Coupe, 320d, 320d EfficientDynamics Edition, 320d Gran Turismo, 320d Touring, 320d xDrive, 320d xDrive Gran Turismo, 325d, 420d Coupe, 420d Gran Coupe, 420d xDrive Coupe, 420d xDrive Gran Coupe, 435d xDrive Gran Coupe, 520d, 520d Touring, 520d xDrive, 525d, 525d xDrive, 525d xDrive Touring, 530d xDrive, 535d, 640d xDrive Gran Coupe, 730d, 730d xDrive, 730Ld, 740d, 740d xDrive, Gran Turismo 20d, Gran Turismo 30d, Gran Turismo 30d xDrive, Gran Turismo EfficientDynamics Edition, X1 xDrive25d, X3 xDrive20d, X3 xDrive30d, X3 xDrive35d, X4 xDrive20d, X4 xDrive30d, X5 xDrive30d, X5 xDrive40d, X6 xDrive30d, X6 xDrive40d


<*대상차량별 생산일자> 
120d: 2013.02.11∼2015.04.15 
220d Coupe: 2013.10.11.∼2015.02.25 
320d: 2013.02.28.∼2016.08.16 
320d EfficientDynamics Edition: 2011.11.08.∼2016.07.29 
320d Gran Turismo: 2013.02.26.∼2016.07.29 
320d Touring: 2013.03.08.∼2016.07.22 
320d xDrive: 2015.07.25.∼2016.07.27 
320d xDrive Gran Turismo: 2013.07.03.∼2016.07.28 
325d: 2013.07.11.∼2014.12.16 
420d Coupe: 2013.06.27.∼2016.07.26 
420d Gran Coupe: 2014.04.28.∼2016.07.29 
420d xDrive Coupe: 2014.01.21.∼2016.07.27 
420d xDrive Gran Coupe: 2014.03.14.∼2016.08.16. 
435d xDrive Gran Coupe: 2014.03.13.∼2015.04.23 
520d: 2011.08.31∼2016.07.12 
520d Touring: 2012.03.29.∼2014.04.30 
520d xDrive: 2013.05.07.∼2016.08.17 
525d: 2012.06.29.∼2014.05.23 
525d xDrive: 2011.11.22.∼2014.05.23 
525d xDrive Touring: 2011.11.23.∼2014.07.11 
530d xDrive: 2013.06.14.∼2015.04.23 
535d: 2011.08.31.∼2013.10.12 
640d xDrive Gran Coupe: 2013.02.22.∼2015.04.27 
730d: 2012.07.03.∼2013.03.26 
730d xDrive: 2012.11.14.∼2015.03.19 
730Ld: 2012.07.02.∼2015.01.28 
740d: 2012.11.19.∼2013.03.18 
740d xDrive: 2012.03.21.∼2015.03.27 
Gran Turismo 20d: 2012.06.21.∼2013.06.26 
Gran Turismo 30d: 2012.06.29.∼2014.10.22 
Gran Turismo 30d xDrive: 2012.03.22.∼2015.04.27 
Gran Turismo EfficientDynamics Edition: 2013.07.15.∼2015.04.24 
X1 xDrive25d: 2012.06.14.∼2014.02.17 
X3 xDrive20d: 2014.04.06.∼2016.11.17 
X3 xDrive30d: 2011.03.31.∼2015.05.27 
X3 xDrive35d: 2012.01.18.∼2013.02.21 
X4 xDrive20d: 2014.05.21∼2016.11.05 
X4 xDrive30d: 2014.03.03.∼2015.05.27 
X5 xDrive30d: 2013.07.20.∼2015.06.17 
X5 xDrive40d: 2014.01.11.∼2015.06.18 
X6 xDrive30d: 2014.07.07.∼2015.06.17 
X6 xDrive40d: 2014.11.26.∼2015.06.15


 



다른 카테고리의 글 목록

리뷰/기타 카테고리의 포스트를 톺아봅니다

[Ansible] 1. Ansible 개요 및 설치 방법

2018. 8. 11. 16:04 - mr.november11

[Ansible] 1. Ansible 개요 및 설치 방법

개요

Ansible은 인프라 관리 도구로 관리 대상 서버에 Agent 설치 없이 SSH 기반으로 다량의 서버를 운영할 수 있게 해준다.

일반적으로 운영으로 불리는 영역은

  • 패키지 설치
  • kernel, process 등 현황 현황 확인
  • 파일 다운로드
  • script 배포 및 실행

등이 있다.


Ansible 은 AD-HOC 이라 불리는 일회성 원격 명령어 수행을 지원하며,

YAML언어를 활용한 playbook 작업도 지원한다.

Ansible 설치 및 세팅법

1. pip를 사용한 ansible 설치

Ansible 은 python 기반으로 제공되며 pip 명령어 또는 직접 설치를 통해 쉽게 세팅 가능하다.

앞서 말했듯이 별도의 Agent 를 필요로 하지 않기 때문에 관리용 Management 서버 1대만 설정하면 된다.

pip install ansible

RHEL 이나 Cent OS 의 경우 yum 을 통해서도 설치 가능하다.

yum install ansible

2. inventory 설정

Ansible 에서는 관리 대상의 서버 리스트를 inventory라고 부른다.

inventory는 /etc/ansible/hosts 에 저장되며 서버 그룹과 호스트로 구성된다.

host는 /etc/hosts 에 사전에 등록되어 있어야 이름을 통해 해당 IP로 찾아갈 수 있다.

ex) /etc/ansible/hosts 예제

 

3. inventory 내 server 연결 테스트

ansible 은 ping 모듈을 통해 관리 장비와의 ansible 연동 테스트를 제공한다.

ssh 공개키 설정이 되어 있지 않다면 -k 옵션을 사용하여 password를 수동으로 입력해야 한다.

 

ssh 공개키 설정은

ssh-keygen 으로 공개키 생성 후

ssh-copy-id @server2 로 원격 배포가 가능하다.

공개키 세팅 후에는 -u 나 -k 옵션 없이 ansible 의 ping 체크가 가능하다.

 

마지막으로 ansible 의 setup 모듈을 사용하면 해당 장비의 관련 정보를 수집할 수 있다.

  • 관련정보 : OS 버전, NIC, Partition, Process 정보 등

결과 값은 JSON 형식을 통해 제공된다.

ansible -m setup


[참고 사이트]

https://docs.ansible.com/ansible/2.3/

다른 카테고리의 글 목록

Ansible 카테고리의 포스트를 톺아봅니다

[GlusterFS] GlusterFS Client 연동 방법

2018. 8. 5. 19:38 - mr.november11

[GlusterFS] GlusterFS Client 연동 방법

GlusterFS 로 생성한 Volume을 Mount 하는 방법은 3가지가 있다. 

  1. Gluster Fuse 모듈을 활용한 Native Client 접속
  2. Network Storage를 지원하는 NFS 프로토콜로 접속
  3. Windows Samba와 같은 SMB 프로토콜 접속(거의 사용하지 않음)

1. Gluster Fuse 모듈을 활용한 Native Client 접속

1) glusterfs fuse module 설치

 

2) glusterfs 파티션 type 으로 /etc/fstab에 추가

 

3) /etc/fstab에 추가한 파티션 mount

 

2. Network Storage를 지원하는 NFS 프로토콜로 접속

GlusterFS 에서는 Gluster NFS와 NFS-Ganesha 2가지로 NFS를 지원한다.

  • Glsuter NFS는 NFSv3만 지원하며
  • NFS-Ganesha는 NFSv3, NFSv4.x, pNFS 프로토콜을

지원한다. 

 

1) nfs type으로 /etc/fstab 에 추가

 

2) mount 및 파티션 확인

Native client 설정과 동일하다. 

 

Trouble Shooting

  • NFS mount실패 시에는 해당 volume을 재시작 하면 된다.
  • NFS의 경우 nfsrpc가 정상 동작 하지 않을 경우 문제가 발생할 수 있다. 

    GlusterFS 서버에서는 rpcbind의 상태 체크가 필요하다

  • NFS volume이 mount 됐음에도 불구하고 nfs.log에 "RPC program version not available" 로그가 남을 경우

    위 문제가 지속될 경우 문제의 Client가 mount 시도하는 Gluster NFS서버의 NFS 데몬이 crash 된다. 

    Gluster NFS는 NFSv3만 지원한다. 

    Client측에서 별도의 version을 지정하지 않을 경우 version 4로 mount를 시도하기 때문에 문제가 발생한다.

(해결방법) 해당 문제를 해겨 하기 위해서 Client 측에서 mount 시 version 3를 지정하며, noacl 모드를 설정해야 한다. 

 

Redhat Gluster Storage Guide 문서 관련 원문 

Q: Therpc actor failed to complete successfullyerrorisdisplayedinthenfs.log, even after the volume is mounted successfully. 

A: gluster NFS supports only NFS version 3. When nfs-utils mounts a client when the version is not mentioned, it tries to negotiate using version 4 before falling back to version 3. This is the cause of the messages in both the server log and the nfs.log file. 

[2013-06-25 00:03:38.160547] W [rpcsvc.c:180:rpcsvc_program_actor] 0- rpc-service: RPC program version not available (req 100003 4) [2013-06-25 00:03:38.160669] E [rpcsvc.c:448:rpcsvc_check_and_reply_error] 0-rpcsvc: rpc actor failed to complete successfully 

To resolve the issue, declare NFS version 3 and the noacl option in the mount command as follows: 

# mount -t nfs -o vers=3,noacl server1:/test-volume /mnt/glusterfs


'GlusterFS' 카테고리의 다른 글

[GlusterFS] GlusterFS 설정 파일 구조 분석  (0) 2018.08.05
[GlusterFS] GlusterFS 명령어  (0) 2018.08.05

다른 카테고리의 글 목록

GlusterFS 카테고리의 포스트를 톺아봅니다

[GlusterFS] GlusterFS 설정 파일 구조 분석

2018. 8. 5. 18:35 - mr.november11

[GlusterFS] GlusterFS 설정 파일 구조 분석

glusterfs는 /var/lib/glusterd 폴더 내 설정 값으로 저장된다.

/var/lib/glusterd 내 파일들은 Gluster 관리 데몬에 의해 생성된 값만 유효하다.

운용자가 수동으로 변경했을 경우 정상 동작을 보장하지 않는다.. 

Server and Client용 vol file

  • Server and Client용 vol file 경로 : /var/lib/glusterd/vols//
  1. volume 구성 정보 확인 /var/lib/glusterd/vols//info 파일로 확인 

    • 4+2 Dispersed Volume인 경우
    • 1+2 Disperse Volume인 경우
    • 3 replicate Volume인 경우

 

Management Daemon 용 vol file

  • Management Daemon 용 vol file 경로 : /etc/glusterfs/glusterd.vol 

     


'GlusterFS' 카테고리의 다른 글

[GlusterFS] GlusterFS Client 연동 방법  (0) 2018.08.05
[GlusterFS] GlusterFS 명령어  (0) 2018.08.05

다른 카테고리의 글 목록

GlusterFS 카테고리의 포스트를 톺아봅니다

[GlusterFS] GlusterFS 명령어

2018. 8. 5. 17:17 - mr.november11

[GlusterFS] GlusterFS 명령어

 

GlusterFS version 확인

glusterfs --version 또는 glusterd --version

 


'GlusterFS' 카테고리의 다른 글

[GlusterFS] GlusterFS Client 연동 방법  (0) 2018.08.05
[GlusterFS] GlusterFS 설정 파일 구조 분석  (0) 2018.08.05

다른 카테고리의 글 목록

GlusterFS 카테고리의 포스트를 톺아봅니다

[MacOS] MacOS 에서 네트워크 관련 설정 확인 방법

MacOS Terminal에서 명령어를 통해 확인하는 방법 정리

IP 주소 확인

ifconfig | grep inet 명령어로 확인 가능하다.

아래 예제는 테터링 기준 IP이며 172.20.10.5 인 것을 확인할 수 있다.

127.0.0.1 및 fe80::1는 localhost로 내부적인 용도로 활용된다. 

 

Default Gateway IP 주소 및 라우팅 테이블 확인

Default Gateway는 외부 네트워크로 통신할 때 지정하는 IP 주소이다. 

Linux 및 Unix 명령어와 같이 netstat -rn 을 통해 확인 가능하다.

명령어 실행 결과 아래와 같이 Routing Table 도 함께 확인할 수 있다.

Mac OS가 Multi Network를 사용한다면, 라우팅 테이블을 통해 별도의 라우팅 설정이 필요할 수 있다. 

 

 


다른 카테고리의 글 목록

홈서버 카테고리의 포스트를 톺아봅니다

 

[Linux] systemctl status 실행 시 state : degraded 경우 해결법

 

현상

systemctl status 실행 시 state 상태가 degraded 일 경우가 있다.

 

원인

확인 결과 일부 service가 정상적으로 실행되지 못 할 경우에 degrade 상태가 발생한다.

실패한 서비스는 systemctl --failed 명령어를 통해 파악 가능하다.

이번 경우에는 crontab이 정상적으로 실행되지 않아 trouble shooting을 위해 systemctl 을 확인 했으며 아래와 같이 crond.service 가 loading failed 상태임을 확인할 수 있었다.

solution

구글링을 통해 해결 방법을 알아본 결과 systemctl reset-failed를 실행하면 된다.

systemctl reset-failed 실행 후 systemctl --failed 를 통해 failed 상태의 service가 모두 정상화 되었음을 확인 할 수 있다.

문제는 failed 상태가 아님에도 불구하고 crond 서비스가 여전히 inactive 상태라는 점이다.

근본적인 문제 해결 방법은 해당 서비스를 다시 start 한 후 해소되었다.

systemctl --failed 상태인 서비스들은 별도로 기록하여 reset-failed 실행 후 status까지 최종 확인하는 것이 필요하다.

 

다른 카테고리의 글 목록

Linux 카테고리의 포스트를 톺아봅니다