当前位置: 首页>后端>正文

ansible剧本中提示ansible_facts未定义 ansibleundefinedvariable

6.Ansible.变量vaiables

使用固定的字符串,表示一个不固定的值
变量提供了便捷的方式来管理ansible中的动态值,比如nginx-1.12,后期可能会反复使用到这个版本的值,
如果将此值设置成变量,后续使用和修改起来会很方便,简化了项目的维护。写死就没有意义了。

例如:
这里用变量的方式来替代nginx的版本,当后期nginx的版本有变化时候,直接修改变量值即可,不用挨个去修改模块内的nginx版本信息

vars:
  nginx_name: nginx-1.12
-install: 
  wget: "{{ nginx_name }}".tar.gz
-unzip
  tar xfv "{{ nginx_name }}".tar.gz

几种定义变量的方法:

1.外置传参的方法定义

外置传参:-e参数传递变量,在playbook中创建变量名,然后在命令行中用-e参数,给变量传递变量值

1.1先在剧本文件中写好变量名

ansible剧本中提示ansible_facts未定义 ansibleundefinedvariable,ansible剧本中提示ansible_facts未定义 ansibleundefinedvariable_引用变量,第1张

1.2在命令行执行剧本文件的时候,用-e参数,给变量传递变量值

ansible剧本中提示ansible_facts未定义 ansibleundefinedvariable,ansible剧本中提示ansible_facts未定义 ansibleundefinedvariable_nginx_02,第2张

ansible剧本中提示ansible_facts未定义 ansibleundefinedvariable,ansible剧本中提示ansible_facts未定义 ansibleundefinedvariable_配置文件_03,第3张

2.playbook中定义vars,然后引用

ansible剧本中提示ansible_facts未定义 ansibleundefinedvariable,ansible剧本中提示ansible_facts未定义 ansibleundefinedvariable_nginx_04,第4张

3.在外部创建的vars-files文件中定义变量,然后在playbook中引用vars-files,然后再引用变量

3.1.先创建vars-files,在里面定义变量,供后期引用

ansible剧本中提示ansible_facts未定义 ansibleundefinedvariable,ansible剧本中提示ansible_facts未定义 ansibleundefinedvariable_配置文件_05,第5张

3.2.在剧本文件里先调用vars-files,然后在模块中引用变量

ansible剧本中提示ansible_facts未定义 ansibleundefinedvariable,ansible剧本中提示ansible_facts未定义 ansibleundefinedvariable_nginx_06,第6张

ansible剧本中提示ansible_facts未定义 ansibleundefinedvariable,ansible剧本中提示ansible_facts未定义 ansibleundefinedvariable_引用变量_07,第7张

4.inventory中定义
在/etc/ansible/hosts文件中为主机定义变量

4.1在hosts文件中为主机组定义变量

ansible剧本中提示ansible_facts未定义 ansibleundefinedvariable,ansible剧本中提示ansible_facts未定义 ansibleundefinedvariable_引用变量_08,第8张

4.2准备配置文件

ansible剧本中提示ansible_facts未定义 ansibleundefinedvariable,ansible剧本中提示ansible_facts未定义 ansibleundefinedvariable_服务器_09,第9张

4.3下发配置文件到不同的主机,得到的效果应该是不同的

ansible剧本中提示ansible_facts未定义 ansibleundefinedvariable,ansible剧本中提示ansible_facts未定义 ansibleundefinedvariable_nginx_10,第10张

4.4可以看出两个主机的配置文件内容是不一样的,按照之前的变量进行配置的

ansible剧本中提示ansible_facts未定义 ansibleundefinedvariable,ansible剧本中提示ansible_facts未定义 ansibleundefinedvariable_nginx_11,第11张

ansible剧本中提示ansible_facts未定义 ansibleundefinedvariable,ansible剧本中提示ansible_facts未定义 ansibleundefinedvariable_配置文件_12,第12张

这种方式适合部署zookeeper和kafka这类的应用

变量引用的优先级

这些方法定义了相同的变量,优先级依次递减

ansible剧本中提示ansible_facts未定义 ansibleundefinedvariable,ansible剧本中提示ansible_facts未定义 ansibleundefinedvariable_nginx_13,第13张

变量注册ansible register

变量注册:(获取任务的结果,将结果存储到变量中。)

1.netstat -lntp —》输出的结果存储到一个变量中 net_system_status

2.我们可以通过debug模块,将变量的值打印出来。

ansible剧本中提示ansible_facts未定义 ansibleundefinedvariable,ansible剧本中提示ansible_facts未定义 ansibleundefinedvariable_nginx_14,第14张

ansible剧本中提示ansible_facts未定义 ansibleundefinedvariable,ansible剧本中提示ansible_facts未定义 ansibleundefinedvariable_服务器_15,第15张

ansible剧本中提示ansible_facts未定义 ansibleundefinedvariable,ansible剧本中提示ansible_facts未定义 ansibleundefinedvariable_引用变量_16,第16张



https://www.xamrdz.com/backend/3nf1934804.html

相关文章: