2015-01-05 2 views
3

Ansible module development documentation 상태 : 항상 함께 모듈 파일을 종료 포함 [Ansible 모듈을 작성]가져 오기 Ansible 모듈 유틸

주요 부품 :

from ansible.module_utils.basic import * 
main() 

이의 일반적인 관행과 모순 파일 상단에 가져 오기를 그룹화합니다. import *을 사용하면 보푸라기 도구 (예 : flake8)가 효과적으로 작동하지 않으며, generally regarded as bad practice입니다.

이 방법으로 가져올 이유가 있습니까? 아니면 여기에 자신 만의 스타일을 추천하고 있습니까?

+0

아니야, 그냥 지나가고있어. 그들을 무시하고 올바르게하십시오. – VooDooNOFX

답변

2

참고 : 아래 답변은 더 이상 2.1 관련이 없습니다. 덧글에서 :

나는 이것이 오래된 게시물이라는 것을 알고 있지만 누구나 여전히 관심을 가져야한다고 생각한다. 이것은 2.1 이후로 더 이상 사실이 아님을 주목할 가치가있다. 가져온 것 here : Anabilities-2.1.0 이전 버전에서는 사용한 .module_utils.basic 파일에서 가져온 파일 만 가져 오기가 작동하지 않았습니다. 당신이 import * 사업을하지 않는 경우 bouletta

원래 대답

Ansible (prior to version 2.1) will refuse to run - 와일드 카드 가져 오기를 사용하는 데 필요한. 나는 100 % 확실하지 않다. 무엇을 마술하고 있지만, 나는 some을 알고있다.

Replacer는 전송 전에 모듈에 코드 덩어리를 삽입하는 데 사용됩니다. 클래식 파이썬 가져 오기를 수행하는 대신 여분의 파일 을 이동하지 않고 no-bootstrapping 시나리오에서 더 효율적인 전송을 허용하고 전송 된 모듈에 인수를 포함합니다.

이 버전은 로컬 가져 오기가 여전히 모듈 코드에 사용 된 일 수있는 방식으로 이루어 지므로 IDE는 어떤 일이 벌어지고 있는지 알 필요가 없습니다.

예 :

from ansible.module_utils.basic import * 

... 소스 트리에 module_utils/디렉토리 모듈 내로 삽입 basic.py 될 것이다.

모든 모듈은 최소한 기본 코드를 가져와야합니다. 그러나 다른 스 니펫 이어도됩니다.

+1

@augurar 나는 이것이 오래된 게시물이라는 것을 알고 있지만 누군가는 여전히 관심을 가져야한다고 생각한다. 이것은 2.1 이후로 더 이상 사실이 아님을 주목할 가치가있다. [여기] (https://docs.ansible.com/ansible/dev_guide/developing_modules.html)에서 가져온 것 : Ansible-2.1.0 이전 버전에서는 사용한 .module_utils.basic에서 사용한 것을 가져 오지 못했습니다. 와일드 카드 가져 오기를 사용해야했습니다. – bouletta