ansible mysqldb는 tagrget 옵션의 항목을 허용하지 않습니다.

ansible mysqldb는 tagrget 옵션의 항목을 허용하지 않습니다.

일부 SQL 파일이 포함된 데이터베이스 호스트가 있습니다. Ansible 플레이북을 사용하여 데이터베이스에 소스를 추가하고 싶습니다. 그래서 모든 파일을 찾아 변수에 등록한 다음 아래 코드를 사용하여 해당 파일을 가져오려고 합니다.

- 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잘못되었습니다. 항목에서 두 개의 공백을 제거하면 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. 

관련 정보