Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql 如何在ansible中迭代环境变量?_Postgresql_Loops_Ansible_Environment Variables_Host - Fatal编程技术网

Postgresql 如何在ansible中迭代环境变量?

Postgresql 如何在ansible中迭代环境变量?,postgresql,loops,ansible,environment-variables,host,Postgresql,Loops,Ansible,Environment Variables,Host,在这个剧本里 # db.yml - hosts: deploy-server become: True roles: - db environment: PGHOST: "{{ db_host }}" PGPASSWORD: "{{ db_pass }}" 在数据库角色中 # roles/db/tasks/main.yml - name: Run sql shell: "psql -U postgre

在这个剧本里

# db.yml

- hosts: deploy-server
  become: True
  roles:
    - db
  environment:
    PGHOST: "{{ db_host }}"
    PGPASSWORD: "{{ db_pass }}"
在数据库角色中

# roles/db/tasks/main.yml

- name: Run sql
  shell: "psql -U postgres -f /sql"
我想将相同的sql脚本部署到多个db服务器

例如,使用以下变量:

  • db_主机1
  • db_主机2
不是通过ssh而是使用psql。因此,是否可以循环使用
PGHOST
变量来设置要使用的动态列表?

Q:是否可以循环使用PGHOST变量?

A:是的。这是可能的。在循环中设置环境变量,例如

-hosts:localhost
任务:
-命令:“echo$PGHOST”
寄存器:结果
循环:[db_host1,db_host2]
环境:
PGHOST:“{{item}}”
-调试:
msg:{{result.results}json_查询('[].stdout')}
给予

msg:
-db_主机1
-db_主机2

如果要将各种环境应用于角色,请迭代环境,例如角色

shell>cat角色/db/tasks/main.yml
-命令:“echo$PGHOST”
寄存器:结果
-调试:
var:result.stdout
还有剧本

shell>cat pb.yml
-主机:本地主机
任务:
-包括以下角色:
姓名:db
适用于:
环境:
PGHOST:“{{item}}”
循环:[db_host1,db_host2]
给予

。。。
任务[包括角色:db]***********************************************
任务[db:命令]****************************************************
已更改:[localhost]
任务[db:调试]******************************************************
确定:[本地主机]=>
result.stdout:db_host1
任务[db:命令]****************************************************
已更改:[localhost]
任务[db:调试]******************************************************
确定:[本地主机]=>
result.stdout:db_host2
...