1

Ansible ロールの基本的なディレクトリ構造は次のとおりです。

rolename
  files
  templates
  tasks
  ...

ここで私の質問は、ファイルまたはテンプレート フォルダーの内部に次のようなディレクトリ構造を持たせることができるかということです。

rolename
  files
  templates
     etc
       hosts
  tasks
  ...

したがって、私のタスクは次のようになります。

- name: Approve hosts file
  template:
    src: ./etc/hosts (I WANT TO REFERENCE THE FILE INSIDE THE TEMPLATES FOLDER)
    dest: /etc/hosts

これは動作しません :(

templates フォルダー内のファイルを参照するにはどうすればよいですか?

重要: ファイル システムを模倣したいので、テンプレート フォルダー内にフラットな構造は必要ありません。そのため、テンプレート フォルダー構造を見るだけで、ファイルがどこにコピーされるかがわかります。

参考までに、フラット構造を使用すると機能します。

4

1 に答える 1

2

質問に含めた構文は正常に機能します。

証拠:

#!/bin/bash

mkdir -p ./roles/role1
mkdir -p ./roles/role1/files
mkdir -p ./roles/role1/templates/etc
mkdir -p ./roles/role1/tasks

cat >./roles/role1/tasks/main.yml <<TASKS_END
---
- template:
    src: ./etc/hosts
    dest: /tmp/hosts
TASKS_END

cat >./roles/role1/templates/etc/hosts <<TEMPLATE_END
{{ ansible_managed }}
TEMPLATE_END

cat >./playbook.yml <<PLAYBOOK_END
---
- hosts: localhost
  gather_facts: no
  connection: local
  roles:
    - role1
PLAYBOOK_END

ansible-playbook ./playbook.yml
cat /tmp/hosts

結果:

PLAY [localhost] ***************************************************************

TASK [role1 : template] ********************************************************
changed: [localhost]

PLAY RECAP *********************************************************************
localhost                  : ok=1    changed=1    unreachable=0    failed=0

Ansible managed
于 2017-01-15T12:23:07.297 に答える