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 가 아닌걸로도 볼 수 있다.