vue做的个人网站,网站制作培训中心,建设平滑扣皮带网站,网络营销研究现状文献综述文章目录变量定义规则变量的调试Inventory中定义变量Var定义变量Var_files引入变量文件注册变量registerfact变量lookup变量魔法变量ansible中是支持使用变量的#xff0c;进行存储整个项目中会使用到的一些值 变量定义规则 1、变量的名称必须使用字母开头 2、由字母 数字 下划…文章目录变量定义规则变量的调试Inventory中定义变量Var定义变量Var_files引入变量文件注册变量registerfact变量lookup变量魔法变量ansible中是支持使用变量的进行存储整个项目中会使用到的一些值变量定义规则1、变量的名称必须使用字母开头2、由字母 数字 下划线组成3、ansible内置的关键字是不可以作为变量名变量的调试引用变量需要知道变量包含哪些信息对变量做处理使用debug模块可以进行调试变量输出#常用的参数有msg调试输出的信息 var把某个变量传递给debug debug会直接打印输出不可以和msg共用 案例###编写剧本[rootm01 http]# cat debug.yml- name: debug hosts: nfs tasks: - name: debug debug: msg:This is debug message!###验证[rootm01 http]# ansible-playbook debug.ymlPLAY[debug]****************************************************************************************************************************************************** TASK[Gathering Facts]******************************************************************************************************************************************** ok:[nfs]TASK[debug]****************************************************************************************************************************************************** ok:[nfs]{msg:This is debug message!}PLAY RECAP ******************************************************************************************************************************************************** nfs:ok2changed0unreachable0failed0skipped0rescued0ignored0Inventory中定义变量此变量的定义就是使用的ansible.cfg配置文件中的选项在前面添加ansible_就会变成内置的变量内置变量比ansible.cfg配置文件中更高的优先级可以针对不同的主机定义不同的值写在hosts的文件里面的变量每一个playbook都支持引用单个在playbook里面的的var定义的变量只能在当前剧本使用#配置文件中的值[defaults]# some basic default values...#inventory /etc/ansible/hosts #自定义配置的主机文件路径#library /usr/share/my_modules/#sudo_user root #设置提权用户#ask_sudo_pass True #提权用户密码#ask_pass True #是否进行使用密码的方式#transport smart#remote_port 22#module_lang C#module_set_locale False#怎么进行定义主机和主机组的变量写在主机的配置文件中/etc/ansible/hosts[rootm01 http]# tail -5 /etc/ansible/hosts[test]nfs[test:vars]abcnginx#定义的变量怎么进行引用在写playbook的时候使用debug进行引用[rootm01 http]# ansible-playbook debug.ymlPLAY[debug]******************************************************************* TASK[Gathering Facts]********************************************************* ok:[nfs]TASK[debug]******************************************************************* ok:[nfs]{msg:nginx}PLAY RECAP ********************************************************************* nfs:ok2changed0unreachable0failed0skipped0rescued0ignored0Var定义变量var可以在写playbook的时候直接进行定义变量将下面play任务中会使用到的变量提前进行定义语法为vars变量 变量设置httpd为变量使用playbook进行启动#写剧本[rootm01 http]# cat var.yml- name: var hosts: nfs vars: fuwu: httpd tasks: - name: start httpd systemd: name:{{fuwu}}state: started enabled:yes##执行剧本[rootm01 http]# ansible-playbook var.ymlPLAY[var]********************************************************************* TASK[Gathering Facts]********************************************************* ok:[nfs]TASK[start httpd]************************************************************* changed:[nfs]PLAY RECAP ********************************************************************* nfs:ok2changed1unreachable0failed0skipped0rescued0ignored0Var_files引入变量文件当需要使用多个参数做为变量进行使用的时候可以创建变量文件使用var_file进行引入#创建变量文件变量定义的格式均是使用冒号键值对进行出现的键值对之间可以进行嵌套组成大字典[rootm01 http]# cat user_vars.ymlusers: bjones: first_name: Bob last_name: Jones home_dirs: /users/bjones acook: first_name: Anne last_name: Cook home_dirs: /users/acook 编写playbook进行引用1、我要获取到bjones的lastname和acook的first_name#编写剧本 ###注意使用debug参数的msg进行输出内容msg只能出现一次不然也只会执行最后一个msg的内容可以使用写多参数[rootm01 http]# cat var.yml- name: var hosts: nfs vars_files: - /http/user_vars.yml tasks: - name: debug debug: msg:{{users.bjones.last_name}},{{users.acook.first_name}}##验证[rootm01 http]# ansible-playbook var.ymlPLAY[var]********************************************************************* TASK[Gathering Facts]********************************************************* ok:[nfs]TASK[debug]******************************************************************* ok:[nfs]{msg:Jones,Anne}PLAY RECAP ********************************************************************* nfs:ok2changed0unreachable0failed0skipped0rescued0ignored0注册变量register注册变量是 Ansible 中的font stylecolor:rgba(0, 0, 0, 0.85);register/font关键字它的核心作用是把一个任务的完整执行结果包括输出内容、返回码、执行状态等保存到一个自定义的变量中供后续的任务调用和判断使用#案例查看磁盘空间并且使用debug模块将数据调用出来[rootm01 http]# cat register.yml- name: register hosts: nfs tasks: - name: shell shell: cmd:df-Th register: cipan - name: debug debug: msg:{{cipan}}fact变量fact是内置变量不需要定义直接调用即可模块setup可以进行获取远程主机的相关信息并且可以将信息作为变量进行调用setup模块依赖的方法就是fact返回的数据是JSON格式setup模块是怎么进行调用的1、查看所有的fact信息[rootm01 http]# ansible nfs -m setup #显示的所有关键字段都是可以进行直接调用的变量2、查看网卡信息 ansible nfs -m setup -afilteransible_ens333、查看主机内存信息[rootm01 http]# ansible nfs -m setup -a filteransible_*_mbnfs|SUCCESS{ansible_facts:{ansible_memfree_mb:1209,ansible_memory_mb:{nocache:{free:1660,used:320},real:{free:1209,total:1980,used:771},swap:{cached:0,free:2047,total:2047,used:0}},ansible_memtotal_mb:1980,ansible_swapfree_mb:2047,ansible_swaptotal_mb:2047,discovered_interpreter_python:/usr/bin/python},changed:false}4、将查到的setup变量保存在test.txt文件方便查询[rootm01 http]# ansible nfs -m setup /tmp/test.txt5、开启或者关闭fact 语法 - hoststest gather_factsfalse#关闭默认是开启的tasks - nametestsetup6、进行自定义fact 除了ansible的内置变量之外还支持进行为某主机定制fact配置文件写在/etc/ansible/facts.d/目录下 文件是ini或者json格式ansible会自动识别 ini格式的fact文件。定义的语法如下[general]packagehttpdservicehttpd statestarted 创建好文件之后需要把这个fact文推送到对应被控端因为这个是在本地定义的1、编写剧本把fact文件使用copy模块复制过去 copy src:fact文件路径 dest/etc/ansible/facts.d 【没有这个目录就先创建】2、执行剧本\完成fact推送3、查看是否设置成功 ansible 主机 -m setup -a ‘filteransible_local’ general即为变量 在playbook里面进行调用是使用.连接不同的层级找到对应的变量例如 ansible_local.custom.general.package ansible_local是必须要写的因为定义的是本地变量 custom 是定义的fact的文件名字 general.package 文件里面定义的变量层级 找到自己想要的变量7、使用set_fact 模块定义新的变量 是直接在编写的playbook中进行定义可以把不同的变量组合起来 案例 编写playbook[rootm01 http]# cat set.yml- name:setvar hosts: nfs tasks: - name:setset_fact: version:{{ ansible_distribution }}-{{ansible_distribution_version }}- name: debug debug: msg:{{ version }}#执行具备[rootm01 http]# ansible-playbook set.ymlPLAY[set var]***************************************************************** TASK[Gathering Facts]********************************************************* ok:[nfs]TASK[set]********************************************************************* ok:[nfs]TASK[debug]******************************************************************* ok:[nfs]{msg:CentOS-7.7}PLAY RECAP ********************************************************************* nfs:ok3changed0unreachable0failed0skipped0rescued0ignored0lookup变量在需要将文本文件或.csv文件和直接获取某些命令的输出作为变量的时候就需要使用lookup插件进行读取配置数据注意lookup获取的变量是来自主控的#使用lookup生成变量的方法语法 定义的变量名字:“{{lookup(‘使用哪种方式,获取的参数) }}” 1、file 使用file可以从文本文件中进行获取数据在task或者jinja2的模块里面进行引用 #获取ssh公钥并且生成变量案例 - hosts: nfs set_fact: key_conntent:{{lookup(file,/root/.ssh/id_rsa_pub)}} - name: debug: msg: “{{keycontent}}” 2、pipe 使用pipe可以直接调用外部命令并且将命令执行的结果打印为标准输出 set_fact: time: {{lookup(pipe,date%Y%M%d%H%M%S)}} 3、env 获取主机上某个环境变量 #获取被控端的jar环境变量 - namejar debug: msg: {{lookup(env,JAVA_HOME)}}魔法变量ansible默认会进行提供一下内置的变量实现一些特定的功能1、hostvar 获取指定主机的变量例如想获取对应