実現したいこと
extra_varsにて変数「region」に「tokyo」を設定して、templatesディレクトリ配下の
「tokyoディレクトリ」配下にある全てのファイルをコピーしたいです。
コピーするファイルはvars配下のmain.ymlに設定しています。
「tokyo_map1.txt」、「tokyo_map2.txt」、「tokyo_map3.txt」のファイルを
「copy_task.yml」5行目のloopの変数を使って「item」としてコピーしたいのですが、
playbookを実行するとコピー元のファイルのpathが通らず、変数「item」が未定義のエラーとなります。
ymlファイルに複数登録しているフィアルを全てコピーする方法をご存じの方が
いらっしゃいましたらご教授頂けないでしょうか。
宜しくお願い致します。
前提
実行するコマンド
$ ansible-playbook -i hosts.yml playbook.yml -e "colocation=hogetokyo01.com region=tokyo"
エラーメッセージ抜粋
The error was: 'item' is undefined.
該当のソースコード
tree
1 2```└── roles 3 └── hoge 4 ├── tasks 5 │ └── copy_task.yml 6 ├── templates 7 │ ├── osaka 8 │ │ ├── osaka_map4.txt 9 │ │ ├── osaka_map5.txt 10 │ │ └── osaka_map6.txt 11 │ └── tokyo 12 │ ├── tokyo_map1.txt 13 │ ├── tokyo_map2.txt 14 │ └── tokyo_map3.txt 15 └── vars 16 └── mail.yml
rolse/hoge/vars/mail.yml
1--- 2area: 3 tokyo: 4 - "tokyo_map1.txt" 5 - "tokyo_map2.txt" 6 - "tokyo_map3.txt" 7 osaka: 8 - "osaka_map4.txt" 9 - "osaka_map5.txt" 10 - "osaka_map6.txt"
roles/hoge/tasks/copy_task.yml
1- name: Copy map files 2 ansible.builtin.template: 3 dest: /usr/local/share/map/ 4 src: "{{ region }}/{{ item }}" 5 loop: "{{ area.[region] }}" 6 owner: root 7 group: root 8 mode: "0555" 9 register: hoge_copy_map
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。