角色中环境变量的可用清单

问题描述 投票:0回答:1

我有一个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

我按如下方式运行剧本“ run_sqls”。

ansible-playbook run_sqls.yml -i inventories/app/production/inventory

我想了解的是,我应该如何为以下环境变量指定值,以便它们可以是动态的,并可以由其他环境的主机(例如,开发等)使用。

PGDATABASE: "{{ db_name }}"
PGUSER: "{{ db_user }}"
PGHOST: "{{ db_host }}"
PGPORT: "{{ db_port }}"

在各自的清单文件中指定它们似乎不起作用,对于“未定义的变量”来说,剧本错误是有道理的。以下是我尝试过的方法。/ app / production / inventory

[dbservers]
192.168.1.100 db_name=mycompany db_user=abc db_port=3308

请注意,当在“ db_scripts / default / main.yml”中指定了上述环境变量的值时,playbook完美运行。真的很感谢一些投入。我刚开始使用ansible,所以请尽可能简单地举例说明。在此先感谢:)

ansible ansible-inventory ansible-role
1个回答
0
投票
[dbservers]
192.168.1.100 db_name=mycompany db_user=abc db_port=3308

Q:“在相应清单文件中指定它们(变量)似乎不起作用,对于” undefined vars“,playbook错误出了问题。

A:此清单中的变量应按预期工作。简单测试

- hosts: dbservers
  tasks:
    - debug:
        msg:
          - '{{ db_name }}'
          - '{{ db_user }}'
          - '{{ db_host }}'
          - '{{ db_port }}'

有2个问题

1)库存中缺少db_host

2)命令inventories/app/production/inventory中的路径与描述的/app/production/inventory中的路径不同>

ansible-playbook run_sqls.yml -i inventories/app/production/inventory
© www.soinside.com 2019 - 2024. All rights reserved.