ansible----管理变量

ansible变量简介

Ansible支持利用变量来存储值,并在Ansible项目的所有文件中重复使用这些值;这可以简化项目的创建和维护,并减少错误的数量
通过变量,管理员可以轻松地Ansible项目中管理给定环境的动态值;变量可能包含下面这些值

要创建的用户
要安装的软件包

要重启的服务

要删除的文件
要从互联网检素的存档

命名变量:

变量的名称必须以字母开头,并且只能含有字母、数字和下划线
 

定义变量:

全局范围、play范围、主机范围

如果在多个级别上定义了相同名称的变量,则采用优先级别最高的变量;窄范围优先于更广泛的范围:
由清单定义的变量将被playbook定义的变量覆盖,后者将被命令行中定义的变量覆盖


从命令行覆盖变量(额外变量):

清单变量可被playbook中设置的变量覆盖,playbook中设置的变量又可被额外变量给覆盖因此,当需要覆盖―次性运行的 playbook的已定义的变量值时,额外变量非常有用
ansible-playbook main.yml -e "package=apache"


使用数组作为变量:

除了将与同—元素相关的配置数据(软件包列表、服务列表和用户列表等)分配到多个变量外管理员也可以使用数组;这种做法的一个好处在于数组是可以浏览的。

运行环境:RH294

步骤一:以student用户身份并使用student作为密码登录workstation

170e4a4578814094b7b707f7b2e36b38.png

 [kiosk@foundation0 ~]$ ssh student@workstation

步骤二:在workstation上,运行lab data-variables start命令,此命令会创建data-variables工作目录并为它填充Ansible配置文件和主机清单

06527190e56d4b21bf0fcb9e3e9a4a8c.png

 [ student@workstation ~]$ lab data-variables start

步骤三:查看 /home/student/data-variables/目录下的文件
1915d38cc4714d1f8139622eeadc436a.png

 [ student@workstation ~]$ cd /home/student/
[student@workstation ~]$ cd /home/student/data-variables/

[ student@workstation data-variables]$ ls
[student@workstation data-variables]s cat ansible.cfg

[student@workstation data-variables]s cat inventory

步骤四:编辑playbook.yml文件

cb1f4ce550e6409ea8189e95b5549f46.png

c348479114bc4647b936891eacc37b43.png

 [student@workstation data-variables]$ vim playbook.yml

3677f9bef0c54bec8aab40e02e8bb929.png

 步骤五:验证playbook.yml文件内的语法是否正确a77ef80dbb1748d9b65b1b65e606a9f9.png

[student@workstation data-variables]$ ansible-playbook --syntax-check playbook.yml

步骤六:模拟运行

158b51c9d7c947eb97958ba1dc104199.png

00b8b1e5243042429e72cc006fd0ed68.png

 [student@workstation data-variables]$ ansible-playbppk -Cv playbook.yml

补充错误示例:

示例一:

7ba05a54d72b407696f972c13a43fac2.png

大致意思就是说,我在第21行第6列出现了错误,行数没对齐,看了一下,确实是没有和上列对齐

示例二:

e73d9094b8274a9e81af3d495f37e93c.png

 大致意思是在说,出现了重复的name,我进行了‘’name:‘’名称修改,作用不大,好吧,是没起作用,然后最后发现是这样的

c7e5fe016efe4f0ebe3d75f1d42ac958.png

 我之前没有空格。。。

示例三:

a1095dbf787e4a9da0d76e0af0250da0.png

 大致意思就是说,出现了一个未定义的变量firewalld_service,然后我发现

6ad100b571d74a4aa20c3c0da4079aad.png

 我把firewall_service写成了firewalld_service以上就是我在实验时遇到的错误,欢迎补充哦~

猜你喜欢

转载自blog.csdn.net/weixin_64033212/article/details/129984004