6.ansible变量
ansible变量的作用
方便剧本的修改 把可变化的值做成变量 方便剧本的复用
ansible变量的定义方式
1.通过执行命令传入
ansible-playbook install_frpc.yaml -e Server=192.168.1.39 -e Local_Port=22 -e Remote_Port=40022 -e Project=test
2.定义vars或者varfiles
vars
cat vars.yaml
- hosts: webservers
tasks:
- name: Install Packages
yum:
name: {{ Pack }}
state: present
vars:
Pack:
- vim
- nginx
vars_files
1.定义vars_files(名称随便)
[root@zabbix ~]# cat vars_file.yaml
ansible_path: /etc/ansible
ansible_exe: /usr/local/sbin
2.ansible-playbook中调用
[root@zabbix ~]# cat var.yaml
- hosts: 192.168.1.43
vars_files:
- ./vars_file.yaml
tasks:
- name: Print Vars
debug:
msg:
- "{{ ansible_path }}"
- "{{ ansible_exe }}"
3.验证
[root@zabbix ~]# ansible-playbook ./var.yaml
PLAY [192.168.1.43] *****************************************************************************************************************************************
TASK [Gathering Facts] **************************************************************************************************************************************
ok: [192.168.1.43]
TASK [Print Vars] *******************************************************************************************************************************************
ok: [192.168.1.43] => {
"msg": [
"/etc/ansible",
"/usr/local/sbin"
]
}
PLAY RECAP **************************************************************************************************************************************************
192.168.1.43 : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
3.在invertory文件中定义
主机和主机组变量
定义server1.example.com的ansible_user主机变量:
[webservers]
server1.example.com ansible_user=student`
定义dbservers主机组的user组变量:
[dbserver]
dbserver1.example.com
dbserver2.example.com
[dbservers:vars]
user=student
定义嵌套组user变量:
[servers1]node1.example.comnode2.example.com
[servers2]node3.example.comnode4.example.com
[servers:children]
servers1
servers2
[servers:vars]
user=studen
1.在剧本中设置变量信息
方式一:直接在剧本文件编写 优先02
vars:
oldboy01: data01
oldboy02: data02
实践配置:
[root@m01 ansible_playbook]# cat test_变量功能.yaml
- hosts: 172.16.1.7
vars:
src_dir: /etc/hosts
dest_dir: /opt
tasks:
- name: copy file
copy: src={{ src_dir }} dest={{ dest_dir }}
2.在命令行中进行指定 优先01
实践操作:
ansible-playbook -e src_dir=/etc/hosts -e dest_dir=/opt test_变量功能.yaml
PS:剧本中可以不用设置变量
3.在主机清单文件编写 优先03
[oldboy:vars]
oldboy01=data01
oldboy02=data02
实践配置:主机清单配置
[nfs_client]
172.16.1.7
172.16.1.41
[nfs_client:vars]
src_dir=/etc/hosts
dest_dir=/opt
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET制作智能桌面机器人:结合BotSharp智能体框架开发语音交互
· 软件产品开发中常见的10个问题及处理方法
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 一次Java后端服务间歇性响应慢的问题排查记录
· 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(四):结合BotSharp
· 一个基于 .NET 开源免费的异地组网和内网穿透工具
· 《HelloGitHub》第 108 期
· Windows桌面应用自动更新解决方案SharpUpdater5发布
· 我的家庭实验室服务器集群硬件清单