2017년 5월 14일 일요일
솔트 스택 튜토리얼
디지털 오션의
https://www.digitalocean.com/community/tutorial_series/managing-development-environments-with-saltstack
SALTSTACK 시작하기
출처: http://linux.systemv.pe.kr/saltstack-%EC%8B%9C%EC%9E%91%ED%95%98%EA%B8%B0/
ZSH
ZSH
SALTSTACK 시작하기.
Table of Contents [hide]
이 글은 SaltStack 시작하기 에 관한 글입니다.
SaltStack 은 자동화 시스템 관리 프로그램입니다. 서버의 설정파일, 패키지 관리, 시스템 명령어등을 한번에 많은 서버에 할 수 있습니다. Chef, Puppet 등과 동일합니다. 단지 이 녀석은 Python 으로 개발이 되었고 역활을 지시하는 sls 파일 문법이 YAML 이며 Jina Template 을 이용해서 sls 에 프로그래밍을 할 수 있습니다.
SaltStack 은 서버와 클라이언트로 모델입니다. 서버역활을 담당하는 SaltStack 을 마스터(Master)라고 하고 클라이언트 역활을 담당하는 SaltStack 을 하녀(Minion)이라고 부릅니다. 마스터의 경우 파일 전송을 할 수 있게 파일서버역활도 같이 합니다.
마스터, 하녀 역활로 나뉘어 있기 때문에 당연히 하녀가 어느 SaltStack 마스터에 지시를 받을것이지 하는 등록절차가 필요합니다.
Master 설치
설치 환경은 CentOS 를 기준으로 합니다. CentOS 의 경우에 Base Repository 에 SaltStack 패키지가 없습니다. 하지만 Epel Repository 를 설치하면 간편하게 Yum 명령어로 설치할 수 있습니다.
salt-master 설치
Shell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
[root@master ~]# yum install salt-master
Dependencies Resolved
================================================================================================================================================
Package Arch Version Repository Size
================================================================================================================================================
Installing:
salt-master noarch 2015.5.3-3.el6 epel 965 k
Installing for dependencies:
PyYAML x86_64 3.10-3.1.el6 base 157 k
libyaml x86_64 0.1.3-4.el6_6 base 52 k
m2crypto x86_64 0.20.2-9.el6 base 471 k
openpgm x86_64 5.1.118-3.el6 epel 165 k
pciutils x86_64 3.1.10-4.el6 base 85 k
python-babel noarch 0.9.4-5.1.el6 base 1.4 M
python-backports x86_64 1.0-5.el6 base 5.5 k
python-backports-ssl_match_hostname noarch 3.4.0.2-4.el6.centos extras 13 k
python-chardet noarch 2.2.1-1.el6 base 230 k
python-crypto x86_64 2.0.1-22.el6 base 159 k
python-jinja2 x86_64 2.2.1-2.el6_5 base 466 k
python-msgpack x86_64 0.4.6-1.el6 epel 69 k
python-requests noarch 2.6.0-3.el6 base 95 k
python-six noarch 1.9.0-2.el6 base 28 k
python-urllib3 noarch 1.10.2-1.el6 base 101 k
python-zmq x86_64 14.3.1-1.el6 epel 467 k
salt noarch 2015.5.3-3.el6 epel 4.1 M
yum-utils noarch 1.1.30-30.el6 base 110 k
zeromq3 x86_64 3.2.5-1.el6 epel 338 k
Transaction Summary
================================================================================================================================================
Install 20 Package(s)
Total download size: 9.4 M
Installed size: 34 M
Is this ok [y/N]: y
Downloading Packages:
(1/20): PyYAML-3.10-3.1.el6.x86_64.rpm | 157 kB 00:00
(2/20): libyaml-0.1.3-4.el6_6.x86_64.rpm | 52 kB 00:00
(3/20): m2crypto-0.20.2-9.el6.x86_64.rpm | 471 kB 00:00
(4/20): openpgm-5.1.118-3.el6.x86_64.rpm | 165 kB 00:00
(5/20): pciutils-3.1.10-4.el6.x86_64.rpm | 85 kB 00:00
(6/20): python-babel-0.9.4-5.1.el6.noarch.rpm | 1.4 MB 00:04
(7/20): python-backports-1.0-5.el6.x86_64.rpm | 5.5 kB 00:00
(8/20): python-backports-ssl_match_hostname-3.4.0.2-4.el6.centos.noarch.rpm | 13 kB 00:00
(9/20): python-chardet-2.2.1-1.el6.noarch.rpm | 230 kB 00:01
(10/20): python-crypto-2.0.1-22.el6.x86_64.rpm | 159 kB 00:00
(11/20): python-jinja2-2.2.1-2.el6_5.x86_64.rpm | 466 kB 00:00
(12/20): python-msgpack-0.4.6-1.el6.x86_64.rpm | 69 kB 00:00
(13/20): python-requests-2.6.0-3.el6.noarch.rpm | 95 kB 00:00
(14/20): python-six-1.9.0-2.el6.noarch.rpm | 28 kB 00:00
(15/20): python-urllib3-1.10.2-1.el6.noarch.rpm | 101 kB 00:00
(16/20): python-zmq-14.3.1-1.el6.x86_64.rpm | 467 kB 00:00
(17/20): salt-2015.5.3-3.el6.noarch.rpm | 4.1 MB 00:00
(18/20): salt-master-2015.5.3-3.el6.noarch.rpm | 965 kB 00:00
(19/20): yum-utils-1.1.30-30.el6.noarch.rpm | 110 kB 00:00
(20/20): zeromq3-3.2.5-1.el6.x86_64.rpm | 338 kB 00:00
------------------------------------------------------------------------------------------------------------------------------------------------
Total 789 kB/s | 9.4 MB 00:12
|
대략 20여개의 의존성 패키지들과 함께 설치됩니다. 앞에서 말했듯이 Salt 는 Python 으로 제작되었기 때문에 Python 관련 패키지가 많이 필요합니다.
Salt 마스터 설정.
설정파일은 /etc/salt/master 입니다. 아주 많은 옵션들이 존재하고 각 옵션마다 자세한 코멘트가 있어 어렵지 않게 필요한 것들을 설정할 수 있습니다.
기본적인 설정은 대략 다음과 같습니다.
/etc/salt/master
INI
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
interface: 0.0.0.0
user: salt
pidfile: /var/run/salt-master.pid
root_dir: /
pki_dir: /etc/salt/pki/master
cachedir: /var/cache/salt/master
timeout: 60
minion_data_cache: True
state_top: top.sls
renderer: yaml_jinja
state_verbose: True
state_output: full
file_roots:
base:
- /srv/salt
fileserver_backend:
- roots
pillar_roots:
base:
- /srv/pillar
log_file: /var/log/salt/master
log_level: debug
log_level_logfile: debug
|
위 설정만으로도 Salt 마스터는 잘 동작합니다.
Salt minion 설치하기
역시 CentOS 환경이고 Epel Repository 를 추가해서 Yum 을 이용해서 설치하면 됩니다.
salt 하녀 설치.
Shell
1
|
[root@node1 ~]# yum install salt-minion
|
설치가 완료되면 /etc/salt/minion 파일에 설정을 하면 됩니다.
Salt minion 설정.
설정파일 /etc/salt/minion 을 열어서 다음과 같이 기본적인 설정을 해줍니다.
/etc/salt/minion
INI
1
2
|
master: 192.168.96.12
id: minion1
|
id 설정이 중요합니다.
/etc/hosts 파일 설정.
리눅스의 hosts 파일을 마스터와 Minion 양쪽 모두에 설정해 줍니다.
/etc/hosts
INI
1
2
|
192.168.96.12 master
192.168.96.15 minion
|
Salt Minion 을 마스터에 등록하기
Salt 마스터는 Minion 을 등록해서 그 리스트를 유지하고 있습니다. Minion 이 마스터에 등록되어 있지 않다면 마스터로부터 그 어떠한 작업 지시를 받을 수 없겠죠. 그래서 새로운 Minion 이 생긴다면 먼저 마스터에 등록을 해줘야 합니다.
등록은 마스터에서 다음과 같이 합니다.
salt-key 리스트
Shell
1
2
3
4
5
6
|
[root@master salt]# salt-key -L
Accepted Keys:
Denied Keys:
Unaccepted Keys:
minion1
Rejected Keys:
|
마스터와 minion 간에 통신이 된다면 위와같이 “Unaccepted Keys” 에 아직 등록하지 않은 minion 이 나옵니다.
등록은 다음과 같이 합니다.
1
2
3
4
5
6
|
[root@master salt]# salt-key -a minion1
The following keys are going to be accepted:
Unaccepted Keys:
minion1
Proceed? [n/Y] y
Key for minion minion1 accepted.
|
등록이 되었다면 minion 과 통신이 잘되는지 다음과 같이 확인해 봅니다.
1
2
3
|
[root@master salt]# salt 'minion1' test.ping
minion1:
True
|
위와같이 나오면 정상입니다.
피드 구독하기:
글 (Atom)