OpenStack 프로젝트들에서 사용되는 것들 중... root 와 관련된 작업을 진행해야하는 경우가 있다. 그럴때 사용하려고 만들어둔 rootwrap

Wiki에서는 이 블로그 에 작성된 문제를 해결하기 위해서 만들어졌다고 한다.

짧은 내기억으로는 간단한 팡리로만 존재했던 것같은데. (아닐 가능성 100%라논 소리...), 지금은 oslo 패키지로 관리되고 있다. github repo

사용자용

nova.conf 에 다음 문구 추가하도록...

rootwrap_config=/etc/nova/rootwrap.conf

배포용 패키지를 만드는 사람용

Suduers 설정

sudoers 에 다음 문구를 추가하도록...

nova ALL = (root) NOPASSWD: /usr/bin/nova-rootwrap /etc/nova/rootwrap.conf *

필터 위치 설정

rootwrap 으로 Nova-provided 필터 파일을 로드하고, rootwrap.d 로 확장 사용자의 필터 파일을 로드하도록 설정해 줄것.

[DEFAULT]
filters_path=/etc/nova/rootwrap.d,/usr/share/nova/rootwrap

필터 정의

각 노드마다 설치를... 해줘야된다고.

플러그인 작성자용

새로운 run-as-root 명령을 추가

root로 동작시킬 것이 있을 경우.

  • nova.utils.execute(run_as_root=True) 를 사용할 것.
  • 관련 필터 내용은 /etc/nova/rootwrap.d/foobar.filters 에 추가해둘 것.

프로젝트 개발자용

새로운 run-as-root 명령을 추가

  • nova.utils.execute(run_as_root=True) 를 사용할 것.
  • Nova 코드에서 /etc/nova/rootwrap.d/{filter_name}.ilters 파일에 관련된 내용을 추가해줄 것.
    • 예로 Compute 노드에서 작동하는 소스라면 /etc/nova/rootwrap.d/compute.filters 에다가 추가하도록.

상위 필터 타입 추가

  • 기본 필터 타입은 CommandFilter 임.
  • 새로운 타입을 만들거나 지금 존재하는 타입을 확인하고 싶다면 filters.py 를 보면 된다. - Available Filter Classes 가 아닌걸로도 볼 수 있다.