8.4. 기존 역할을 컬렉션으로 마이그레이션
독립 실행형 역할의 디렉터리에는 다음과 같은 구조가 있습니다. 역할에 이러한 디렉터리가 모두 포함되지 않을 수 있습니다.
my_role ├── README.md ├── defaults │ └── main.yml ├── files ├── handlers │ └── main.yml ├── meta │ └── main.yml ├── tasks │ └── main.yml ├── templates ├── tests │ ├── inventory │ └── test.yml └── vars └── main.yml
my_role
├── README.md
├── defaults
│ └── main.yml
├── files
├── handlers
│ └── main.yml
├── meta
│ └── main.yml
├── tasks
│ └── main.yml
├── templates
├── tests
│ ├── inventory
│ └── test.yml
└── vars
└── main.yml
Ansible 역할에는 7개의 기본 표준 디렉터리가 있는 정의된 디렉터리 구조가 있습니다. 각 역할에는 이러한 디렉터리 중 하나 이상이 포함되어야 합니다. 역할이 사용하지 않는 디렉터리를 생략할 수 있습니다. 각 디렉터리에는 main.yml
파일이 포함되어 있습니다.
프로세스
필요한 경우 해당 콘텐츠를 반영하도록 역할이 포함된 디렉터리의 이름을 바꿉니다(예:
acl_config
또는tacacs
).컬렉션의 역할에는 이름에 하이픈이 있을 수 없습니다. 밑줄 문자(
_
)를 대신 사용합니다.독립 실행형 역할의 역할 디렉터리를 컬렉션의
roles/
디렉터리에 복사합니다.예를 들어
myapp_network
라는 컬렉션에서myapp_network/roles/
디렉터리에 역할을 추가합니다.독립 실행형 역할의 플러그인을 새 컬렉션의
plugins 디렉터리/
에 복사합니다. 컬렉션 디렉터리 구조는 다음과 유사합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow company_namespace └── myapp_network ├── ... ├── galaxy.yml ├── docs ├── extensions ├── meta ├── plugins ├── roles │ ├── acl_config │ │ ├── README.md │ │ ├── defaults │ │ ├── files │ │ ├── handlers │ │ ├── meta │ │ ├── tasks │ │ ├── templates │ │ ├── tests │ │ └── vars │ └── tacacs │ ├── README.md │ ├── default │ ├── files │ ├── handlers │ ├── meta │ ├── tasks │ ├── templates │ ├── tests │ └── vars │ ├── run ├── ... ├── tests └── vars
company_namespace └── myapp_network ├── ... ├── galaxy.yml ├── docs ├── extensions ├── meta ├── plugins ├── roles │ ├── acl_config │ │ ├── README.md │ │ ├── defaults │ │ ├── files │ │ ├── handlers │ │ ├── meta │ │ ├── tasks │ │ ├── templates │ │ ├── tests │ │ └── vars │ └── tacacs │ ├── README.md │ ├── default │ ├── files │ ├── handlers │ ├── meta │ ├── tasks │ ├── templates │ ├── tests │ └── vars │ ├── run ├── ... ├── tests └── vars
run
역할은 컬렉션을 스캐폴드할 때 생성되는 기본 역할 디렉터리입니다.- 컬렉션의 새 역할에 대해 FQDN(정규화된 컬렉션 이름)을 사용하도록 플레이북을 업데이트합니다.
모든 독립 실행형 역할이 코드를 수정하지 않고 컬렉션에 원활하게 통합되는 것은 아닙니다. 예를 들어 플러그인이 포함된 Galaxy의 타사 독립 실행형 역할이 module_utils/
디렉터리를 사용하는 경우 플러그인 자체에 import 문이 있습니다.