ansible中定义和使用变量的几种技巧
Case 1:使用Inventory中自定义的全局变量
Inventory清单文件中[all:vars]
部分定义的变量为全局变量,可以在同一级目录下的roles中的所有playbook中直接使用。使用的格式为{
{全局变量名}}
。
在Inventory中定义全局变量:
[all:vars]
# variables related to versions
version_major_tencentKona=8.0.8
version_minor_tencentKona=312
arch_tencentKona=x86_64
#arch_tencentKona=aarch64
在playbook中使用自定义的全局变量:
- name: unarchive TencentKona JDK
unarchive:
remote_src: no
src: "/root/TencentKona{
{version_major_tencentKona}}.b1_jdk_linux-{
{arch_tencentKona}}_8u{
{version_minor_tencentKona}}.tar.gz"
dest: /usr/local
Case 2:使用ansible内置的主机变量
Ansible内置了许多系统变量,可以直接在ad-hoc命令或者playbook中使用。这些内置变量包括但不限于:
ansible_architecture
:操作系统架构,arm或者x86;ansible_distribution
:操作系统发行版本;ansible_distribution_major_version
:操作系统大版本号;ansible_processor_vcpus
:CPU核数;ansible_memtotal_mb
:内存总量;ansible_hostname
:主机名;ansible_devices.vdb.size
:vdb盘的容量(如果磁盘vdb存在);ansible_devices.sdb.size
:sdb盘的容量(如果磁盘sdb存在);ansible_devices.nvme0n1.size
:nvme0n1盘的容量(如果磁盘nvme0n1存在)。
在playbook中使用内置变量:
- name: check arm OR x86
debug:
msg: "{
{ansible_architecture}}"
- name: check OS version
debug:
msg: "{
{ansible_distribution}}: {
{ansible_distribution_major_version}}"
- name: check CPU
debug:
msg: "CPU(s): {
{ansible_processor_vcpus}}, type: {
{ansible_processor_vcpus | type_debug}}"
- name: check Memory
debug:
msg: "Memory: {
{ansible_memtotal_mb}} mb, type: {
{ansible_memtotal_mb | type_debug}}"