У меня есть роль Ansible, с которой я хочу выполнить сценарий psql. Название роли - «db_scripts», и я перечислю содержимое соответствующих каталогов / файлов ниже.
db_scripts / tasks / mail.yml
-
name: "Run the SQLS"
command: "psql -f \"{{ script }}\"/files/my_sql_script.sql"
environment:
PGDATABASE: "{{ db_name }}"
PGUSER: "{{ db_user }}"
PGHOST: "{{ db_host }}"
PGPORT: "{{ db_port }}"
delegate_to: localhost
db_scripts / files / my_sql_script.yml
insert into employees(name, contact) values (Jack, 5555555);
db_scripts / default / main.yml
script: "{{ role_path }}"
/ app / производство / инвентарь
[dbservers]
db_host=192.168.1.100 db_name=mycompany db_user=abc db_port=3308
/ app / playbooks / run_sqls.yml
- name: Run sql
hosts: dbservers
roles:
- db_scripts
Я запускаю playbook "run_sqls" следующим образом.
ansible-playbook run_sqls.yml -i inventories/app/production/inventory
Что я хочу понять, так это то, как я должен указать значения для следующих переменных среды, чтобы они могли быть динамическими c и могли использоваться хостами других сред, например: development et c ..
PGDATABASE: "{{ db_name }}"
PGUSER: "{{ db_user }}"
PGHOST: "{{ db_host }}"
PGPORT: "{{ db_port }}"
Задание их в соответствующем файле инвентаря, похоже, не работает, ошибки playbook для «неопределенных переменных» имеют смысл. Вот как я пытался. / приложение / производство / инвентарь
[dbservers]
192.168.1.100 db_name=mycompany db_user=abc db_port=3308
Ошибка при запуске playbook
TASK [db_scripts : Run the SQLS] ******************************************************************************************************************************************************************
fatal: [localhost]: FAILED! => {"msg": "The field 'environment' has an invalid value, which includes an undefined variable. The error was: 'db_host' is undefined\n\nThe error appears to be in '/home/db_scripts/tasks/mail.yml': line 37, column 3, but may\nbe elsewhere in the file depending on the exact syntax problem.\n\nThe offending line appears to be:\n\n-\n name: \"Run the SQLS\"\n ^ here\n"}
Обратите внимание, когда значения для Указанные env-переменные указаны в "db_scripts / default / main.yml", playbook Работает отлично. Действительно ценю некоторые материалы. Я только начал с ansible, поэтому, пожалуйста, будьте просты с примерами. Заранее спасибо:)