网站建设规划过程和,如何优化网络延迟,网站内容建设的布局和结构,未来最紧缺的十大专业变量
playbook的变量有以下几种 在playbook中用户自定义的变量远程主机中由Ansible收集的变量在文件模板中使用的上述两种变量把任务结果作为一个变量使用#xff0c;叫注册变量用户在执行playbook时#xff0c;通过命令行传入的变量#xff0c;叫做额外变量
在playbook中…变量
playbook的变量有以下几种 在playbook中用户自定义的变量远程主机中由Ansible收集的变量在文件模板中使用的上述两种变量把任务结果作为一个变量使用叫注册变量用户在执行playbook时通过命令行传入的变量叫做额外变量
在playbook中用户自定义的变量
playbook中定义变量
在playbook中定义的变量称为局部变量只能在当前的playbook中使用用户可以使用vars关键字 在playbook中定义变量使用{{ var_name }}来引用变量
把变量放在单独的文件中
可以把变量放在单独的文件中然后在playbook中使用vars_files关键字引入变量文件变量文件的后缀名可以是.yml或者.yaml使用文件中变量的方法与 在playbook中定义变量的方法相同
定义和使用复杂变量
使用复杂变量时定义的语法为yaml中的字典格式
foo:field1: onefield2: two访问复杂变量中的子属性可以使用中括号或者点号
foo[field1]
foo.field2yaml的陷阱
变量引用时如果提示语法错误可以在引用变量的{}外加上引号
远程主机系统变量Facts
Ansible会在每次执行任务时收集远程主机的系统信息这些信息会被存储在一个叫做Facts的变量中可以使用setup模块来查看Facts变量的内容查看方式如下
ansible all -m setup使用Facts变量
在playbook中可以直接使用Facts变量Facts变量是一种多层级的遵守yaml规范的复杂的变量,如下
ansible_device_links: {ids: {sda: [scsi-36002248079f9f66f426ea82fb0957801,wwn-0x6002248079f9f66f426ea82fb0957801],sdb: [scsi-36002248019fafe73e00cc6e7e8b292d5,wwn-0x6002248019fafe73e00cc6e7e8b292d5]}
}可以通过以下两种方式访问复杂变量中的子属性 中括号 {{ansible_ens3[ipv4][address]}} 点号 {{ansible_ens3.ipv4.address}}
关闭Facts变量
注意在实际playbook运行中收集Facts变量需要消耗额外的时间因此在不使用Facts变量的情况下可以使用gather_facts来控制是否使用远程变量
- hosts: whatevergather_facts: no文件模板中使用的变量
template中变量的定义
在playbook中定义的变量Facts变量inventory中定义的host和group变量
template中变量的使用
使用Jinja2语言书写模板文件需要了解{{}}用来引用变量即可
注册变量
将任务的执行结果当作一个变量这个变量叫做注册变量关键字register,后面跟注册变量名称在后续中通过名称来引用注册变量通常配合debug模块一同使用 debug模块可用于在playbook执行过程中输出一些需要的信息
---
- name: Register testhosts: 127.0.0.1tasks:- name: Register testansible.builtin.shell: lsregister: aaaignore_errors: true- shell: echo {{aaa.stdout_lines}} /tmp/reg.log- debug: msg{{aaa.stdout_lines}}命令行传递参数
用户在执行时传入变量的值“额外变量”或者叫“命令行变量”
定义命令行变量
直接在playbook中引用需要的变量如在执行Playbook时不传递变量则会报错 如果在执行命令时候传递Playbook中已定义的变量会覆盖Playbook中变量的值
使用命令行变量
直接传递 ansible-playbook test.yml --extra-vars hostweb JSON格式参数传递 ansible-playbook test.yml --extra-vars {host:web} 将变量参数放在文件中 ansible-playbook test.yml --extra-vars vars.json