2017년 3월 26일 일요일

Saltstack Remote Execution

ORDER YOUR MINONS AROUND


salt명령은 크게 3부분으로 이루어져 있다.
>salt '<target>' <function> [arguments]

Target
명령이 수행될 minion을 걸러내는 역할을 한다. 기본은 minion id이다.
> salt '*' test.ping
> salt '*.example.org' test.ping

Grains를 이용할 수 있다.
>salt -G 'os:Ubuntu' test.ping

정규표현식
>salt -E 'virtmach[0-9]' test.ping

리스트 (minion id를 열거)
>salt -L 'foo,bar,baz,quo' test.ping

한번에 여러개를 복합적으로 사용할 수 있음
>salt -C 'G@os:Ubuntu and webser* or E@database.*' test.ping

Function
function은 module에서 제공하는 기능들이다. salt는 많은 기능을 제공한다.
미니언에서 사용 가능한 모든 기능의 나열:
>salt '*' sys.doc

현재 가용한 minion을 보려면
>salt '*' test.ping

임의의 쉘 명령을 수행하려면
>salt '*' cmd.run 'uname -a'
전제 목록


Arguments
function에서 정의된 매개변수 (공백으로 분리한다.)
>salt '*' cmd.exec_code python 'import sys; print sys.version'
keyword방식도 지원함(kwarg=argument 형식)
>salt '*' pip.install salt timeout=5 upgrade=True
쉘 호출시 아규먼트는 YAML형식:
> salt '*' cmd.run 'echo "Hello: $FIRST_NAME"' env='{FIRST_NAME: "Joe"}'

복합 명령 실행

복합명령은 단일 함수와 인수를 전달하는 대신 함수와 인수 목록을 전송하여 작동한다. 함수는 명령 행에 정의된 순서대로 미니언에서 실행된 다음 모든 명령의 데이터가 딕셔너리에 담겨서 리턴된다. 일련의 명령이 예측 가능한 방식으로 호출되며, 반환된 데이터를 쉽게 해석할 수 있다.

쉼표로 구분된 함수 목록 뒤에 쉼표로 구분된 인수 목록을 전달:
> salt '*' cmd.run,test.ping,test.echo 'cat /prof/cpuinfo',,foo
여기서 주목할 것은 함수에 인수가 전달되지 않는 경우 인자를 받지 않는 함수의 인자의 자리를 비워둬야 한다는 것이다. 위의 예에서 두 개의 쉼표가 서로 붙어 있는 것은 test.ping 함수는 인자를 취하지 않기 때문에 인자 자리를 비워둔 것이다. 이 자리를 비워두지 않으면 foo를 test.ping의 인자로 전달하려고 한다.

쉼표가 포함된 인수를 전달해야 하는 경우 인수를 구분하는 쉼표 주위에 공백을 추가
> salt '*' cmd.run,test.ping,test.echo 'echo "1,2,3"' , , foo

다음 옵션을 이용하여 인수 구분 기호를 변경(--args-separator)
> salt --args-separator=:: '*' some.fun,test.echo params with , comma :: foo


댓글 없음:

댓글 쓰기

salt-ssh를 이용한 salt minion 자동설치

salt-ssh의 작동방식 일반적으로 salt는 master와 minion이 zeroMQ를 이용하여 통신 이렇게 하려면 관리하려는 모든 서버에 minion이 설치되어야 함 salt-ssh는 minion 없이 서버를 관리할 수 있는 기능을 제공...