다음을 가정합니다.
메인 스크립트.yml
- name: Play-1
hosts: localhost
connection: local
gather_facts: no
roles:
- role: my-role
vars:
newhost: 192.168.1.1
생성된_플레이북.yml
- name: Play-1
hosts: newhost
gather_facts: yes
tasks:
- name: Task1
- name: Task2
- name: Task3
역할의 주요 임무:
- name: "Role MAIN-1"
add_host:
name: newhost
ansible_host: "{{newhost}}"
- include: generated_playbook.yml
실수:
ERROR! conflicting action statements: hosts, tasks
The error appears to be in 'generated_playbook.yml': line 1, column 3, but may
be elsewhere in the file depending on the exact syntax problem.
The offending line appears to be:
- name: Generated Playbook
^ here
새로운 캐릭터를 만들어서 메인 스크립트에 포함시켰어요.
이 역할에서는 인메모리 인벤토리에 새 호스트를 추가한 다음 j2 템플릿 샘플 출력 generate_playbook.yml을 사용하여 새 플레이북을 생성합니다.
질문:
기본 플레이북에 다른 항목을 추가하지 않고 새로 추가된 호스트에서 새로 생성된 플레이북을 실행할 수 있는 방법이 있습니까?
import-playbook을 사용하거나 역할에 포함시키려고 했지만 실패했습니다.
답변1
그것은 불가능합니다. 에서 인용ansible.buildin.import_playbook
재생 목록이 있는 파일은 최상위 수준에만 포함될 수 있습니다.
이것예분명히 이렇게 말했다
- name: This DOES NOT WORK
hosts: all
tasks:
- debug:
msg: task1
- name: This fails because I'm inside a play already
import_playbook: stuff.yaml
노트
- 아니요include_playbook. 무엇을 볼 것인가포함하다_*그리고수입_*모듈을 사용할 수 있습니다.
shell> ansible-doc -t module -l | grep include_
include_role Load and ...
include_tasks Dynamically inclu...
include_vars Load variables from files, dynamically...
shell> ansible-doc -t module -l | grep import_
import_playbook Imp...
import_role Import a ro...
import_tasks Impo...
- 다음의 메모 인용모듈 가져오기:
이는 모듈이 아닌 Ansible의 핵심 기능으로, 모듈처럼 재정의될 수 없습니다.