アンサーブルプレイブックinclude.yml

アンサーブルプレイブックinclude.yml

私は基本的にRedhatでもDebianでもリモートホストから動的情報を取得し、それに応じてOSのバージョンに従ってhttpパッケージをインストールする特定のファイルを実行したいと思います。

[root@ansi1 ansible]# cat include.yml
---
 - hosts: all
   tasks:
   - name: Getting os info
     include_vars: "{{ ansible_os_family }}.yml"

   - include: setup-RedHat.yml
     when: ansible_os_family == 'RedHat'
[root@ansi1 ansible]#
[root@ansi1 ansible]#
[root@ansi1 ansible]#
[root@ansi1 ansible]# cat setup-RedHat.yml
---
 - hosts: all
   tasks:
   - name: htttp install
     yum: name=httpd state=present

アンサーブルプレイブックinclude.yml

間違い:

ERROR! no action detected in task. This often indicates a misspelled module name, or incorrect module path.

The error appears to have been in '/etc/ansible/setup-RedHat.yml': line 2, column 4, but may
be elsewhere in the file depending on the exact syntax problem.

The offending line appears to be:

---
 - hosts: all
   ^ here


The error appears to have been in '/etc/ansible/setup-RedHat.yml': line 2, column 4, but may
be elsewhere in the file depending on the exact syntax problem.

The offending line appears to be:

---
 - hosts: all
   ^ here

答え1

includeセクションでこのモジュールを使用すると、tasksプレイブックは含めることができず、タスクリストのみを含めることができます。つまり、ファイルにはsetup-RedHat.yml次のコンテンツのみを含める必要があります。

- name: htttp install
  yum: name=httpd state=present

- name: more tasks...

答え2

include_varsこのディレクティブは、値として提供されたファイルから現在のプレイブックのAnsible変数を取得するためのものです。この場合、変数(およびで宣言されている可能性があります)はファイルから継承されます"{{ ansible_os_family }}.yml"

ansible_os_family実際には、Ansibleはリモートシステムから自動的に情報を収集し、コンテキストでリリースの親リリース(存在する場合)として識別されるか、または親リリースがない場合はそれ自体で情報を収集します。したがって、例えば Debian 派生プログラムでこのプログラムを実行すると、探しているファイル名はDebian.yml.

関連情報