ansible定义变量和管理事实

简介: ansible定义变量和管理事实

一、ansible playbook

1.编写Playbook:具备两个play, 每个Play具备两个任务

[root@good ~]# vim first_playbook.yml

PLAY [rhce] ********************************************************************
TASK [Gathering Facts] *********************************************************
ok: [rhce]
TASK [start httpd server] ******************************************************
changed: [rhce]
TASK [stop firewalld server] ***************************************************
ok: [rhce]
PLAY [rhce] ********************************************************************
TASK [Gathering Facts] *********************************************************
ok: [rhce]
TASK [file] ********************************************************************
ok: [rhce]
TASK [user] ********************************************************************
changed: [rhce]
PLAY RECAP *********************************************************************
rhce                       : ok=6    changed=2    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0 

2.在play中定义变量: play_var = play_var -> 使用debug模块输出

[root@good ~]# vim first_playbook.yml
[root@good ~]# ansible-playbook first_playbook.yml -C
PLAY [rhce] ********************************************************************
TASK [Gathering Facts] *********************************************************
ok: [rhce]
TASK [user] ********************************************************************
changed: [rhce]
TASK [debug] *******************************************************************
ok: [rhce] => {
    "msg": "Hello world!"
}
PLAY RECAP *********************************************************************
rhce                       : ok=3    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0 

3.在文件中定义变量: file_var = file_var -> 使用debug模块输出

[root@good ~]# vim var.yml

[root@good ~]# ansible-playbook var.yml -C
PLAY [rhce] ********************************************************************
TASK [Gathering Facts] *********************************************************
ok: [rhce]
TASK [user] ********************************************************************
changed: [rhce]
TASK [debug] *******************************************************************
ok: [rhce] => {
    "msg": "Hello world!"
}
PLAY RECAP *********************************************************************
rhce                       : ok=3    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0 

4.在清单文件中定义主机变量和主机组变量:

inventory_host_var = inventory_host_var -> 使用debug模块输出

[root@good ~]# vim .ansible/inventory

[root@good ~]# vim hostname.yml

[root@good ~]# ansible-playbook hostname.yml -C
PLAY [inventory_host_var] ******************************************************
TASK [Gathering Facts] *********************************************************
ok: [rhce]
TASK [debug] *******************************************************************
ok: [rhce] => {
    "msg": "Hello world!"
}
PLAY RECAP *********************************************************************
rhce                       : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

inventory_group_var = inventory_group_var -> 使用debug模块输出

[root@good ~]# ansible-playbook hostname.yml -C
PLAY [inventory_group_var] ******************************************************
TASK [Gathering Facts] *********************************************************
ok: [rhce]
TASK [debug] *******************************************************************
ok: [rhce] => {
    "msg": "Hello world!"
}
PLAY RECAP *********************************************************************
rhce                       : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

5.在host_vars和group_vars中定义文件:在文件中定义变量使用debug模块输出(要求定义单个变量,数组变量,和字典变量)

例如,假设下列代码片段:
user1_first_name: Bob
user1_last_name: Jones
user1_home_dir: /users/bjones
user2_first_name: Anne
user2_last_name: Cook
user2_home_dir: /users/acook
这将可以改写成名为users的数组:
users:
  bjones:
    first_name: Bob
    last_name: jones
    home_dir: /users/bjones
  acook:
    first_name: Anne
    last_name: Cook
    home_dir: /users/acook
然后可以使用以下变量来访问用户数据:
# Returns 'Bob'
users.bjones.first_name
# Returns '/users/acook'
users.acook.home_dir

二、vault加密

1.创建加密文件(注意提供密码的方式:键盘输入,文件读取)

#ansible-vault create  secret.yml

2.加密已有文件

#ansible-vault  encrypt secret.yml secret1.yml

3.解密文件

ansible-vault  decrypt secret1.yml --output=secret.decrypt.yml

4.使用--vault-id选项来对已有文件进行加密

ansible-vault encrypt --vault-id  secret2.yml secret3.yml

三、事实:facts

1.使用debug模块输出:收集事实的hostname, default_address, fqdn, kernel

hostname

[root@good ~]# ansible-playbook fact.yml -C
PLAY [rhce] ********************************************************************
TASK [Gathering Facts] *********************************************************
ok: [rhce]
TASK [debug] *******************************************************************
ok: [rhce] => {
    "msg": "hostname rhce"
}
PLAY RECAP *********************************************************************
rhce                       : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

kernel

[root@good ~]# ansible-playbook fact.yml -C
PLAY [rhce] ********************************************************************
TASK [Gathering Facts] *********************************************************
ok: [rhce]
TASK [debug] *******************************************************************
ok: [rhce] => {
    "msg": "kernel 4.18.0-147.el8.x86_64"
}
PLAY RECAP *********************************************************************
rhce                       : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0  

fqdn

[root@good ~]# ansible-playbook fact.yml -C
PLAY [rhce] ********************************************************************
TASK [Gathering Facts] *********************************************************
ok: [rhce]
TASK [debug] *******************************************************************
ok: [rhce] => {
    "msg": "fqdn rhce"
}
PLAY RECAP *********************************************************************
rhce                       : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

default_address

[root@good ~]# ansible-playbook fact.yml -C
PLAY [rhce] ********************************************************************
TASK [Gathering Facts] *********************************************************
ok: [rhce]
TASK [debug] *******************************************************************
ok: [rhce] => {
    "default_address": "VARIABLE IS NOT DEFINED!"
}
PLAY RECAP *********************************************************************
rhce                       : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

2.关闭事实:两种方式:

针对单个play的关闭

针对所有play的关闭

要为play禁用事实收集功能,可将gather_facts关键字设置为no

[root@good ~]# ansible-playbook fact.yml -C
PLAY [gather_facts] ************************************************************
TASK [debug] *******************************************************************
ok: [rhce] => {
    "ansible_facts": {}
}
PLAY RECAP *********************************************************************
rhce                       : ok=1    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0 

3.自定义事实:使用两种方式:INI和json方式(注意格式)

如果自定义事实文件保存在/etc/ansible/facts.d目录中,ansible可以找到该事实

文件的扩展名必须为.fact ,采用INI或JSON格式的纯文本文件


以下是采用INI格式编写的静态自定义事实文件。INI格式的自定义事实文件包含由一个部分定义的顶层值,后跟用于待定义的事实的键值对:

[packages]
web_package = httpd
db_package = mariadb-server
[users]
user1 = joe
user2 = jane

同样的事实可能以JSON格式提供。以下JSON事实等同于以上示例中INI格式指定的事实。JSON数据可以存储在静态文本文件中,或者通过可执行脚本输出到标准输出:

{
  "packages": {
    "web_package": "httpd",
    "db_package": "mariadb-server"
  },
  "users": {
    "user1": "joe",
    "user2": "jane"
  }
}
目录
相关文章
|
9天前
|
人工智能 JSON 安全
Fastjson远程代码执行漏洞,阿里云AI安全为您保驾护航
阿里云AI安全产品联动防御Fastjson攻击
2334 12
Fastjson远程代码执行漏洞,阿里云AI安全为您保驾护航
|
9天前
|
云安全 人工智能 安全
|
9天前
|
人工智能 自然语言处理 数据挖掘
Qwen3.8-Max-Preview深度全解析:2.4万亿参数旗舰MoE模型+Token Plan限时优惠完整落地指南
2026年7月,全新旗舰级混合专家大模型Qwen3.8-Max-Preview正式开放抢先体验,作为通义千问Qwen3系列规格最高、综合推理能力顶尖的新一代模型,该模型总参数量达到2.4万亿(2.4T),是当前线上可调用的原生多模态旗舰模型,综合推理水准对标海外顶级Fable 5模型,在复杂工程开发、长文档深度分析、多步骤智能体自治、跨境多语言创作、海量数据挖掘五大高难度业务场景实现跨越式性能提升。
1053 2
|
9天前
|
人工智能 自然语言处理 数据挖掘
最新版通义千问(Qwen3.8-Max-Preview)功能介绍
2026年,通义千问正式推出全新旗舰级大模型 **Qwen3.8-Max-Preview 预览版**,作为首款突破万亿参数规格的新一代基座模型,该模型总参数量达到**2.4万亿**,采用全新迭代的MoE混合专家架构,综合推理性能、长文本处理、多模态理解、复杂任务规划能力全面超越前代Qwen3.7-Max版本,整体实力跻身全球第一梯队,可对标海外顶级旗舰模型,是当前面向复杂工程开发、多智能体协同、超长文档解析、专业办公自动化场景的最优国产基座模型。
1093 0
|
11天前
|
人工智能
Qwen3.8抢先体验!正式版即将发布并开源!
千问Qwen3.8即将开源,参数达2.4T,进化速度以“天”计,实力媲美Fable 5。预览版Qwen3.8-Max已上线阿里Token Plan等平台,限时优惠:日间Credits低至1折,夜间更优,个人/团队版月付仅35元起!
1053 44
|
7天前
|
自然语言处理 测试技术 API
通义千问Qwen3.8-Max-Preview全功能解析:2.4万亿参数旗舰模型深度使用指南
在大模型技术持续迭代的当下,通义千问推出的Qwen3.8-Max-Preview作为新一代旗舰预览版模型,凭借2.4万亿参数的超大规模、多模态融合能力与全场景适配特性,成为开发者与企业用户探索AI应用的核心工具。该模型采用稀疏混合专家(MoE)架构,是通义千问首个突破万亿参数的多模态模型,可同时处理文本、图像、视频与文档等多种数据形态,在全栈代码开发、复杂逻辑推理、长文档分析与多智能体协作等场景实现跨越式升级。本文将全面拆解Qwen3.8-Max-Preview的核心功能,详解API调用流程与配置方法,覆盖多场景实战技巧,帮助用户快速掌握这款旗舰模型的使用方法,充分释放其性能潜力。
528 1
|
7天前
|
人工智能 前端开发 Linux
Codex 桌面版安装 + CC Switch 接入第三方 API 完整教程(2026 最新)
2026最新教程:手把手教你安装Codex桌面版,通过CC Switch v3.17.0一键接入Fenno等国产API(兼容OpenAI Responses格式),跳过账号登录,完整启用代码审查、多步任务与上下文感知功能。零基础友好,全程图文实操。(239字)
632 0
|
10天前
|
人工智能 自然语言处理 数据挖掘
Qwen3.8-Max 预览版全解析:2.4 万亿参数旗舰模型,Token Plan 限时优惠指南
Qwen3.8-Max-Preview是通义千问Qwen3系列旗舰MoE大模型,参数达2.4万亿,综合推理能力居行业第一梯队。支持思考/快速双模式,擅长大模型五大高难场景。现于阿里云百炼Token Plan、Qoder及QoderWork上线体验,个人版低至39元/月。在阿里云百炼官网:https://t.aliyun.com/U/fPVHqY 免费领取千万Tokens
716 1
Qwen3.8-Max 预览版全解析:2.4 万亿参数旗舰模型,Token Plan 限时优惠指南

热门文章

最新文章