以下を想定します。
メインスクリプト.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を使用して新しいプレイブックを作成します。
Q:
プライマリプレイブックに他のエントリを追加せずに、新しく追加されたホストで新しく作成されたプレイブックを実行する方法はありますか?
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の重要な機能であり、モジュールのように上書きすることはできません。