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
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
...