在文档中调用变量 使用 vars_files
-
vi xxx.yml 首先编写一个yum格式的文档 注意不是写playbook
test1: abc test2: xyz 加入此内容保存退出文档
-
vi test4.yml 编写playbook
--- - hosts: node1 主机对象 vars_files: /root/ansible/xxx.yml 使用文档模块定义文档的路径 tasks: 任务 - debug: 变量模块 msg: "{{test1}} {{test2}}" 需要喊出的变量 #这样就可以喊出之前用yml格式的文档编写的变量信息。
通过交互式定义变量 使用 vars_prompt
-
vi zxc.yml 编写playbook 这种是没有在playbook里面定义变量的值,什么时候跑这个playbook什么时候定义 临时定义
--- - hosts: node1 主机对象 vars_prompt: 定义变量的模块 - name: test03 定义名称 prompt: "hello" 定义提示(执行时会提示hello做提示信息,可自定义)可不加 private: no 定义不隐藏(输入定义的变量时,不隐藏) 可不加 tasks: - debug: msg: "{{test03}}" # 这种方法是什么时候喊出定义的这个test03时,什么时候去输入需要定义的内容。类似于切换用户填写密码。
— hosts : node1 主机对象
gather_facts: no 加入该行可以关闭系统变量的收集,yes 收集,no 不收集
魔法变量(特殊变量)ansible内置的特殊变量
下列是msg 的内容
-
inventory_hostname 被控主机清单的名字
-
hostvars 显示被控主机所有变量 hostvars.node1 显示node1主机的变量
--- - hosts: node2 主机对象 - hosts: node1 主机对象 tasks: 任务 - debug: 变量模块 msg: "{{hostvars.node2}}" 喊出信息 需要前面加上需要喊出的主机名称(收集变量信息,不加的话是没有变量信息来喊出的) #表示用node1主机喊出node2主机的变量信息,(加上node2主机 执行时系统默认执行setup模块收集node2主机的变量信息,收集之后然后再使用node1主机才能喊出node2主机的变量信息)
-
hostvars.node1.group_names 显示node1主机的所在组名
-
groups 所有主机以及组信息
-
groups.all 显示所有主机名
-
groups.test01 显示test01组的主机的名字
-
group_names 显示当前正在运行任务的主机所在的组名(就是我的哪个组)
template 模块 类似copy模块
-
src 源文件
-
dest 存储目标
-
vi qwe.j2 写一个以 .j2 结尾的文件名, 里面写的是动态的变量信息
{{ansible_hostname}} 写入此内容
-
vi qqq.yml 写playbook
--- - hosts: node1 tasks: - template: 任务模块 src: /root/ansible/qwe.j2 源文件路径 dest: /opt/xxx.j2 拷贝过去的路径(改了名字) #切换到node1 里面查看xxx.j2文件会显示node1,因为 动态文件写的变量是 ansible_hostname (主机名) 第一行的 - hosts 后面可以写多个主机,切换到对应的主机下去查看就会得到对应的主机名称信息。
魔法变量高级玩法,使用node2主机收集其他主机的变量(ansible_hostname)
-
vi qwe.j2 写一个以 .j2 结尾的文件名,(代表jinjia2 模板文件) 里面写的是动态的变量信息
{{hostvars.node1.ansible_hostname}} 写入此内容 {{hostvars.node2.ansible_hostname}} {{hostvars.node3.ansible_hostname}} {{hostvars.node4.ansible_hostname}} {{hostvars.node5.ansible_hostname}}
-
vi qqq.yml 写playbook
--- - hosts: node1,node3,node4,node5 加上需要收集的主机的变量 - hosts: node2 主机对象 tasks: - template: src: /root/ansible/qwe.j2 dest: /opt/xxx.j2 # 先跑一边需要收集的主机的变量信息 然后在使用模块去拷贝动态文件
关于ansible的其他模块及playbook和其他变量的使用介绍请参考下方链接 https://blog.51cto.com/u_15148274/5044967 https://blog.51cto.com/u_15148274/5044924