ansible mysqldbはtagrgetオプションのエントリを受け入れません。

ansible mysqldbはtagrgetオプションのエントリを受け入れません。

一部のSQLファイルを含むデータベースホストがあります。 Ansible Playbookを使用してデータベースにソースを追加したいと思います。そのため、すべてのファイルを見つけて変数に登録し、次のコードを使用してそのファイルをインポートしようとします。

- name: get schema files
  find:
    paths: "~/dbs/"
    recurse: no
    patterns: "*.sql"
  register: db_sql_files

- name: import schemas
  mysql_db:
    name: all
    state: import
    target: "{{ item['path'] }}"
    login_user: "{{ db_user }}"
    login_password: "{{ db_pass }}"
    with_items: "{{ db_sql_files['files'] }}"

プレイブックを実行すると、次のエラーが発生します。

The task includes an option with an undefined variable. The error was: 'item' is undefined

ベストアンサー1

アイテムのインデントがwith_items正しくありません。項目から 2 つのスペースを削除すると、with_items問題が解決します。

- name: import schemas
  mysql_db:
    name: all
    state: import
    target: "{{ item['path'] }}"
    login_user: "{{ db_user }}"
    login_password: "{{ db_pass }}"
  with_items: "{{ db_sql_files['files'] }}" # On the sime line as the mysql_db call. 

おすすめ記事