웹서핑을 하다가 무심코 알게된 왕 저렴한 호스팅 서비스...

    - https://www.clien.net/service/board/use/12730123?od=T31&po=2&category=&groupCd=



엄청난 지연 속도로 솔직히 우리나라에서 사용하기에 어려움이 많은 호스팅 서비스이지만,

뜬금없는 서비스 사용 장애를 보이기도 한다고는 하지만,

저렴한 맛에 공인 IP를 갖고 있는 리눅스 머신을 하나 갖고 싶다는 욕심에 과감히 질렀는데....



서버 하나 만들어서 Ubuntu 16.04 하나 올리고... locale 잡아주고 환경 설정 좀 해줬는데...


   "그런데, 이젠 뭘하지?"




그러다가 문득... 챗봇 하나 만들어볼까?!


예전에 텔레그램 챗봇 만든다고 AWS에서 lambda 서비스 같은거 가지고 장난해봤는데...

이번엔 "카카오톡"을 대상으로 하나 만들어보자! 라는 생각이 불끈(?) !!!




그런데... 자료를 찾다보니...

    - https://github.com/plusfriend/auto_reply



API형 스마트채팅 신규 등록을 2018년 11월 30일부터 중단한단다... 이런!

뭐 그래도 그 안에 등록을 하면 2019년까지는 사용할 수 있다니

지금 발견(?)한 것이 다행이다~!!! 1년간 재미있게 사용하면 된거지 뭐~!!







만들어보고자 하는 채팅 봇의 개발/운영 환경은 다음과 같다.


    - 채팅 봇이 위치할 곳은 "공인IP를 갖고 있는 Ubuntu 16.04 LTS 환경"

    - 채팅 봇은 Python 2.7.x 버전으로 구현

    - 가능한 기본 라이브러리로만 구현




이제 하나씩 해보자.





1. 플러스친구 앱 생성


    - 채팅 봇이라는 것이 결국은 한 명의 사람 역할을 하는 것이니만큼, 별도의 계정이 필요하다.

    - 그래서 카카오에서는 플러스친구라는 것을 제공해준다. 아래 링크에서 신규로 등록하자.


        . https://center-pf.kakao.com/


    - 내 비즈니스(?)를 위한 방을 하나 만들고, 그 안에서 실제 일을 할 플러스친구를 하나 만드는 것이다.



    - 음... 과금문제가 궁금했는데... 무료로 메시지 1000건은 보낼 수 있다보다.

    - 그런데... 보다보니 내가 생각한 메시지가 아닌가보다. push로 보내는 광고같은 메시지가 1000건 제한인가보다.

    - 대화는 그냥 막해도 되나보다~ 으음?! 좋은데?! 그런데, 카카오톡의 지명도에 비해 채팅 봇은 조용하지?!





2. 채팅 봇 등록 맛보기


    - 카카오톡에서는 "앱"이라는 이름으로 지칭하는 것 같은데, 난 내마음대로 "채팅 봇"이라고 지칭할거다!


    - 플러스친구 관리 페이지를 보면 왼쪽 메뉴 중에 "스마트채팅"이라는 것이 있다. 한 번 클릭해보자.



    - 우리는 대화형 "채팅 봇"을 만들 것이니 당연히 오른쪽의 "API형"으로 설정하면 된다.



    - 어!? 그런데... "앱 URL"엔 뭘 넣어야 하지?! "API테스트"는 또 뭐고?!


    - 상태를 보아하니.... 일단 뭘 만들고 난 이후에 여기에 등록을 해야할 것 같다. 친절하지 않은 카카오 !!!






3. 기본 코드 만들


    - "앱 등록"을 위한 기본적인 python 코드를 만들어보자.


#!/usr/bin/env python

#-*-coding: utf-8-*-


import os

from flask import Flask, request, jsonify


app = Flask(__name__)


@app.route('/keyboard')

def Keyboard():


    contents = {

        "type"     : "buttons",

        "buttons" : [ "살아있어" ]

    }


    return jsonify( contents )



if __name__ == "__main__":

    app.run( host = '0.0.0.0', port = 7000 )


    - 위 코드를 저장한 다음에 실행을 하고자 하면 에러가 나올 수도 있다.


Traceback (most recent call last):

  File "./whatwant.py", line 5, in <module>

    from flask import Flask, request, jsonify

ImportError: No module named flask 


    - 귀찮더라도 추가 패키지 설치를 해주자.


$ sudo apt-get install python-flask


    - "채팅 봇"을 운영하기 위해서는, 웹서버 역할을 할 아이가 필요하다.

    - 별도로 웹서버를 띄우면 번거로우니, flask로 간단히 해결하고자 하는 것이다.






4. 앱 등록하기


    - 이제 등록하자 !!!


    - 위에 만든 코드를 일단 실행하자.


$ chmod +x ./whatwant.py


$ ./whatwant.py

 * Running on http://0.0.0.0:7000/ (Press CTRL+C to quit)


    - "앱 URL"에 python이 실행되고 있는 서버의 주소를 써주고선 "API 테스트"를 클릭해보자.



    - 제대로 값이 리턴된 것을 확인할 수 있다. 앗싸~!!!

    - 일단 등록까지는 마쳤다!!!








5. 스마트채팅 시작하기


    - 실제 카카오톡에서 정상적으로 동작하기 위해서는 등록된 앱을 시작시켜줘야 한다.



    - 오른쪽에 있는 API형을 시작하면 된다.

    - 카카오톡에서 등록된 플러스친구를 찾아 1:1 채팅을 하면 뭔가 나오는 것을 볼 수 있을 것이다.









6. 미세먼지 정보를 얻어오기 위해서


    - 음... 개인적인 목적으로 우리 동네의 미세먼지 정보를 불러오는 아이를 만들고 싶었다.

    - 그래서 찾아본 미세먼지 정보 API를 제공해줄 수 있는 곳...


        . https://www.data.go.kr


    - 아래와 같이 공공데이터포털의 오픈 API 부분을 보면 원하는 것을 찾을 수 있다.



    - 회원가입 후, 로그인을 하고...



    - 위와같이 대기오염정보 조회 서비스를 찾을 수 있다.



    - "활용신청"을 누르면 공짜로 즉시 승인되어 API를 사용할 수 있게 된다... 하지만...



    - Chrome에서 들어가려고하니... 위와 같이... 이런! 파일 다운로드는 하지 않을건데... 그럼에도... 결국은 IE에서...




    - 개발을 목적으로 하는 것과 운영을 목적으로 하는 것을 구분하는 것 같다. 개발용도로도 24개월간은 지원해준다.



    - 마이페이지를 통해서 등록된 서비스를 볼 수 있다. 즉시 승인이라고는 하는데...

    - 서버에 실제 등록되기까지에는 시간이 좀 걸리는 것 같다. (즉, 바로 사용이 안된다)



    - "일반 인증키" 발급 신청을 하면 위와 같이 일반 인증키가 나오는데, 이걸 이용해서 API를 사용할 수 있는 것이다.

    - 미리보기를 이용하면 샘플처럼 결과를 확인할 수 있는데, 필자 같은 경우 1시간 정도 후에 가능했다.





7. 뭔가 그럴듯한 코드 만들기


    - 미세먼지 정보를 얻어올 수 있는 API까지 확보를 했으니 코드를 만들어 보자.


    - 위에서 만든 코드 파일을 개선시켜보겠다.


#!/usr/bin/env python

# -*- coding: utf-8 -*-


import os

import requests

from flask import Flask, request, jsonify


app = Flask(__name__)



@app.route('/keyboard')

def Keyboard():


    return jsonify( {"type" : "text"} )





@app.route('/message', methods=['POST'])

def message():


    content = request.json['content']


    if( u"안녕" in content ):

        contents = { 'message': { 'text' : u"안녕하세요" } }


    elif( u"사랑" in content ):

        contents = { 'message': { 'text' : "저도 사랑해요" } }


    elif( u"뭐야" in content ):

        contents = { 'message': { 'text' : "저도 제가 뭔지 모르겠어요" } }


    elif( u"미세먼지" in content ):

        url  = "http://openapi.airkorea.or.kr/openapi/services/rest/"
        url += "ArpltnInforInqireSvc/getMsrstnAcctoRltmMesureDnsty"
        url += "?serviceKey=1234"
        url += "&numOfRows=10&pageSize=10&pageNo=1&startPage=1"
        url += "&dataTerm=DAILY&ver=1.3&_returnType=json"
        url += "&stationName=%EB%8F%99%ED%83%84"

        r = requests.get( url )

        contents = { 'message': { 'text' : "죄송합니다만, 미세먼지 정보를 확인하지 못했어요!" } }
        if( r.status_code == 200 ):

            items = r.json()
            if( 'list' in items.keys() ):

                item  = u"%s 측정된" % items['list'][0]['dataTime']
                item += u"\n동탄의 미세먼지는"
                item += u"\npm10=%s, pm25=%s 입니다" % (items['list'][0]['pm10Value'], items['list'][0]['pm25Value'])
                item += u"\n24시간 예측값은"
                item += u"\npm10=%s, pm25=%s 입니다" % (items['list'][0]['pm10Value24'], items['list'][0]['pm25Value24'])
                item += u"\n입니다."

                contents = { 'message': { 'text' :  item } }

    else:
        contents = { 'message': { 'text' : content + u"가 무슨 말이야?" } }

    return jsonify( contents )


if __name__ == "__main__":
    app.run( host = '0.0.0.0', port = 7000 )


    - button 등을 이용한 대화법도 있지만, 그냥 사람같은 대화를 원해서 위와 같이 해봤다.


    - 서버에 채팅 봇을 계속 띄워놓기 위해서는 다음과 같이 실행하면 된다.


$ ./whatwant.py &


    - 제대로 서비스 하려면 log도 남겨야 할 것 같고 뭐 기타 등등 해야할게 많을 것 같다.

    - 하지만, 지금은 그냥 그럴듯하게만 하면 되는게 목표니 여기까지만~^^






8. 테스트 하기


    - 스마트폰 화면 캡쳐가 귀찮아서.... 말로 떼우기.... ^^


    - "채팅 봇"을 껐다 켰다가 하면 카카오톡에서 대화할 때 대화를 계속 입력할 수 없을 수도 있다.

    - 이럴 때엔 대화방 나갔다가 다시 1:1 채팅걸면 된다.


    - flask를 이용해서 웹서버처럼 돌리다보니 python 에러메시지가 잘 나오지 않는다.

    - 가능하면 별도로 코드 테스트를 한 뒤에 채팅 봇에 코드 넣는 것이 좋다.

    - 아니면 중간에 계속 print 찍어야 할 수도....


    - 일단 위와 같이 하면 아래와 같이 잘 된다~ ^^


끝~ ^^


반응형


동탄에서 숯불갈비가 먹고 싶을 때, 무조건 선택하는 맛집!!!



위치는 능동 뒷동네(?)에 있다. 요즘은 핫플레이스인가!? 스타벅스도 생겼는데...


대형마트 쉬는 주말에 하나로마트에 갈 일이 있으면 겸사 겸사 가곤한다.




겉에서 보기엔 구석탱이에 쪼꼬만 그저그런 곳으로 보인다.

더군다나 입구 옆에는 슈퍼 쓰레기를 쌓아놓은 곳도 있다보니.....

하지만, 막상 들어가면 고급스러운 분위기이다.



경원궁에 엄청 자주갔지만... 먹어보지 못한 양념 소갈비.... 먹고 싶다. 추릅~



입구에있는 게임기...

아이랑 잠깐 놀기에 좋기는 한데, 관리는 잘되어 있지 않다.



신발을 벗고 들어가야 된다.

여기 말고 별도의 룸도 있다곤 하는데, 한 번도 룸으로 가보진 않아서 잘 모르겠다.



테이블 밑이 뚫려있는(?) 구조라서 양반다리를 할 필요는 없다.



나름 고급지다~



여긴 숯불이 포인트다!!!



우리 가족이 시키는 메뉴는 언제나.... 명품숯불갈비와 된장찌개 1개에 공기밥 추가~



밑반찬은 정말 깔끔하고 다 맛있다!!!



밑반찬 종류도 다양한데... 정말 다 맛있다 !!!



숯불 종류는 모르겠지만... 냄새도 안나고... 좋다 !!!



맛있는 고기 !!!



특이하게 별도로 상추를 주지 않는다.

양념된 상추 무침으로 준다.



양념  갈비이다 보니 불판이 쉽게 타는데... 불판 갈아달라고 하면 잘 갈아주신다.

불판이 1회용이다. 탄거 같으면 바로 갈아주세요~!! 를 외치면 된다.




다른 메뉴도 맛있을 것 같기는한데.... 와이프가 허락(?) 해주시질 않으니...

나에게는 돼지숯불갈비 전용식당이 되어버린 경원궁 !



고기도 정말 맛나고, 밑반찬도 정말 훌륭한 맛집이다.

특히 우리 공주님도 밥 한그릇 뚝딱하는 곳이기에 더더욱 자주가게 되는 곳이다.




음... 너무 장점만 말한 것 같은데...


굳이 단점을 하나 꼽자면...

서빙해주시는 분들이 많이 계시는데 친절한 분도 계시지만 조금 친절하지 않으신 분들도 계신다.

가끔은 우리가 돼지를 먹어서 그러나!? 싶은 생각이 들기도 하는...

그렇다고 막 불친절한 뭐 그런건 아닌데... 조금은 아쉬운?! 그 정도!?




(업체에 그 어떤 지원을 받지 않은, 우리 가족이 자주 다니는 곳을 소개하는 포스팅입니다)

반응형

'먹거리탐방' 카테고리의 다른 글

[동탄 맛집] 돈까스 클럽  (0) 2019.01.19
[동탄 맛집] 바담칼국수보쌈  (0) 2019.01.18
[동탄 맛집] 백청우 칼국수  (0) 2016.03.27
[동탄 맛집] 항아리 보쌈  (0) 2016.03.27
[동탄 맛집] 홍익돈까스  (0) 2011.11.19


항상 아이와 같이 할만한 것이 없을지 찾던 中 알게 된 새로 생긴 카페...


카페는 카페인데... 뭔가 특이한 카페... 더 카핑 (the carffing)



동탄에서 가까운 곳에 있다. 우리집에서는 약 15분 이내...?!


기흥 인터체인지 쪽으로 가다가 인터체인지 안들어가고 그냥 쭈우욱 들어가면 나타난다.


사람들이 많아서 자리 찾기가 어렵긴 하지만, 주차장도 잘 되어 있다.





카페의 풍경이다.


잘못 올린 사진 아니냐고!? 아니다!! 자동차경매장을 그대로 카페로 만들었다.


렌터카로 유명한 AJ 에서 만든 카페라고 한다.


왠지 어울린다.... 자동차경매장을가지고 카페를 만들다니...!!




카페 건너편에는 장관이 펼쳐져 있는데...


사진의 왼쪽의 빨간 것들은 전부 코카콜라 차량이다~ 으잉!?



오픈시간은 10시 ...



킥보드는 입구에 주차를 해놓고 입장해야 합니다!


그리고 2층은 No Kids Zone !!!



1층 풍경이다.


넓다~ 넓다~ 그런데 의외로 테이블이 별로 없다.


그리고 사람이 많다~ 정말 많다~


그래서 앉을 자리가 없다.


아예 카페로 피서를 온 가족들이 많다보니.... 앉을 자리가 더더욱 없다~~~!!




입구에서 오른편을 보면 보이는 주문 테이블~


뭔가 정신이 없다.



2층 풍경이다.


넓다~ 하지만 테이블이 많지는 않다~


하지만 한가하다!


이유는!? No Kids Zone


중학생 이후로만 사용할 수가 있단다.



주문할 수 있는 것들...



빵!


비싸고 맛없게 생겼는데...(구석 자리에 조명도 엉망이라 정말 맛없게 생겼다)


막상 먹으면 맛있다. 상당히 맛있었다!!!



1층 주문하는 곳 쪽에서 들어갈 수 있는 묘한~ 공간.


여기에서 애니메이션 같은 것도 틀어준다고 한다.


대부분 자리 잡고 캠핑 온 기분을 즐기고 있다.



1층에서 나갈 수 있는 잔디밭~


엄청 넓지는 않지만 아이랑 살짝 놀기엔 재미났다...







넓직 넓직 한 것은 정말 맘에 든다.


그런데, 1층은 소리가 좀 웅성웅성 울리고 시끄럽고..... 자리도 없고... 주문하면 엄청 오래 걸리고...


주차장도 넓긴 넓은데... 관리도 안되고...


솔직히 카페의 문제라기 보다는 손님들의 매너가 좀 부족한 느낌이긴 했지만...



오픈한지 얼마 안되었을 때 가서 그런 것인지, 아니면 내가 간 날만 그런 것인지는 모르겠지만... 뭐 그랬다~





그냥 가끔 기분 전환을 위해서는 가볼만한 곳인 것 같다.



앞으로 조금씩이라도 뭔가 더 나아지겠지... ^^

반응형


영화 소개 프로그램에서 재미나게 보여서 선택한 영화...


이하 내용 중에는 스포일링이 있을 수도 있으니, 스포일링이 싫으신 분은 "Back!"



친구들과 모였을 때 (특히 술 마실 때?!) 하는 게임... "진실 또는 도전"


사실 진실게임은 해봤어도, "진실 또는 도전"이라는 게임은 처음 들어봤다.


게임 내용은 단순하다.


질문에 진실을 말하던지, 아니면 시키는 것을 하던지... (나중에 꼭 해봐야겠다... 술 마실 때 하면 재미날듯~)




영화의 메인 테마는 제목과 같은 "Truth Or Dare" 게임이다.


큰 줄거리는 전형적인 젊은 친구들끼리 우연히 엮이게 되는 공포, 스릴러 장르와 비슷한 구성이다.




여자 주인공을 중심으로 친구 무리들이 있고... 우연히 말도 안되는 게임에 관여가 되고...


친구들 한 명씩 죽어나가고... 게임의 비밀을 파해치고... 결국은...




15세 관람가이지만, 중간에 잠깐 뭔가 나오기도 하고...






주인공은 'Lucy Hale'이라는 89년생 미국 아가씨로 영화배우이자 가수다.


'아메리칸 아이돌'의 스핀오프인 '아메리칸 쥬니어'에서 마지막 5명에 뽑히게 되어 가수가 되었단다.


하지만, 주요 활동은 TV 드라마 中 "pretty little liars" 시리즈이다. 상도 이 프로그램을 통해서 엄청 받았다.


공포/스릴러 TV 프로그램으로 떠서 그런 것인지, 영화도 공포/스릴러를 많이 했다.





뭐 그렇다.



350만 달러 투자해서 9,250만 달러 벌었으니 흥행성적은 나름 대박난 영화인 것 같다.




네이버 평점을 보면, 평론가 점수와 네티즌 점수의 차이가 크다.


- 관람객 : 8.21

- 평론가 : 3.50

- 네티즌 : 7.40


IMDb 점수는 4.9, Tomatometer는 14% ... 평이 좋지 않다.






개인적인 평은... 음... 킬링타임용으로 본다면 말리지는 않겠지만...


없는 시간 쪼개서 볼만한 영화는 아닌 것 같다.




사실, 주인공 빼고는 캐릭터가 뭔가 정리가 안되어 있다.


주인공 외의 인물들은 뭐 이랬다가 저랬다가... 뭔가 그 인물의 스토리가 있어보이는데 설명도 충분치 않고...


그리고 결말도 좀...


반응형

배포본 인기 순위를 확인할 수 있는 사이트 중에서
그나마 가장 영향력이 큰 distrowatch에서 2011년부터 부동의 1위를 차지하고 있는 Linux Mint 이다.

- [공식 사이트] https://distrowatch.com/
- [소개 포스팅] http://www.whatwant.com/704

(최근에 Arch 기반의 Manjaro가 인기가 급상승하고 있지만 Ubuntu 기반의 Mint를 이기긴 힘들거다 ^^)


'2018년 2월 3일' 기준으로 다운로드 받을 수 있는 내역은 아래와 같다.



그런데, 위 이미지에서 메뉴를 살펴보면 "LMDE 2"라는 항목이 보일 것이다.

기본적으로 Linux Mint는 Ubuntu를 base로 하지만,
Debian을 base로 하고 있는 배포판으로 "LMDE 2"라는 이름으로 제공해주고 있다.

Mint는 Ubuntu의 패키지를 그대로 사용할 수 있다는 장점이 있는 반면
Ubuntu와 마찬가지로 버전이 바뀔 때 재설치 수준의 대대적인 빅뱅 업그레이드(?)를 수행해야 한다.
(상위 버전으로 올릴 수는 있지만 솔직히 서비스를 하고 있는 서버에서 상당히 부담스러운 작업이다)

반면 LMDE의 경우에는 Debian 패키지를 사용하고, 말 그대로의 Rolling Release를 하게 되므로
지원기간 만료 걱정없이 작은 패키지 업그레이드 수준으로 꾸준히(?) 사용할 수 있다는 장점이 있다.




일단 Ubuntu에 중독되어 있는 필자이기에..... Linux Mint를 선택하도록 해보겠다.
그런데, 그냥 Ubuntu 쓰면 되는데 왜 Mint가 인기일까?





▶ VirtualBox에 Linux Mint 설치 時 이슈

- 증상 : Linux Mint 18.3 다운로드 후 VirtualBox에 설치하고자 하였으나 화면이 정상 출력이 안됨!
- 환경 : Windows7 - VirtualBox Version 5.2.6
- 해결 : 디스플레이 옵션에 3D를 켰더니 해결이 되었다. 이유는 모르겠음!


▶ 한글 지원

- 예전에는 한글 지원이 부족했다고 하는데... 최근에는 지원 잘된다.





▶ VirtualBox Guest Additions 설치

- 제대로 사용하기 위해선 Guest Additions를 설치해야 한다.



▶ Update

- 그냥 Ubuntu 사용하듯이 하면 된다. "sudo apt-get update / upgrade" 모두 잘 된다.



▶ 메뉴

- Windows의 시작메뉴와 비슷한 구성이다.



설치하고 이것 저것 해보는데...


내가 느낀 점은.... 음... 예쁜 우분투다!


그렇다고해서 우분투 짝퉁이 아니라....

우분투를 사용하는 분이라면 Linux Mint로 넘어가는 것을 고려할 가치가 있다는 말이다.



★ "sudo apt-get update"를 실행할 때에 해시 값이 틀리다고 나오면,
     저장소를 kr 쪽으로 변경하고 해보면 해결이 된다.


반응형

2010년도였나!? 까마득히 옛날에 알게된 Xpad인데... 아직도 살아있다!!!
반가워서 포스팅을 해본다.


Ubuntu를 사용하면서 바탕화면에 놓고 사용할 포스트잇 같은 SW가 없을까 하다가 찾아낸 쓸만한 유틸리티이다.


https://launchpad.net/xpad


최근까지도 bug fix가 이루어지고 있는 놈이다!



설치는 정말 쉽다. 왜냐하면 패키지로 제공해주고 있기 때문에...

최신 버전을 다운로드 받아서 설치할 수도 있겠지만, 이런 유틸리티는 그냥 패키지로 관리하는게 편하다.


$ sudo apt-get install xpad



설치가 끝나면 예쁘게 아이콘으로 만나볼 수 있다.


첫 실행을 하면 다음과 같은 도움말을 확인할 수 있다.


노란색 메모장 밑부분에서 마우스 오른쪽 버튼을 누르면 여러 툴바를 추가할 수 있는 메뉴가 나온다.

이 중에서 "Add Preferences to Toolbar"를 선택하자.



추가된 툴바를 누르면 몇 가지 설정을 손볼 수 있다.

그리고 아주 친절하게도 한글로 나온다 (@_@)



메모 내용도 한글로 잘 써지고.... 제목줄에서 마우스 오른쪽 버튼을 누르면 "항상 위"에 창이 나오게 할 수도 있다.



가볍게 사용할 수 있는 아주 편하고 좋은 포스트잇 유틸리티이다!



반응형

 

반응형

'Sally's Home School' 카테고리의 다른 글

물의 상태변화 1  (0) 2016.12.10


앞에서 playbook을 사용하는 것을 살짝 맛봤는데,

이번에는 조금 더 진보된 playbook을 작성해서 사용해보자.





1. 새로운 playbook 작성


    - "apt-get upgrade"를 실행시키기 위한 playbook이다.


$ nano ./apt-upgrade.yml


- hosts: all

  tasks:

    - name: Update and upgrade apt packages

      become: true

      apt:

        upgrade: yes

        update_cache: yes

        cache_valid_time: 86400 #One day




2. 설명....


    - hosts: all → hosts 파일에 등록된 모든 아이들에게 실행하라는 의미

    - tasks → 해야할 일을 적겠다라는 의미

    - name → 해야할 일을 설명? 하기 위해서 적어주는 내용

    - become: true → sudo 권한으로 일을 하겠다라는 의미

    - apt: → apt와 관련된 모듈을 사용하겠다라는 의미

    - upgrade: yes → "apt-get upgrade" 명령과 같은 의미

    - update_cache ... cache_valid_time → "apt-get update"를 실행하는데, 하루 이내라면 생략~




3. apt 모듈과 관련되어서 더 알고 싶다면 아래 링크 참조


    - http://docs.ansible.com/ansible/apt_module.html




4. 그러면 일단 실행 !!!


$ ansible-playbook ./apt-upgrade.yml 


PLAY [all] *************************************************************************************


TASK [Gathering Facts] ***********************************************************************

ok: [192.168.100.105]


TASK [Update and upgrade apt packages] **************************************************

fatal: [192.168.100.105]: FAILED! => {"changed": false, "failed": true, "msg": "Could not find aptitude. Please ensure it is installed."}

to retry, use: --limit @/srv/workspace/ansible/apt-upgrade.retry


PLAY RECAP **********************************************************************************

192.168.100.105            : ok=1    changed=0    unreachable=0    failed=1


    - 어?! 에러가 발생했다. "Could not find aptitude. Please ensure it is installed."





5. aptitude가 필요한 노예 !!!


    - 주인의 말을 제대로 알아듣기 위해서는 노예(slave)에게 aptitude 패키지를 설치해줘야 한다.


$ sudo apt-get install


    - 아니면 이마저도 ansible을 통해 설치해볼 수도 있다.



$ nano ./install-aptitude.yml


- hosts: all

  tasks:

    - name: install aptitude

      raw: sudo apt-get -y install aptitude


$ ansible-playbook ./install-aptitude.yml 


PLAY [all] *************************************************************************************


TASK [Gathering Facts] ***********************************************************************

ok: [192.168.100.105]


TASK [install aptitude] ************************************************************************

changed: [192.168.100.105]


PLAY RECAP **********************************************************************************

192.168.100.105            : ok=2    changed=1    unreachable=0    failed=0   





6. 이제 다시 실행해보자.


$ ansible-playbook ./apt-upgrade.yml 


PLAY [all] *************************************************************************************


TASK [Gathering Facts] ***********************************************************************

ok: [192.168.100.105]


TASK [Update and upgrade apt packages] **************************************************

ok: [192.168.100.105]


PLAY RECAP **********************************************************************************

192.168.100.105            : ok=2    changed=0    unreachable=0    failed=0  




이제서야 ansible 에 대해서 조금 감이 온다!

여러분도???? ^^



이제 실무에 사용하기 위해서 필요한 것들이 뭔가 더 없을지 알아봐야겠다.



반응형

+ Recent posts