Saltstack 시리즈 2 – Targeting
그럼, Targeting은 무엇입니까?
공식 해명은 다음과 같다.
Specifying which minions should run a command or execute a state by matching against hostnames, or system information, or defined groups, or even combinations thereof.
이거 다 읽었어. 알겠지..이미지 포인트의 예를 들어 우리는 이 명령으로 미니언 서버를 다시 시작할 수 있습니다. 웹 1 서버 위의apache라고 합니다.
salt web1 apache.signal restart
이 동시에, 우리는 top 파일에 죽을 수도 있다. 예를 들어 미니언 쪽의 웹 1만 웹 서버를 실행하도록 하는 것이다.sls
base:
’web1’:
- webserver
물론 정규 같은 것도 쓸 수 있다. 예를 들면:
salt ’web?.example.net’ test.ping #web1.example.net, web2.example.net . . .webN.example.net
salt ’web[1-5]’ test.ping #web1 web5
salt ’web[1,3]’ test.ping #web1 web3
salt ’web-[x-z]’ test.ping #web-x、web-y web-z
한 마디로 하면,salt에서는 특정한 미니언즈나 그룹을 제한하는 방법이 많다.
다음은compound matcher 테이블로 작업 목표를 대상으로 선별할 수 있습니다.
Letter
Match Type
Example
G
Grans glob
G@os:Ubuntu
E
PCRE MinionID
E@web\d+\.(dev|qa|prod)\.loc
P
Grains PCRE
P@os:(RedHat|Fedora|CentOS)
L
List of minions
[email protected],minion3.domain.com orbl*.domain.com
I
Pillar glob
I@pdata:foobar
S
Subnet/IPaddress
[email protected]/24 or [email protected]
R
Range cluster
R@%foo.bar
공식적인 개념과 소개는 여기까지입니다. 다음은 저희가 실제 조작을 해 보겠습니다.
먼저 제 실험 환경을 설명하겠습니다.
IP
OS
id
character
192.168.139.131
CentOS release 6.5 (Final)
192.168.139.131
master
192.168.139.128
CentOS release 6.5 (Final)
192.168.139.128-centos
minion
192.168.139.130
Ubuntu 12.04.4
192.168.139.130-ubuntu
minion
조작하기 전에 예를 들어salt-key를 보십시오.
[root@ www]# salt-key -L
Accepted Keys:
192.168.139.128-centos
192.168.139.130-ubuntu
Unaccepted Keys:
Rejected Keys:
우리는 먼저 마스터 쪽에서 조작을 하고 먼저 그룹을 나눌 수 있다. 왜냐하면 2대밖에 없기 때문이다. 우리는 위의 표의 Grans glob에 따라 간단하게 그룹을 나눌 수 있다. (그룹을 나눌 때 이 부분을 중점적으로 고려해야 할 것 같다. 좋은 roles는 효율을 크게 향상시킬 수 있다. 그렇다면 서비스, OS, 업무에 따라 나눌 것인가, 아니면 그들 몇 개의 그룹을 나눌 것인가 등, 나도 아직 생각하지 못했다...하하...)
master 프로필을 열고 Node Groups를 찾아 수정합니다.
[root@ www]# vi /etc/salt/master
nodegroups:
group1: 'G@os:Centos'
group2: 'G@os:Ubuntu'
난입해...:여기에 갑자기 사용자 권한의 문제가 생각났다.예를 들어 내가 Tom에게 권한을 주면 테스트만 허용한다.ping과 status.uptime, 다른 권한이 없습니다.(예를 들어 cmd.runrm-f를 실행하면 오류가 발생합니다.)우리도 다시/etc/salt/master에서 이렇게 증가할 수 있다.
client_acl:
Tom:
- test.ping
- status.uptime
수정한 후salt-master 서비스를 다시 시작하고 다음 결과를 보십시오.
[root@ www]# service salt-master restart
Stopping salt-master daemon: [ OK ]
Starting salt-master daemon: [ OK ]
[root@ www]# salt -N group2 test.ping
192.168.139.130-ubuntu:
True
[root@ www]# salt -N group1 test.ping
192.168.139.128-centos:
True
또한 nodegroups를 수정하지 않고 명령줄에서 직접 선별 작업을 할 수 있습니다.주의해야 할 것은 이곳의 matchers도 and, or, not를 사용할 수 있다는 것이다.
[root@ www]# salt -C 'G@os:Ubuntu or 192*' test.ping
192.168.139.130-ubuntu:
True
192.168.139.128-centos:
True
마찬가지로 top 파일에서 제한할 수도 있습니다.
base:
’G@os:Ubuntu or 192* ’:
- match: compound
- webserver
주의해야 할 것은 not의 시작은 위의 컴퓨터 matchers 표를 지원하지 않는다는 것이다. 우리는 이렇게 회피할 수 있다.
salt -C ’* and not G@kernel:Darwin’ test.ping
salt -C ’* and not web-dc1-srv’ test.ping
다음은 파일의 수동 전송에 대해 이야기합시다.
우선,master단의/srv/salt/아래에test라는 파일을 만듭니다. 그 안에 아무렇게나 연결되어 있습니다.adada.그리고salt를 통해minion단,root 디렉터리로 전송하고 1234로 이름을 바꿉니다.
[root@ salt]# pwd
/srv/salt
[root@ salt]# cat test
adada
[root@ salt]# salt '*' cp.get_file salt://test /root/1234
192.168.139.128-centos:
/root/1234
192.168.139.130-ubuntu:
/root/1234
그리고 미니언으로 가서 결과를 봅시다.
root@ubuntu:~# ll
total 36
drwx------ 4 root root 4096 Jul 28 06:09 ./
drwxr-xr-x 22 root root 4096 Jul 1 23:55 ../
-rw-r--r-- 1 root root 6 Jul 28 06:09 1234
-rw------- 1 root root 525 Jul 28 02:01 .bash_history
-rw-r--r-- 1 root root 3106 Apr 19 2012 .bashrc
drwx------ 2 root root 4096 Jul 2 00:02 .cache/
-rw-r--r-- 1 root root 140 Apr 19 2012 .profile
drwxr-xr-x 2 root root 4096 Jul 28 02:47 .rpmdb/
-rw------- 1 root root 749 Jul 28 01:52 .viminfo
root@ubuntu:~# cat 1234
adada
[root@ ~]# cd /root/
[root@ ~]# ll
total 24
-rw-r--r--. 1 root root 6 Jul 29 12:06 1234
-rw-------. 1 root root 1090 Apr 10 00:44 anaconda-ks.cfg
-rw-r--r--. 1 root root 9017 Apr 10 00:44 install.log
-rw-r--r--. 1 root root 3091 Apr 10 00:41 install.log.syslog
[root@ ~]# cat 1234
adada
흠.파일 전송 시연이 됐습니다.에이, 내가 수동으로 그 서버에 가서 하나씩 고치는 게 더 빠르지 않겠어?확실히 (수량이 적은 상황에서 게으름 피우고 싶지 않으면 아무도 너를 막을 수 없다...).한 마디로 하면salt는 일정한 규모의 서버가 있어야만 그 매력을 나타낼 수 있다.
또한 우리는master단에서salt를 통해 특정한 데스크톱, 일부 또는 모든 미니언즈에 대한 조작을 할 수 있다.(위에서 언급한compound matcher 테이블과 and or not 기억하십니까?)
[root@ salt]# salt '*' cmd 'ps -ef|grep http'
192.168.139.130-ubuntu:
'cmd' is not available.
192.168.139.128-centos:
'cmd' is not available.
[root@ salt]# salt '*' cmd.run 'ps -ef|grep http'
192.168.139.130-ubuntu:
root 3584 3583 0 02:14 ? 00:00:00 /bin/sh -c vi /etc/www/httpd/conf/httpd.conf
root 3585 3584 0 02:14 ? 00:00:00 vi /etc/www/httpd/conf/httpd.conf
root 5724 5723 0 06:24 ? 00:00:00 /bin/sh -c ps -ef|grep http
root 5726 5724 0 06:24 ? 00:00:00 grep http
192.168.139.128-centos:
root 28979 1 0 09:40 ? 00:00:00 /usr/sbin/httpd
apache 30026 28979 0 11:19 ? 00:00:00 /usr/sbin/httpd
apache 30027 28979 0 11:19 ? 00:00:00 /usr/sbin/httpd
apache 30028 28979 0 11:19 ? 00:00:00 /usr/sbin/httpd
apache 30029 28979 0 11:19 ? 00:00:00 /usr/sbin/httpd
apache 30030 28979 0 11:19 ? 00:00:00 /usr/sbin/httpd
apache 30031 28979 0 11:19 ? 00:00:00 /usr/sbin/httpd
apache 30032 28979 0 11:19 ? 00:00:00 /usr/sbin/httpd
apache 30033 28979 0 11:19 ? 00:00:00 /usr/sbin/httpd
root 30566 30565 0 12:21 ? 00:00:00 /bin/sh -c ps -ef|grep http
root 30568 30566 0 12:21 ? 00:00:00 grep http
[root@ salt]# salt '*' cmd.run 'date'
192.168.139.130-ubuntu:
Mon Jul 28 06:24:17 EDT 2014
192.168.139.128-centos:
Tue Jul 29 12:21:34 CST 2014
[root@ salt]# salt -N group1 cmd.run 'df -h'
192.168.139.128-centos:
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root
19G 1.3G 17G 8% /
tmpfs 242M 0 242M 0% /dev/shm
/dev/sda1 485M 53M 407M 12% /boot
기본적인 조작이 얼마 남지 않았는데, 재미를 보았느냐, 그럼 우리 후속 업데이트를 보자~
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
React Tricks Miniseries 7: 다양한 데이터 유형에 대한 setState 방법반응 상태를 설정하는 것은 항상 까다로운 일이었습니다. 이를 수행하는 방법에는 여러 가지가 있지만 대부분은 안티 패턴인 반면 정확하고 모범적인 방법은 몇 가지뿐입니다. 다양한 데이터 유형의 시나리오에서 반응 상태를 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.