我正在寻找一种在ansible playbook中使用文件行作为变量的方法。 我有一个使用大约15-20个变量的变量数量的剧本。所以我很难在运行时传递这15个变量。 为此,我将创建一个文件,如:
**** variables.txt *****
Tomcat8
192.168.0.67
8080
8081
8082
8084
Playbook Sample:
---
- hosts: tomcat_server
vars:
tomcat_instances:
- name: foo
user: tomcatfoo
group: tomcatfoo
path: /srv/tomcatfoo
home: /home/tomcatfoo
service_name: foo@tomcat
service_file: foo@.service
port_ajp: 18009
port_connector: 18080
port_redirect: 18443
port_shutdown: 18005
因此,如果有任何方法我可以调用行号来传递playbook中变量的值,那将非常有用。
提前致谢!
答案 0 :(得分:0)
我建议使用结构化的方式管理变量,如:
tomcat:
p_port: 8080
s_port: 8081
ip : 192.168.0.1
然后读取像
这样的变量 - name: Read all variables
block:
- name: Get All Variables
stat:
path: "{{item}}"
with_fileglob:
- "/myansiblehome/vars/common/tomcat1.yml"
- "/myansiblehome/vars/common/tomcat2.yml"
register: _variables_stat
- name: Include Variables when found
include_vars : "{{item.stat.path}}"
when : item.stat.exists
with_items : "{{_variables_stat.results}}"
no_log : true
delegate_to: localhost
become: false
之后,请使用:
- name: My Tomcat install
mymodule:
myaction1: "{{ tomcat.p_port }}"
myaction2: "{{ tomcat.s_port }}"
myaction3: "{{ tomcat.ip }}"
希望有所帮助
答案 1 :(得分:0)
有几种方法可以做到这一点,但我会设置一个Tomcat角色并在tomcat_role/default/main.yml
中设置变量。如果您需要更改Tomcat配置,它可以从一个地方整齐地完成。
tomcat_role / default / main.yml 示例:
---
tomcat_user: tomcat
tomcat_group: tomcat
tomcat_path: "/path/to/tomcat"
当我想调用Tomcat配置时,我会在我的播放中声明它:
- name: Set up Tomcat
hosts: your_host_here
become: yes
roles:
- tomcat_role
然后,我可以在我的游戏中调用该角色的变量:
user: {{tomcat_user}}
path: {{tomcat_path}}
希望这有帮助。