SaltStack-원격 실행

Salt의 핵심 개념 중 하나는 원격 실행입니다. Salt는 몇 초 만에 수천 개의 시스템에서 명령을 실행할 수 있습니다. Salt는이 기능을 수행하기 위해 자체 명령을 사용합니다. 이제이 장에서 원격 실행을위한 다양한 Salt 명령을 이해하겠습니다.

솔트 커맨드

Salt 명령을 사용하면 Salt 마스터가 하나 이상의 Salt minions. 기본 구문은 다음과 같습니다.

salt '<target>' <module.function> [arguments]

위의 명령 구문은 다음 세 가지 주요 구성 요소로 구성됩니다.

  • target − 명령에 의해 적용되는 시스템을 결정합니다.

  • module.function− 명령입니다. 명령은 모듈과 기능으로 구성됩니다.

  • arguments − 함수 호출에 필요한 추가 데이터.

각 구성 요소를 자세히 이해하겠습니다.

대상 구성 요소는 무엇입니까?

Target은 기능을 실행하기 위해 미니언 (관리 시스템)을 필터링 할 수있는 구성 요소입니다. 대상 구성 요소를 사용하는 간단한 명령은 다음과 같습니다.

salt '*' test.ping

다음을 생성합니다. output

minion2:
   True
minion1:
   True

여기, 대상 ‘*’모든 관리 시스템을 나타냅니다. 'test'여기에 모듈이 있으며 ping함수입니다. 원격 시스템에서 ping 서비스를 테스트하는 데 사용됩니다. 다음 장에서 다양한 모듈과 그 기능에 대해 배웁니다.

ID를 사용하는 대상 (하수인)

특정 미니언에게 명령을 보낼 수 있습니다. id목표에. 사용하는 대신'*', 다음을 사용하여 교체 할 수 있습니다. minion id. 아래에 정의되어 있습니다.

salt 'minion1’ test.ping

다음을 생성합니다. output

minion1:
   True

정규식을 사용하는 대상

대상은 특정 정규 표현식으로 필터링 할 수 있습니다. 아래에 정의되어 있습니다.

salt -E 'minion[0-9]' test.ping

다음을 생성합니다. output

minion2:
   True
minion1:
   True

목록을 사용하는 대상

대상은 목록에 명시 적으로 지정할 수 있습니다. 다음 코드 블록에 정의되어 있습니다.

salt -L 'minion1,minion2' test.ping

다음을 생성합니다. output

minion2:
   True
minion1:
   True

조건 별 대상

아래 코드 블록에 표시된대로 대상을 하나의 명령으로 결합 할 수 있습니다.

salt -C 'G@os:Ubuntu and minion* or [email protected].*' test.ping

다음을 생성합니다. output

minion1:
   True
minion2:
   True

모듈 및 함수 (module.function)

솔트는 쉘 명령을 실행할 수 있습니다. 관리되는 모든 시스템에서 동시에 패키지를 업데이트하고 파일 등을 배포합니다. Salt는 모듈을 사용하여 이러한 작업을 수행합니다. Salt에는 사용 가능한 모든 기능에 대한 특수 모듈이 있습니다. 이 장의 간단한 예제를 사용하여 다양한 Salt 모듈을 이해하겠습니다.

셸 명령

Salt는 다음을 사용하여 여러 시스템에서 원격으로 셸 명령을 실행합니다. cmd.run명령. 그만큼cmd 메인 모듈이고 run 에서 사용할 수있는 기능 중 하나입니다. cmd기준 치수. 그만큼run 함수를 사용하면 아래 코드 블록에 표시된대로 원격 시스템에서 모든 쉘 명령을 실행할 수 있습니다.

salt '*' cmd.run 'ls -l /etc'

다음을 생성합니다. output

minion2:
   total 868
   drwxr-xr-x 7 root root    4096 Jan 26 22:10 X11
   drwxr-xr-x 3 root root    4096 Jan 26 21:02 acpi
   -rw-r--r-- 1 root root    2981 Jan 26 20:48 adduser.conf
   -rw-r--r-- 1 root root      10 Jan 26 21:04 adjtime
   drwxr-xr-x 2 root root    4096 Jan 26 22:10 alternatives
   drwxr-xr-x 3 root root    4096 Jan 26 20:53 apm
   drwxr-xr-x 3 root root    4096 Jan 26 21:02 apparmor
   drwxr-xr-x 9 root root    4096 Jan 26 21:02 apparmor.d
   drwxr-xr-x 3 root root    4096 Jan 26 21:02 apport
   drwxr-xr-x 6 root root    4096 Jan 29 07:14 apt
   drwxr-xr-x 2 root root    4096 Jan 26 22:10 at-spi2
……………
……………
minion1:
   total 868
   drwxr-xr-x 7 root root    4096 Jan 26 22:10 X11
   drwxr-xr-x 3 root root    4096 Jan 26 21:02 acpi
   -rw-r--r-- 1 root root    2981 Jan 26 20:48 adduser.conf
   -rw-r--r-- 1 root root      10 Jan 26 21:04 adjtime
   drwxr-xr-x 2 root root    4096 Jan 26 22:10 alternatives
   drwxr-xr-x 3 root root    4096 Jan 26 20:53 apm

   drwxr-xr-x 3 root root    4096 Jan 26 21:02 apparmor
   drwxr-xr-x 9 root root    4096 Jan 26 21:02 apparmor.d
   drwxr-xr-x 3 root root    4096 Jan 26 21:02 apport
   drwxr-xr-x 6 root root    4096 Jan 29 07:09 apt
   drwxr-xr-x 2 root root    4096 Jan 26 22:10 at-spi2
   -rw-r----- 1 root daemon   144 Oct 21  2013 at.deny
   -rw-r--r-- 1 root root    2177 Apr  9  2014 bash.bashrc
   -rw-r--r-- 1 root root      45 Mar 22  2014 bash_completion
……………
……………

디스크 사용량 표시

Salt는 특별한 모듈을 제공합니다. disk관리되는 시스템의 전체 디스크 세부 정보를 가져옵니다. 그만큼diskmodule 있다 usage 세부 사항을 조회하는 기능.

salt '*' disk.usage

다음을 생성합니다. output

minion1:
   ----------
   /:
      ----------
      1K-blocks:
         41251136
      available:
         37852804
      capacity:
         5%
      filesystem:
         /dev/sda1
      used:
         1662420
   /dev:
      ----------
      1K-blocks:
         503908
      available:
         503896
      capacity:
         1%
      filesystem:
         udev
      used:
         12
   /run:
      ----------
      1K-blocks:
         101780
      available:
         101412
      capacity:
         1%
      filesystem:
         tmpfs
      used:
         368
   /run/lock:
      ----------
      1K-blocks:
         5120
      available:
         5120
      capacity:
         0%
      filesystem:
         none
      used:
         0
   /run/shm:
      ----------
      1K-blocks:
         508884
      available:
         508872
      capacity:
         1%
      filesystem:
         none
      used:
         12
   /run/user:
      ----------
      1K-blocks:
         102400
      available:
         102400
      capacity:
         0%
      filesystem:
         none
      used:
         0
   /sys/fs/cgroup:
      ----------
      1K-blocks:
         4
      available:
         4
      capacity:
         0%
      filesystem:
         none
      used:
         0
   /vagrant:
      ----------
      1K-blocks:
         303114632
      available:
         252331440
      capacity:
         17%
      filesystem:
         none
      used:
         50783192
minion2:
   ----------
   /:
      ----------
      1K-blocks:
         41251136
      available:
         37852804
      capacity:
         5%
      filesystem:
         /dev/sda1
      used:
         1662420
   /dev:
      ----------
      1K-blocks:
         503908
      available:
         503896
      capacity:
         1%
      filesystem:
         udev
      used:
         12
   /run:
      ----------
      1K-blocks:
         101780
      available:
         101412
      capacity:
         1%
      filesystem:
         tmpfs
      used:
         368
   /run/lock:
      ----------
      1K-blocks:
         5120
      available:
         5120
      capacity:
         0%
      filesystem:
         none
      used:
         0
   /run/shm:
      ----------
      1K-blocks:
         508884
      available:
         508872
      capacity:
         1%
      filesystem:
         none
      used:
         12
   /run/user:
      ----------
      1K-blocks:
         102400
      available:
         102400
      capacity:
         0%
      filesystem:
         none
      used:
            0
   /sys/fs/cgroup:
      ----------
      1K-blocks:
         4
      available:
         4
      capacity:
         0%
      filesystem:
         none
      used:
         0
   /vagrant:
      ----------
      1K-blocks:
         303114632
      available:
         252331440
      capacity:
         17%
      filesystem:
         none
      used:
         50783192

네트워크 인터페이스

Salt는 관리되는 시스템에 대한 네트워크 인터페이스 정보를 쿼리하기 위해 별도의 모듈, 네트워크 및 기능, 모듈 내부의 인터페이스를 제공합니다.

salt '*' network.interfaces

다음을 생성합니다. output

minion1:
   ----------
   eth0:
      ----------
      hwaddr:
         08:00:27:04:3e:28
      inet:
         |_
            ----------
            address:
               10.0.2.15
            broadcast:
               10.0.2.255
            label:
               eth0
            netmask:
               255.255.255.0
      inet6:
         |_
            ----------
            address:
               fe80::a00:27ff:fe04:3e28
            prefixlen:
               64
            scope:
               link
      up:
         True
   eth1:
      ----------
      hwaddr:
         08:00:27:34:10:52
      inet:
         |_
            ----------
            address:
               192.168.50.11
            broadcast:
               192.168.50.255
            label:
               eth1
            netmask:
               255.255.255.0
      inet6:
         |_
            ----------
            address:
               fe80::a00:27ff:fe34:1052
            prefixlen:
               64
            scope:
               link
      up:
         True
   lo:
      ----------
      hwaddr:
         00:00:00:00:00:00
      inet:
         |_
            ----------
            address:
               127.0.0.1
            broadcast:
               None
            label:
               lo
            netmask:
               255.0.0.0
      inet6:
         |_
            ----------
            address:
               ::1
            prefixlen:
               128
            scope:
               host
      up:
         True
minion2:
   ----------
   eth0:
      ----------
      hwaddr:
         08:00:27:04:3e:28
      inet:
         |_
            ----------
            address:
               10.0.2.15
            broadcast:
               10.0.2.255
            label:
               eth0
            netmask:
               255.255.255.0
      inet6:
         |_
            ----------
            address:
               fe80::a00:27ff:fe04:3e28
            prefixlen:
               64
            scope:
               link
      up:
         True
   eth1:
      ----------
      hwaddr:
         08:00:27:a7:31:8e
      inet:
         |_
            ----------
            address:
               192.168.50.12
            broadcast:
               192.168.50.255
            label:
               eth1
            netmask:
               255.255.255.0
      inet6:
         |_
            ----------
            address:
               fe80::a00:27ff:fea7:318e
            prefixlen:
               64
            scope:
               link
      up:
         True
   lo:
      ----------
      hwaddr:
         00:00:00:00:00:00
      inet:
         |_
            ----------
            address:
               127.0.0.1
            broadcast:
               None
            label:
               lo
            netmask:
               255.0.0.0
      inet6:
         |_
            ----------
            address:
               ::1
            prefixlen:
               128
            scope:
               host
      up:
         True

sys.doc 실행 모듈

소금 기능은 sys.doc실행 모듈. 이것은 명령 줄에서 직접 모듈에 대한 세부 정보를 가져 오는 데 사용됩니다. Salt 함수는 자체 문서화입니다. 모든 함수 문서는 아래에 정의 된 sys.doc () 함수를 통해 미니언에서 검색 할 수 있습니다.

salt '*' sys.doc

함수 호출을위한 인수

인수는 함수 호출에 대한 추가 데이터를 제공하는 데 사용됩니다. 간단한 인수 예가 아래에 나와 있습니다.

salt '*' sys.doc pkg.install

여기, 논쟁 pkg.install 특정 패키지를 설치하는 모듈입니다.

Python 함수

인수는 함수에 대한 공백으로 구분 된 매개 변수입니다. 아래에 주어진 것처럼 파이썬 코드를 인수로 전달할 수 있습니다.

salt '*' cmd.exec_code python 'import sys;print sys.version'

다음을 생성합니다. output

minion2:
   2.7.6 (default, Oct 26 2016, 20:30:19) 
   [GCC 4.8.4]
minion1:
   2.7.6 (default, Oct 26 2016, 20:30:19) 
   [GCC 4.8.4]

마찬가지로 선택적 키워드와 YAML 형식도 있습니다.