많은 인터뷰에서 Linux 제작자 Linus Torvalds는 자신의 컴퓨터에서 Fedora를 선호한다고 밝혔습니다. 그러나 왜 그는 “인기있는 리눅스 배포판 데비안을 사용하지 않습니까?”에 대한 대답은 과거 데비안 리눅스에서의 설치 경험에 있다고 말했습니다.

Linus Torvalds는 지난 25 년 동안 리눅스를보다 효율적이고 사용자 친화적인 컴퓨팅 플랫폼으로 만들기 위해 끊임없이 노력하고 있습니다. 그의 창작물은 이제 다양한 사용자에게 서비스를 제공하는 많은 Linux 배포판 형태로 오픈 소스 애호가들에게 제공되고 있습니다.

Linux 및 오픈 소스 소프트웨어는 선택의 아이디어를 지원하며 이들의 원동력이 되었습니다. 그러나 시간이 지남에 따라 인터넷에는 데비안 및 우분투와 같은 기능을 기반으로 한 수많은 Linux 배포판들로 채워지게 되었습니다.

Linux 커널은 Google의 Android를 포함한 오픈 소스 운영 체제의 핵심입니다. Linux 창시자가 사용하는 운영 체제는 무엇일까요?

Linus는 자신이 소유 한 모든 장치에서 Fedora를 사용하기를 좋아한다는 것은 알려져있는 사실입니다. 하지만, 세계에서 가장 인기있는 오픈 소스 데스크탑 운영 체제인 Ubuntu 및 다른 사용자가 선호하는 데비안에 대한 그의 생각을 모를 수도 있습니다.

Linus Torvalds에게 데비안 :

Linus가 데비안을 설치하기 어려워 했다는 것은 재미있는 사실입니다. 실제로 그 일이 있은 후, 몇 년 후 2007년 인터뷰에서 그가 말했습니다.

“미안 하지만, 귀를 닫고 싶을지도 모릅니다. 저는 배포판 설치를 쉽게 해서 커널이 대부분인 내 삶을 이어나가고 싶습니다.”

Linus는 데비안을 "무의미한 연습"이라고 부릅니다. 배포의 중요한 점은 설치가 간단하고 쉬워야 한다는 것입니다.

우분투 리눅스에서 리누스 토발즈 :

또 다른 인터뷰에서 Linus는 Ubuntu Linux에 대해 이야기했습니다. 그는 데비안을 너무 기술적이라고 말하면서도, Windows 및 OS X 백그라운드에서 온 사용자에게 Linux를 친숙하게 만들어 준 Ubuntu에 감사했습니다. 여전히 그는 우분투보다 페도라를 선호합니다.

그가 말하길:

나는 몇년동안 우분투를 몇번 시도했는데, 대부분 우분투가 데비안을 사용할 수 있게 해 줬기 때문이었습니다.

지난 몇 년 동안 데비안은 설치를 더 쉽게하기 위해 노력해 왔습니다. 오늘날 데비안 설치 프로그램은 그래픽, 텍스트 또는 음성 합성 옵션을 제공하여 작업을 단순화했습니다.

블로그 이미지

부들잎

안녕하세요

댓글을 달아 주세요

Vim 에디터를 사용하고 있다면, 필수로 사용해야 하는 플러그인이라고 생각된다. 괄호, HTML 태그 및 따옴표 같은 값을 몇번의 단축키를 통해서 입력할 수 있다.

설치

surround.vim in awesome-vim 에서 설치방법을 통해서 설치를 진행한다. 별도의 옵션을 설정할 필요없이 바로 사용할 수 있다.

surround.vim

학습 팁

우선, 플러그인 작동 발식을 이해합니다.

  • 감싸기(surround)(ys)
  • 삭제(delete)(ds)
  • 바꾸기(change)(cs)

그리고, 아래에 나와있는 예제를 따라 가세요. 기본 사항들이 이해가 된다면, 코딩에 직접 하시기 바랍니다.

빠르게 개선하기 위해서는 신중한 연습을 필요로 합니다. 매일 약한 부분(ex: 따옴표로 여러단어 추가)을 파악하고, 관련 예제들을 통해 작업하고, 더 많은 예제를 직접 작성 해 봅니다. 그리고, 반복적인 테스트를 진행하시기 바랍니다. 너무 많이 생각할 필요 없이 {motion}단축키를 입력하세요.

며칠동안 하루에 몇분이라도 작업을 한다면, surround.vim을 빠르게 사용할 수 있게 될 것입니다.

  Old text                  Command     New text ~
  "Hello *world!"           ds"         Hello world!
  [123+4*56]/2              cs])        (123+456)/2
  "Look ma, I'm *HTML!"     cs"<q>      <q>Look ma, I'm HTML!</q>
  if *x>3 {                 ysW(        if ( x>3 ) {
  my $str = *whee!;         vllllS'     my $str = 'whee!';

감싸기

한 단어 감싸기

I am happy.
I am "happy".

ysiw"
(ys: 감싸기; iw: 둘러싸고 싶은 단어 위에 커서가 위치한 상태의 전체 단어; ": "로 감싸기

한 줄 감싸기

I am happy; she is sad.
(I am happy; she is sad.)

yss)
(ys: 감싸기 추가; s: 한줄 선택; ) 한 줄을 괄호로 감싼다 )

Note: 만약 yss(로 입력을 하게 되면 괄호 사이에 공간이 추가 된다. ( I am happy; she is sad. )

태그로 단락 또는 한줄 감싸기

Hello World! How are you?
<p>Hello World! How are you?</p>

yss<p>

(yss: 감쌀(surround) 한줄을 선택; <p> 태그를 추가한다.)

다중 단어 감싸기

I am very very happy.
I am *very very* happy.

ys2aw*

(ys: 감싸기 추가; 2: 감쌀 단어의 숫자; aw: 단어 주위; *: *로 깜싼다)

다중 단어 태그로 감싸기

Hello World! How are you?
<h1>Hello World</h1>! How are you?

ys2aw<h1>

다중 단어 감싸기와 동일하다.

선택 영역 감싸기

The solution is x + y = z. You responded wrongly.
The solution is `x + y = z`. You responded wrongly.

veeeeeS`
커서를 단어 x에 위치한 상태로vVisual Mode로 들어 간 후, S 선택 영역을 `로 감싸기

제거

감싸기 삭제

"Hello World!"
Hello World

ds"
(ds: 감싸기 삭제; ": 쌍따옴표 삭제하기

감싼 태그 제거

<em><p>Hello World!</p></em>
Hello World!

dstdst
감싼 태그를 삭제한다. 커서가 안쪽에 있으면, 안쪽 부터 삭제
바깥에 커서가 위치하고 있으면, 바깥 쪽부터 제거한다.

변경

감싸기 변경

"Hello World!"
*Hello World!*

cs"*
(cs: 감싸기 변경; ": 변경 대상자; *: *로 변경)

태그 변경

<p>Hello World!</p>
<em>Hello World!</em>

cst
(cst: 감싸기 변경 태그; <em>: 새로운 태그명)

일반적인 예제

계산식에 괄호 추가하기

3 + 2 + 5 + 7 / 4    # 괄호가 없기에 계산 결과가 달라진다.
3 + 2 + 5 + 7 / 4    # 3에 커서를 위치한 상태에서 veeeeS)iprint
(3 + 2 + 5 + 7) / 4
(3 + 2 + 5 + 7) / 4
print((3 + 2 + 5 + 7) / 4)

메뉴얼 참조

surround.vim에서 기본으로 제공되고 있는 surround.txt에서도 많은 예문을 찾아 볼 수 있다. 이부분만 한번씩 따라해도 어떻게 사용하는 건지 감이 온다.

Old text에 포함되어 있는 *은 커서의 위치다.

  Old text                  Command     New text ~
  "Hello *world!"           ds"         Hello world!
  [123+4*56]/2              cs])        (123+456)/2
  "Look ma, I'm *HTML!"     cs"<q>      <q>Look ma, I'm HTML!</q>
  if *x>3 {                 ysW(        if ( x>3 ) {
  my $str = *whee!;         vllllS'     my $str = 'whee!';

삭제

  Old text                  Command     New text ~
  "Hello *world!"           ds"         Hello world!
  (123+4*56)/2              ds)         123+456/2
  <div>Yo!*</div>           dst         Yo!

변경

  Old text                  Command     New text ~
  "Hello *world!"           cs"'        'Hello world!'
  "Hello *world!"           cs"<q>      <q>Hello world!</q>
  (123+4*56)/2              cs)]        [123+456]/2
  (123+4*56)/2              cs)[        [ 123+456 ]/2
  <div>Yo!*</div>           cst<p>      <p>Yo!</p>
블로그 이미지

부들잎

안녕하세요

댓글을 달아 주세요

만자로 설치후 할일

Manjaro 저장소 변경

패키지 미러 서버를 변경해서 빠른 소스 업데이트 적용하자. 조금 시간이 걸리지만, 빠르게 다운로드 적용할 수 있는 점이 있다.

sudo pacman-mirrors --fastrrack && sudo pacman -Syyu

한글 자판 설치

nimf를 포크해서 하모니카 리눅스에서 보완해주고 있습니다.

nimf-git 패키지를 이용해서 설치하여야 합니다.

설치

# 설치를 위한 툴 설치
sudo pacman -S base base-devel yay git
sudo pacman -Syu
yay -S nimf

im-config 세팅

$ vi ~/.xprofile

아래 내용을 추가

export GTK_IM_MODULE=nimf
export QT4_IM_MODULE="nimf"
export QT_IM_MODULE=nimf
export XMODIFIERS="@im=nimf"
nimf

시스템 Reboot

nimf 설치하신 후, nimf-settings 를 실행하셔서 환경 변수 설정 옵션을 disable로 변경 합니다.

만약 다른 입력기를 사용하시려면 환경 변수 설정 옵션을 반드시 꺼주셔야 합니다.

블로그 이미지

부들잎

안녕하세요

댓글을 달아 주세요

centos7 swap 용량 늘리기

현재 스왑용량 확인

[root@ ~]# swapon -s
Filename                                Type            Size    Used    Priority
/dev/nvme0n1p1                          partition       1952764 938080  -2

현재 swap 메모리 확인

[root ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:           7723        4773        1407         182        1542        2466
Swap:          1906         916         990

swap 파일생성

$ sudo fallocate -l 10GB /swapfile

REDHAT 계열

일반적인 메뉴얼 상황에서는

centos, redhat계열에서는 에서는 아래와 같은 명령어로 파일을 생성하라고 한다.

$ sudo dd if=/dev/zero of=/myswap count=8192 bs=1M

fallocate의 문제점은 파일 시스템 ioctl을 사용하여 할당을 빠르고 효율적으로 만드는 것인데, 물리적으로 공간을 할당하지 않지만, swapon syscall에는 실제 공간이 필요하다는 단점이 있습니다.

참조 : https://bugzilla.redhat.com/show_bug.cgi?id=1129205

권한 설정

$ chmod 600 /swapfile
$ ls -lh /swapfile
-rw------- 1 root root 8.0G 2020-04-29 09:20 /swapfile

swap 포맷으로 변경

[root@ /]# mkswap /swapfile
Setting up swapspace version 1, size = 8388604 KiB
no label, UUID=3a511621-1647-404f-9a4a-520361cbf6ba

swap 파일 시스템 등록

[root@ /]# swapon /swapfile
[root@ /]# swapon -s
Filename                                Type            Size    Used    Priority
/dev/nvme0n1p1                          partition       1952764 938080  -2
/swapfile                               file    8388604 0       -3
[root@ /]# free -h
              total        used        free      shared  buff/cache   available
Mem:           7.5G        4.7G        170M        182M        2.7G        2.4G
Swap:          9.9G        916M        9.0G

SWAP 용량이 늘어난 것을 확인할 수 있습니다.

부팅시 등록

$ vi /etc/fstab

아래의 내용을 추가합니다.

/swapfile    none    swap    sw    0    0

swap 삭제

swap 연결 제거

$ swapoff /swapfile

swap 파일 삭제

$ rm /swapfile

'리눅스' 카테고리의 다른 글

VIM | Surround.vim 사용하기  (0) 2020.07.09
LINUX | manjaro 설치후 할일  (0) 2020.05.29
LINUX | swap 용량 늘리기  (0) 2020.04.29
Reverse Proxy 와 Load Balencer  (0) 2020.04.06
nginx | site-enabled, site-available.md  (0) 2020.02.11
freenas | ssh key 로그인  (0) 2020.01.06
블로그 이미지

부들잎

안녕하세요

댓글을 달아 주세요

Reverse Proxy 와 Load Balencer 란 무엇입니까?

리버스 프록시 서버 및로드 밸런서는 클라이언트 서버 컴퓨팅 아키텍처의 구성 요소입니다. 둘 다 클라이언트와 서버 간의 통신에서 중개자 역할을하여 효율성을 향상시키는 기능을 수행합니다. 전용 전용 장치로 구현할 수 있지만, 현대 웹 아키텍처에서 점점 더 상용 하드웨어에서 실행되는 소프트웨어 응용 프로그램입니다.

기본 정의는 간단합니다.

  • 리버스 프록시는 클라이언트의 요청을 받아 이를 수행 할 수있는 서버로 전달한 다음, 서버의 응답을 클라이언트에 반환합니다.
  • 로드 밸런서는 들어오는 클라이언트 요청을 서버 그룹간에 분배하며, 각 경우 선택한 서버에서 적절한 클라이언트로 응답을 반환합니다.

그러나 그들은 꽤 비슷하게 들립니다. 두 유형의 응용 프로그램은 클라이언트와 서버 사이에 있으며 전자의 요청을 수락하고 후자의 응답을 제공합니다. 리버스 프록시와로드 밸런서가 무엇인지 혼동하는 것은 놀라운 일이 아닙니다. 그들을 괴롭히는 데 도움이되도록 일반적으로 웹 사이트에 배포되는시기와 이유를 살펴 보겠습니다.

로드 밸런싱(Load Balancing)

로드 밸런서는 단일 서버가 효율적으로 처리하기에 요청량이 너무 많기 때문에 사이트에 여러 서버가 필요한 경우 가장 일반적으로 배포됩니다. 여러 서버를 배포하면 단일 장애 지점이 없어 웹 사이트의 안정성이 향상됩니다. 가장 일반적으로 서버는 모두 동일한 콘텐츠를 호스팅하며, 로드 밸런서의 작업은 각 서버의 용량을 최대한 활용하고 모든 서버의 과부하를 방지하며 클라이언트에 가장 빠른 응답을 제공하는 방식으로 작업 부하를 분산시키는 것입니다.

로드 밸런서는 클라이언트가 보는 오류 응답 수를 줄여 사용자 경험을 향상시킬 수도 있습니다. 서버가 중단되는 시기를 감지하고 그룹에서 다른 서버로 요청을 전환하여이를 수행합니다. 가장 간단한 구현에서로드 밸런서는 일반 요청에 대한 오류 응답을 가로 채서 서버 상태를 감지합니다. 응용 프로그램 상태 확인은 로드 밸런서가 별도의 상태 확인 요청을 전송하고 서버 상태를 고려하기 위해 지정된 유형의 응답이 필요한 보다 유연하고 정교한 방법입니다.

일부로드 밸런서에서 제공하는 또 다른 유용한 기능은 세션 지속성 입니다. 즉, 특정 클라이언트의 모든 요청을 동일한 서버로 보냅니다. 이론적으로 HTTP 는 상태 비저장 (stateless)이지만 많은 응용 프로그램은 전자 상거래 사이트의 쇼핑 바구니와 같은 핵심 기능을 제공하기 위해 상태 정보를 저장해야합니다. 로드 밸런서가 사용자 세션의 요청을 모든 요청을 초기 요청에 응답 한 서버로 보내지 않고 다른 서버로 분배하는 경우 이러한 애플리케이션은로드 밸런싱 된 환경에서 성능이 저하되거나 심지어 실패 할 수도 있습니다.

리버스 프록시(Reverse Proxy)

로드 밸런서 배포는 여러 서버가있는 경우에만 의미가 있지만 웹 서버나 응용 프로그램 서버가 하나만 있어도 리버스 프록시를 배포하는 것이 좋습니다. 리버스 프록시를 웹 사이트의 "공개 얼굴"로 생각할 수 있습니다. 이 주소는 웹 사이트에 광고 된 주소이며, 웹 사이트에서 호스팅되는 콘텐츠에 대한 웹 브라우저 및 모바일 앱의 요청을 수락하기 위해 사이트 네트워크의 가장자리에 있습니다. 이점은 두 가지입니다.

  • 보안 강화 : 백엔드 서버에 대한 정보가 내부 네트워크 외부에 표시되지 않으므로 악의적인 클라이언트가 직접 액세스하여 취약점을 악용 할 수 없습니다. 많은 리버스 프록시 서버에는 특정 클라이언트 IP 주소의 트래픽을 거부하거나 (블랙리스트) 각 클라이언트에서 허용되는 연결 수를 제한하여 분산 서비스 거부 (DDoS) 공격으로부터 백엔드 서버를 보호하는 기능이 포함되어 있습니다.
  • 확장 성 및 유연성 향상 : 클라이언트는 리버스 프록시의 IP 주소 만 볼 수 있으므로 백엔드 인프라의 구성을 자유롭게 변경할 수 있습니다. 이는 특히 트래픽 양의 변동에 맞게 서버 수를 늘리거나 줄일 수있는로드 균형 조정 환경에서 유용합니다.

리버스 프록시를 배포하는 또 다른 이유는 웹 가속을 위한 것입니다. 응답을 생성하고 클라이언트에 반환하는 데 걸리는 시간이 줄어 듭니다. 웹 가속 기술에는 다음이 포함됩니다.

  • 압축 : 서버 응답을 클라이언트로 반환하기 전에 압축하면 (예 : gzip ) 필요한 대역폭이 줄어들어 네트워크를 통한 전송 속도가 빨라집니다.
  • SSL 종료 : 클라이언트와 서버 간의 트래픽을 암호화하면 인터넷과 같은 공용 네트워크를 통과 할 때 이를 보호합니다. 그러나 해독 및 암호화는 계산 비용이 많이 들 수 있습니다. 수신 요청을 해독하고 서버 응답을 암호화함으로써 리버스 프록시는 백엔드 서버에서 리소스를 확보하여 콘텐츠를 제공하는 주된 목적에 전념 할 수 있습니다.
  • 캐싱 : 백엔드 서버의 응답을 클라이언트에 반환하기 전에 리버스 프록시는 해당 서버의 사본을 로컬에 저장합니다. 클라이언트 (또는 클라이언트)가 동일한 요청을하면 리버스 프록시는 요청을 백엔드 서버로 전달하는 대신 캐시에서 응답 자체를 제공 할 수 있습니다. 이렇게하면 클라이언트에 대한 응답 시간이 줄어들고 백엔드 서버의로드가 줄어 듭니다.

'리눅스' 카테고리의 다른 글

LINUX | manjaro 설치후 할일  (0) 2020.05.29
LINUX | swap 용량 늘리기  (0) 2020.04.29
Reverse Proxy 와 Load Balencer  (0) 2020.04.06
nginx | site-enabled, site-available.md  (0) 2020.02.11
freenas | ssh key 로그인  (0) 2020.01.06
ansible - 자동화의 시작  (0) 2019.09.11
블로그 이미지

부들잎

안녕하세요

댓글을 달아 주세요

nginx 에서 사용방법 중에 sites-availablesites-enabled로 가상 홈페이지를 관리하는 것이 있다.
일반적으로 ln -s심볼릭을 사용해서 설정을 공유한다. 그런데 이게 미묘한 차이로 날려먹는 경우가 있어서 다시 기억하고자 글을 남긴다.

폴더의 사용정의

sites-available/

설정을 저장하는 곳이다. 여기에 설정을 만든 것은 실제로 nginx에 반영되지는 않습니다. 반영하기 위해서는 sites-enabled에 설정파일을 복사 또는 심볼릭링크를 걸어줍니다.

sites-enabled/

sites-availiable에 작성한 설정을 적용하기 위한 폴더.

sudo ln -s /etc/nginx/sites-available/example.comc.conf /etc/nginx/sites-enabled/

ln -s 명령어에서 앞에 원본파일에 대한 폴더명을 전부 적어야 한다.

상대적인 주소로 인식하지 않기 때문에 반드시 폴더명을 다 적어 준다.

설정이 제대로 적용이 되었는지 테스트

$ sudo nginx -tnginx: the configuration file /etc/nginx/nginx.conf syntax is oknginx: configuration file /etc/nginx/nginx.conf test is successful

테스트 시 문제가 없다면 nginx 를 재시작해서 적용하자

$ sudo nginx -s reloador$ sudo systemctl restart nginx

sites-availablesites-enabled폴더가 없을 때

centos7의 기본 패키지로 설치를 했을 때 위와 같은 폴더가 생성이 안되어 있는 경우가 있다. 이 때는 직접 설정을 추가 해 주자.

# /etc/nginx/nginx.confhttp {    ....    include /etc/nginx/conf.d/*.conf;    include /etc/nginx/sites-enabled/*.conf; ## 저는 여기 추가 했어요.}

위와 같이 추가하고 nginx 재시작

nginx -s reload

'리눅스' 카테고리의 다른 글

LINUX | swap 용량 늘리기  (0) 2020.04.29
Reverse Proxy 와 Load Balencer  (0) 2020.04.06
nginx | site-enabled, site-available.md  (0) 2020.02.11
freenas | ssh key 로그인  (0) 2020.01.06
ansible - 자동화의 시작  (0) 2019.09.11
Fedora 30 | uim 입력기 변경  (0) 2019.08.20
블로그 이미지

부들잎

안녕하세요

댓글을 달아 주세요

매번 비밀번호를 사용해서 로그인하는 것은 너무나 번거로운 일이다.
접속할 컴퓨터에서 key-gen을 통해서 키가 생성되어 있어야 한다.

키 생성하기

$ ssh-keygen                                                                                                                                                                                                                                          Generating public/private rsa key pair.
Enter file in which to save the key (/Users/forteleaf/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in idid_rsa.
Your public key has been saved in idid_rsa.pub.
The key fingerprint is:
SHA256:lPQOOLrnc4N2dYOy0snymLKmibxGKTrx9Vijcn/GFOg forteleaf@leaf-macbook.local
The key's randomart image is:
+---[RSA 2048]----+
|        .        |
|       o o       |
|      o.+ .      |
|     ..o.o       |
|  . ..  S...     |
|oo  ..E o o o    |
|+o ..=.B = . .   |
|+oo.*oBo%        |
|o++=.==X..       |
+----[SHA256]-----+

키 복사하기

$ ssh-copy-id forteleaf@[freenas IP]
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/Users/forteleaf/.ssh/idid_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys

Number of key(s) added:        1

Now try logging into the machine, with:   "ssh 'forteleaf@freenas'"
and check to make sure that only the key(s) you wanted were added.

본인은 이미 키가 authorized_keys에 등록되어 있는 상태 이기 때문에 위와 같은 메세지가 나온다.
이제 바로 접속하면 된다.

접속

$ ssh forteleaf@[freenas IP]

참조 (서버 sshd 설정)

# /etc/ssh/sshd_config

#PubkeyAuthentication yes

# The default is to check both .ssh/authorized_keys and .ssh/authorized_keys2
# but this is overridden so installations will only check .ssh/authorized_keys
AuthorizedKeysFile      .ssh/authorized_keys

#AuthorizedPrincipalsFile none

PubkeyAuthentication 이 설정되어 있어도 authorized_keys파일이 등록되어 있으면, 사용할 수 있다.

'리눅스' 카테고리의 다른 글

Reverse Proxy 와 Load Balencer  (0) 2020.04.06
nginx | site-enabled, site-available.md  (0) 2020.02.11
freenas | ssh key 로그인  (0) 2020.01.06
ansible - 자동화의 시작  (0) 2019.09.11
Fedora 30 | uim 입력기 변경  (0) 2019.08.20
Fedora 30 | 텔레그램 설치하기  (0) 2019.07.24
블로그 이미지

부들잎

안녕하세요

Tag freenas, SSH

댓글을 달아 주세요

Imgur

Ansible

Ansible은 오픈 소스 소프트웨어 프로비저닝, 구성 관리, 애플리케이션 전개 도구이다. 수많은 유닉스 계열 시스템에서 실행되며 유닉스 계열 운영 체제 및 마이크로소프트 윈도우의 구성이 가능하다.
시스템 구성을 기술하기 위해 자체 선언형 언어를 포함하고 있다. 위키백과

  • 테스트 환경을 구축(다양한 OS)

  • python으로 개발 되었고 YAML 언어를 통해 정의할 수 있고, JSON 방식으로 통신

  • OPEN Source

기본개념

환경설정, 배포를 가능케 하는 언어. 리모트 서버에 접속해서 무언가를 실행시키는 정책을 기술한다. YAML 문법으로 정책이 기술되어 고급 단계에서 로드밸런서를 모니터링하는 복잡한 환경에서도 사용할 수 있도록 한다.

playbook은 하나 또는 하나 이상의 play를 두게 되고, play의 목적은 여러 호스트들을 잘 정의 된 ROLETASK를 매핑하는 역할을 합니다. TASKAnsible모듈의 호출을 의미한다.
ROLE을 더 편하게 관리하기 위해서 YAML파일로 정의해서 사용할 수 있다. 또한 host inventory 파일에 정의한 서버 그룹별로 각각 나누너 provision 할 수 있도록 할 수 있다.

장점

  • 빠른 SSH 통신, 빠른 Provision을 이용가능

  • agent daemon을 사용하지 않음

  • 자동 배포 환경이 구성 쉬움

  • 멱등성
    여러 번 적용해도 결과 변동 없음
    바뀌는 것이 없으면 당연히 배포되어도 변경 없음
    바뀌는 부분이 있으면 그 부분만 반영
    shell, command, file module은 보장 안됨

  • playbook

  • ad-hoc 지원

  • 병렬 Provisioning 지원

단점

  • 시스템 초기 설치 수행은 불가능

  • 시스템 모니터링은 지원 안함

  • 시스템 변경사항 초적하지 않음

할수있는 것

앤서블에는 크게 3가지 요소가 있다.
inventory, playbook, module이 그것이다.
이는 각각 (1) 어디서, (2) 무엇을, (3) 어떻게 수행할지를 정의한다. (엄밀히 말하면 모듈이 플레이북에서 사용되지만, 이해를 위해 구분해 설명한다)

inventory

remote server에 대한 meta 데이터를 기술하는 파일.
인벤터리는 앤서블에 의해 제어되어 Infrastructure as a Code의 대상이 될 서버들의 목록을 정의하는 파일 일반적으로 hosts.ini 파일에 정의해 사용하는 듯 하며, 위 예시에서 작성했던 hosts.ini 파일이 바로 그것이다.
인벤터리에는 여러 서버들의 접속 정보 (SSH 접근 IP, 포트, 리눅스 사용자) 등을 정의.
기본 파일은 /etc/ansible/hosts를 읽게 하거나, 따로 inventory파일을 만들고 옵션을 주어 동작하게 할 수 있다. 만약 고정 ip를 가지고 있고, ghost 파일 안에 들어가 있지 않는 서버가 있다면 설정 파일을 만들 수 있고 테스트 환경을 만들 때 유용하다.

대충 아래와 같은 파일로 구성이 된다.

centos1 ansible_host=172.16.49.133 ansible_user=rootcentos2 ansible_host=172.16.49.134 ansible_user=rootzabbix ansible_host=172.16.49.135 ansible_user=root[server]centos1centos2zabbix

PLAYBOOK

설정을 관리가호 다수의 머신에 대한 배포 시스템에 대한 기본적인 단위. 복잡한 형태의 배포에 매우 적합하다. 설정을 정의할 수 있으며 특정머신의 집합을 오가며 다른 작업을 수행하도록 수동으로 작업 순서를 설정하는 것도 가능하다. 이 때의 작업은 동기 또는 비동기로 수행할 수 이다. /usr/bin/ansible명령을 통해서 AD-HOC 테스크를 실행하는 것에 반해 PLAYBOOK은 소스 컨트롤을 통해 보관하거나 사용자의 설정을 내보내거나 원격 시스템을 구성,보장디는데 더욱 적합합니다.

Module

이미 정의해 놓은 모듈들을 통해서 다중명령어를 보내줄 수 있다. 예를 들어 yum이라는 모듈을 통해서 설치작업을 요청할 수 있으며, shell모듈을 통해서 커맨드 입력을 보낼 수 있다.

ansible -l #모든 module 목록 조회

ad-hoc

adhoc이라는 의미는 임시적 수행을 말한다.
ansible의 playbook을 작성하는 것이 아니라 임시적으로 또는 특별하게 어떤 작업을 수행하기 위해서 사용할 수 있는 실행방법이라고 할 수 있다.

Ansible 시작하기

![](file:///Users/forteleaf/Library/Application Support/marktext/images/2019-09-06-16-16-11-image.png)

기본옵션 (Inventory)

hosts.ini파일을 아래와 같이 설정 된다. 파일 이름은 정해진 틀이 없으므로 편한데로 맞춰서 사용합니다.

centos1 ansible_host=172.16.49.133 ansible_user=rootcentos2 ansible_host=172.16.49.134 ansible_user=rootzabbix ansible_host=172.16.49.135 ansible_user=root[server]centos1centos2zabbix

ssh-copy-id로 자동로그인을 설정해 놓으면 ansible_password와 같은 옵션을 따로 설정하지 않아도 된다.

설정파일 ( ansible.cfg / .ansible.cfg )

ansible.cfg파일을 지정해 줌으로서 옵션에 넣을 변수를 줄이고 편하게 사용할 수 있다

## ansible.cfg[defaults]inventofy=./hosts.iniremote_user=rootprivate_key_file=~/.ssh/id_rsa

host_key_checking=false옵션을 추가하면, 접속시 key 확인하는 작업을 스킵합니다. 일일히 yes칠 상황을 제거해 줍니다

service 상태 조회

ansible all -m shell -a "service status sshd"

모듈 ( MODULE )

모듈들은 정말 다양한 기능들을 제공한다. 이런 기능은 없나? 생각하면 이미 개발되어 있는 상황이고 그게 안된다면, shell또는 command명령을 통해서 작업할 수 있다

shellcommand 모듈의 차이

Module : command

원격 노드에서 명령을 실행

명령 모듈은 명령 이름 뒤에 공백으로 구분 된 인수 목록을 사용합니다. 주어진 명령은 선택된 모든 노드에서 실행됩니다.
쉘을 통해 처리되지 않으므로 $HOME과 같은 변수 및 "<", ">", "|"및 "&"와 같은 조작은 작동하지 않습니다 (이 기능이 필요한 경우 쉘 모듈을 사용하십시오).

Module : shell

노드에서 명령을 실행

쉘 모듈은 명령 이름 뒤에 공백으로 구분 된 인수 목록을 사용합니다. 명령 모듈과 거의 동일하지만 원격 노드의 쉘 (/bin/sh)을 통해 명령을 실행합니다.

Module : template

nginx.ini와 같은 설정 파일을 role을 지정해서 서버마다 다른 설정 값을 넣어서 파일을 생성할 수 있는 기능입니다. 자주 사용되는 기능

PLAYBOOK

# public key 를 server들에 등록하는 playbook---- hosts: all    # inventory 의 모든 대상  tasks:        # 수행할 작업    - name: authorized to server    # 작업 이름      authorized_key:               # 수행할 MODULE 명        user: root                  # MODULE에 들어갈 environment        state: present        key: "{{ lookup('file', '~/.ssh/id_rsa.pub') }}" 

yml(야믈)의 파일 구조를 갖고 있습니다. 규칙성에서 벗어나면 제대로 동작하지 않습니다. 이를 유의해 주시면서 작업 하시면 오히려 정규화 된 표현에 코드 리딩하기 편할 것 입니다.

authorized_key를 사용하기 위해서는 암호또한 자동으로 입력 해 주는 sshpass가 필요합니다.

참조


블로그 이미지

부들잎

안녕하세요

댓글을 달아 주세요

remove ibus

Imgur
Fedora에서 기존에 사용하던 ibus를 제거하고 uim를 사용하려고 하는데, ibus를 삭제하는데에 큰 문제가 있다. 하나는 sudo dnf remove ibus를 이용해서 삭제를 하면 의존성 때문에 gnome에 있던 기본 어플들까지도 삭제가 되어버린다. 이를 해결하기 위해서는 의존성을 헤치지 않으면서 삭제를 진행해야 한다.

하지만, 이를 정확히 해결할 수 있는 방법은 지금 존재하지 않고, 이를 해결하기 위해서는 기존에 ibus-daemon를 상주한 상태로 uim를 실행시키는 방법이 제일이상적이라고 할 수 있다.

현재 gnome 3.32.2버전을 사용하고 있고, 아래와 같이 설정을 변경해 주었다.

$ gsettings set org.gnome.settings-daemon.plugins.xsettings overrides "{'Gtk/IMModule':<'uim'>}"

uim설치

$ sudo dnf install uim

uim-byeoru를 따로 설치를 과거에는 진행했는데 지금은 기존패키지에 자동으로 설치가 되어있어서 uim-byeoru를 입력하더라고 무방하다. 근데, dnf 항목에는 보이지 않는다.

기본 입력소스 변경


입력소스 에서 기존에 있었던 ibus 설정을 지워주고 위와 같이 영문 키보드 하나만 남겼다. 실제로 이 설정이 실사용에 사용되지는 않습니다. uim설정을 사용하기 때문에 한글 설정에서 이 부분을 수정할 필요는 없습니다.

기존 ibus 단축키 설정 제거

Imgur

Fedora 30 에서는 아래와 같은 명령어를 사용해서 기본 입력기를 변경할 수 있다.

$ im-chooser

사실 이부분을 수정하지 않다고 가능하지만, ibus라는 설정 자체를 빼기 위해서 제거했다.

이제 ibus의 단축설정들을 제거해 준다. <shift> + <space>와 같은 설정이 새로 한영전환키와 중복될 수 있는 부분이 있기 때문에 제거를 하는것이 사용성과 편의성에 이롭다.

ibus 환경설정에서 아래와 같이 설정들을 제거해 준다.

Imgur
Imgur
기본에 설정되어 있는 부분을 제거 했습니다

uim 설정하기

$ im-chooser

명령어를 통해 UIM 환경설정을 통해 진행한다.

[전체적인 설정]항목에서 디폴트 입력기 설정을 진행한다.

사용되는 입력기에 "벼루"만 남기고 제거 합니다.

Imgur
다음은 한영 전환단축키 변경을 아래와 같이 설정합니다. 이부분은 간단하므로 생략

Imgur

이제 최상단에 적혀 있는 명령어를 실행하면 ibus 가 상주해 있는 상태에서도 uim를 사용할 수 있는 상태가 되었습니다.

이 부분에서 리부팅을 진행해 주세요. 부분부분 재부팅을 통해서 진행 해 주면 설정이 자리잡는데 도움이 됩니다.

블로그 이미지

부들잎

안녕하세요

댓글을 달아 주세요

Fedora에서 텔레그램 설치하기

dnf 를 시용해서 간단히 설치가 되지 않는다.
그래서 다른 패키지 프로그램(ᅟflatpak)을 사용해서 설치를 해야 한다. 또는 직접 사이트에 가서 다운받아서 설치를 하는 방법이 있다.

flatpack을 이용한 설치

$ sudo flatpak install telegram

flatpak을 사용해서 설치하는 방법을 이야기 한다.

단점
: 이상하게 한글 입력이 제대로 되지 않는다. 띄여쓰기도 안되고, 그냥 무지불편하게 사용해야 한다.

Imgur

한글 입력하게 수정하기

~/.var/app/org.telegram.desktop/data/TelegramDesktop/tdata/fc-custom-1.conf파일을 수정해서 다음과 같이 추가해 준다.

    <dir>/run/host/fonts</dir>

내용을 추가 해주면 한글이 문제 없이 보인다.
그런데 이상하게 return key를 누르면 리턴입력이 되는 것이 아니라 깨진다. 아무래도 다른 사연이 있는것 같다.

<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
  <fontconfig>
    <dir>/usr/share/fonts</dir>
    <dir>/usr/local/share/fonts</dir>
    <dir>~/.fonts</dir>
    <dir>~/.local/share/fonts</dir>
    <dir>/run/host/fonts</dir>
    <dir>/usr/X11R6/lib/X11/fonts</dir>
    <dir prefix="xdg">fonts</dir>
    <match target="pattern">
      <test qual="any" name="family">
        <string>mono</string>
      </test>
      <edit name="family" mode="assign" binding="same">
        <string>monospace</string>
      </edit>
    </match>
    <match target="pattern">
      <test qual="any" name="family">
        <string>sans serif</string>
      </test>
      <edit name="family" mode="assign" binding="same">
        <string>sans-serif</string>
      </edit>
    </match>
    <match target="pattern">
      <test qual="any" name="family">
        <string>sans</string>
      </test>
      <edit name="family" mode="assign" binding="same">
        <string>sans-serif</string>
      </edit>
    </match>
    <cachedir>/var/cache/fontconfig_11</cachedir>
    <cachedir prefix="xdg">fontconfig_11</cachedir>
    <cachedir>~/.fontconfig_11</cachedir>
    <match target="font">
      <edit mode="assign" name="antialias">
        <bool>true</bool>
      </edit>
      <edit mode="assign" name="embeddedbitmap">
        <bool>false</bool>
      </edit>
      <edit mode="assign" name="hinting">
        <bool>true</bool>
      </edit>
      <edit mode="assign" name="hintstyle">
        <const>hintslight</const>
      </edit>
      <edit mode="assign" name="lcdfilter">
        <const>lcddefault</const>
      </edit>
      <edit mode="assign" name="rgba">
        <const>rgb</const>
      </edit>
    </match>
  </fontconfig>

직접 설치

  1. 직접 홈페이지에서 다운 받는다

  2. 압축을 푼다.

  3. /opt폴더에 파일을 옮긴다.

블로그 이미지

부들잎

안녕하세요

댓글을 달아 주세요