SaltStack 이해 – 파이썬

파이썬

아까 우리가 솔트를 사용하기 위해서 파이썬이나 다른 코드를 쓸 필요가 없다고 말한 것을 압니다. 사실입니다. 그러나 파이썬, 또는 적어도 파이썬 함수 설명서를 읽을 수 있는 것은 많은 상황에서 유용하며, 이것은 파이썬을 쓰는 것보다 훨씬 더 쉬운 것으로 밝혀졌다.

이 섹션에서는 Salt의 작동 방식을 보다 잘 이해할 수 있도록 도와주는 Python 기본 사항에 대해 설명합니다.

모듈

솔트에서 각 하위 시스템 플러그인은 파이썬 모듈입니다. Salt 용어로 모듈을 애플리케이션(mysql, docker), 시스템 구성 요소(디스크, 파일) 또는 외부 시스템(gitfs)을 관리하는 함수 그룹(일명 명령)으로 생각할 수 있습니다.

알아야 할 사항은 다음과 같습니다.

  • 모든 모듈은 소스의 salt 폴더에 있습니다. 각 하위 시스템에 대해 별도의 폴더가 존재하며, 각 모듈은 .py로 끝나는 별도의 파일입니다.
  • 모듈은 salt.subsystem.module 형식으로 이름이 지정됩니다. 보통 이 네임스페이스는 문서에 표시되므로 어떤 유형의 하위 시스템 모듈을 보고 있는지 빠르게 알 수 있습니다. 혼란의 한 가지 요점은 실행 모듈이 솔트의 초기 버전에서 사용 가능한 최초이자 유일한 모듈이었기 때문에 salt.module로 시작하는 것이다(시간여행이 발명되면 아마도 salt.execution으로 시작할 것입니다).
  • 모듈에는 필요한 만큼의 기능이 포함되어 있습니다. 파일 관리 작업이 상당히 중요하기 때문에 파일 실행 모듈(salt.modules.file)에는 많은 기능이 있습니다. uwsgi stats 서버 실행 모듈(salt.modules.uwsgi)에는 하나만 있습니다.
모듈은 각 하위 시스템에서 다르게 사용됩니다!
솔트 소스 폴더를 보면 아마 지금 파이썬 코드에 약간 압도당했다고 느끼실 겁니다. 다행히 직접 상호 작용해야 하는 모듈 유형은 실행 모듈(salt.module)과 스테이트 모듈(salt.states) 두 가지뿐입니다.
작업 결과(salt.outputters)를 포맷할 수 있는 모듈은 salt 명령을 호출할 때 --out 인수를 사용하여 활성화됩니다. 인증, 비컨, 엔진, 파일 서버, 필러, 프록시, 반환기 등 솔트 마스터 또는 미니언 구성 파일에서 대부분의 다른 하위 시스템 모듈을 사용할 수 있습니다. 그리고 어떤 것들은 그레인과 같은 것으로 아무것도 할 필요가 없습니다. 왜냐하면 그레인은 자동으로 일을 하기 때문입니다.

함수(function)

모듈의 이전 섹션을 이해했다면 기능은 훨씬 더 쉽습니다. 기능을 모듈 내에서 시스템을 관리하고 구성하기 위해 호출할 수 있는 특정 명령으로 생각할 수 있습니다. 예를 들어 salt.modules.pkg.install, salt.modules.network.interface 및 salt.modules.user.add는 모두 일반적인 실행 함수입니다. 함수는 Salt의 동사이며, 일반적으로 모듈 문서를 열고 함수 이름을 확인하여 호출할 함수를 파악할 수 있습니다.

인수(argument)

특히 키워드 인수에 익숙하지 않은 경우 인수가 조금 더 복잡하며, 인수 구문은 솔트를 시작할 때 일반적으로 중단됩니다.

인수는 원격 실행과 상태 간에 다르게 표현되므로 각각에 대해 설명합니다.

실행 함수 인수

명령줄에서 Salt를 값으로 호출하거나 argument=value으로 호출할 때 실행 인수가 추가 값으로 전달됩니다. 필수 값은 일반적으로 공백으로만 구분된 값으로 특정 순서로 전달되며, 기본값을 가진 선택적 인수는 argument=value으로 전달됩니다.

예를 들어 Salt 문서에 나타나는 user.add의 함수 시그니처를 살펴보십시오(user는 가상 모듈이므로 useradd에 대한 문서를 봅니다).

salt.modules.useradd.add(name, uid=None, gid=None, groups=None, home=None,
shell=None, unique=True, system=False, fullname='', roomnumber='',
workphone='', homephone='', createhome=True, loginclass=None)

이 모듈을 호출할 때 이름은 필수이며 제공된 기본값이 없음을 알 수 있습니다. 다른 값을 재정의로 전달하지 않는 한 나머지 인수는 나열된 값을 사용합니다. 다음 예에서는 Fred라는 사용자를 생성하고 다른 기본 셸을 설정합니다.

salt '*' user.add fred shell=/bin/zsh

탈출은 당신의 쉘 규칙을 따릅니다.

추가 예제

정규 인수 및 키워드 인수(일반적으로 arg 및 kwarg로 줄임)는 가장 일반적인 유형입니다. 다음은 1개의 arg와 3개의 kwarg를 전달하는 예입니다.

salt '*' network.connect google-public-dns-a.google.com port=53 proto=udp timeout=3

2개의 arg와 1개의 kwarg 전달

salt '*' cp.get_file salt://vimrc /etc/vimrc gzip=5

일부 실행 모듈은 다음과 같이 목록을 받아들입니다.

`salt ns1 pkg.install pkgs=['bind9','bind9-docs','bind-utils']`

일부는 심지어 사전의 목록을 작성하기도 합니다.

`salt '*' pkg.install sources='[{"foo": "salt://foo.deb"},{"bar": "salt://bar.deb"}]'`

솔트 문서에는 많은 예가 포함되어 있습니다. 만약 여러분이 막히면 IRC의 친절한 솔트 사용자들이 여러분을 도와줄 수 있습니다.

스테이트 함수 인수

상태 함수는 YAML 구문을 사용하여 상태 파일에서 호출됩니다. YAML 구문은 데이터 유형을 나타내는 데 매우 유용하기 때문에 복잡한 데이터 유형을 가진 함수를 호출하는 것이 주에서 더 쉽다는 것을 알게 될 것입니다. 사용자가 상태에서 추가되는 방법을 보려면 salt.states.user.present 함수를 살펴보겠습니다.

salt.states.user.present(name, uid=None, gid=None, gid_from_name=False,
groups=None, optional_groups=None, remove_groups=True, home=None,
createhome=True, password=None, hash_password=False, enforce_password=True,
empty_password=False, shell=None, unique=True, system=False, fullname=None,
roomnumber=None, workphone=None, homephone=None, loginclass=None, date=None,
mindays=None, maxdays=None, inactdays=None, warndays=None, expire=None,
win_homedrive=None, win_profile=None, win_logonscript=None,
win_description=None)
user.add 대 user.present
state 함수는 stateful이기 때문에 salt.states.user.present 함수는 먼저 사용자가 이미 존재하는지 확인하고, 존재하지 않을 경우 "present" 상태를 만족시키기 위해 사용자를 생성한다. salt.modules.user.add 실행 함수는 단순히 사용자를 추가하기만 하면 사용자가 이미 존재하는 경우 오류가 발생할 수 있습니다.

인수가 많더라도 YAML에서 키워드 인수가 있는 함수를 호출하는 것은 쉽습니다.

a state example that calls user.present:
  user.present:
    - name: fred
    - shell: /bin/zsh

목록은 또한 YAML을 사용하여 쉽게 정의할 수 있습니다.

install bind packages:
  pkg.installed:
    - pkgs:
      - bind9
      - bind9-docs
      - bind-utils

사전 목록을 정의하는 작업도 명령줄에서보다 쉽습니다.

Install some packages using other sources:
  pkg.installed:
    - name: mypkgs
    - sources:
      - foo: salt://foo.deb
      - bar: http://somesite.org/bar.deb

실행 및 상태 함수에 모두 적용되는 추가 팁: 사용 가능한 모든 인수가 함수 서명에 나열되지는 않습니다. 여러 실행 함수는 다른 Python API 또는 인터페이스에 대한 워래퍼(wrapper) 역할을 하므로 사용자가 제공한 인수를 따라 전달하기만 합니다. 이러한 추가 인수는 일반적으로 서명 아래에 기록되지만, 어떤 것이 지원되는지 정확히 알기 위해 코드 또는 해당 인터페이스를 확인해야 하는 경우도 있습니다.

이렇게 하면 Python이 실행 및 상태 하위 시스템에서 사용자를 시작하는 데 사용되는 방법을 충분히 이해할 수 있습니다. SaltStack Fundamentals로 이동하여 Salt를 설치하고 사용하는 방법을 알아보십시오.

출처 : https://docs.saltproject.io/en/getstarted/system/python.html
답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

You May Also Like
Read More

SaltStack 속도

SaltStack에서 속도는 부산물이 아니라 디자인 목표입니다. SaltStack은 원격 실행 엔진을 위한 기반을 제공하기 위해 매우 빠르고 가벼운 통신…