Ansible自定义事实变量与魔法变量详解及实例
在Ansible中,除了自动收集的事实变量(facts)外,还可以定义自己的事实变量。自定义事实变量在某些场景中非常有用,特别是需要特定于主机的变量时。默认情况下,自定义事实变量文件位于/etc/ansible/facts.d
目录下,文件后缀为.fact
。
1. 自定义事实变量文件格式
ini格式写法
自定义事实变量文件可以使用ini格式:
[packages]
web_package = httpd
db_package = mariadb-server
[users]
user1 = joe
user2 = jane
json格式写法
自定义事实变量文件也可以使用json格式:
{
"packages": {
"web_package": "httpd",
"db_package": "mariadb-server"
},
"users": {
"user1": "joe",
"user2": "jane"
}
}
2. 存储自定义事实变量
自定义事实由setup
模块存储在ansible_facts.ansible_local
变量中。事实按其文件名组织。例如,如果文件名为/etc/ansible/facts.d/custom.fact
,则可以通过ansible_facts.ansible_local['custom']
访问其中的变量。
示例:创建并存储自定义事实变量
假设我们创建一个名为custom.fact
的文件,并存储如下内容:
{
"users": {
"user1": "joe",
"user2": "jane"
}
}
3. 通过Ansible命令查看自定义事实变量
通过运行以下命令可以查看自定义事实变量:
ansible localhost -m setup -a 'filter=ansible_local'
输出示例:
{
"ansible_facts": {
"ansible_local": {
"custom": {
"users": {
"user1": "joe",
"user2": "jane"
}
}
}