У меня есть роль 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 / production / inventory
[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
Я хочу понять, как я должен указывать значения для следующих переменных среды, чтобы они могли быть динамическими и могли использоваться хостами других сред, например: разработка и т. Д.
PGDATABASE: "{{ db_name }}"
PGUSER: "{{ db_user }}"
PGHOST: "{{ db_host }}"
PGPORT: "{{ db_port }}"
Указание их в соответствующем файле инвентаризации, похоже, не работает, ошибки playbook для "undefined vars" имеют смысл. Вот как я пытался. / app / production / inventory
[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 работает отлично. Действительно ценю некоторые вклады. Я только начал работать с анзиблем, поэтому, пожалуйста, будьте как можно проще с примерами. Заранее спасибо :)
"... playbook errors out for "undefined vars" which make sense."
Можно ли объяснить, что именно имеет смысл? - person Vladimir Botka   schedule 17.02.2020