SaltStack 시작하기.
이 글은 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 명령어로 설치할 수 있습니다.
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 입니다. 아주 많은 옵션들이 존재하고 각 옵션마다 자세한 코멘트가 있어 어렵지 않게 필요한 것들을 설정할 수 있습니다.
기본적인 설정은 대략 다음과 같습니다.
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 을 이용해서 설치하면 됩니다.
1 |
[root@node1 ~]# yum install salt-minion |
설치가 완료되면 /etc/salt/minion 파일에 설정을 하면 됩니다.
Salt minion 설정.
설정파일 /etc/salt/minion 을 열어서 다음과 같이 기본적인 설정을 해줍니다.
1 2 |
master: 192.168.96.12 id: minion1 |
id 설정이 중요합니다.
/etc/hosts 파일 설정.
리눅스의 hosts 파일을 마스터와 Minion 양쪽 모두에 설정해 줍니다.
1 2 |
192.168.96.12 master 192.168.96.15 minion |
Salt Minion 을 마스터에 등록하기
Salt 마스터는 Minion 을 등록해서 그 리스트를 유지하고 있습니다. Minion 이 마스터에 등록되어 있지 않다면 마스터로부터 그 어떠한 작업 지시를 받을 수 없겠죠. 그래서 새로운 Minion 이 생긴다면 먼저 마스터에 등록을 해줘야 합니다.
등록은 마스터에서 다음과 같이 합니다.
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 |
위와같이 나오면 정상입니다.