专业生产佛山网站建设,做设计用哪个素材网站,iis建站安装wordpress,长春网站建站1.如果有大量的变量要定义#xff0c;如果多个变量本身类型相同或类似
再比如#xff0c;同一个剧本#xff0c;给主机同时安装多个软件包
按照已有的用法#xff0c;每个软件包都对应不同变量#xff0c;还会涉及到改剧本
2.现在可以用清单#xff0c;以及playbook里…1.如果有大量的变量要定义如果多个变量本身类型相同或类似
再比如同一个剧本给主机同时安装多个软件包
按照已有的用法每个软件包都对应不同变量还会涉及到改剧本
2.现在可以用清单以及playbook里的hosts指定主机、主机组
但是能不能再细分以及进一步的判断
解决方法
1.循环 比如上面要同时指定多个service的name
让name调用一个特别的“变量”叫做item
这个item指向同一个task内和service同级别的loop
在loop里写具体的成员
进一步简化loop里的成员也可以是其他变量
比如在额外的变量文件里写 在loop里调用mail_services 于是剧本依旧变成一个通用的东西不必指定更详细的值
在不同环境和不同项目下只需要对应编辑、使用不同的变量文件 上面是管理员自己定义的变量、各种数据放到loop里用 根据之前的学习客户机本身已有的信息facts 以及剧本执行的返回信息 都可以收集起来重新放进变量二次使用 那这些信息能不能放loop里使用 大的步骤
1.把信息拿到 debug
2.把拿到的信息变成变量 register 比如上面
写了一个任务task
在这个任务里用了一个item里面的循环由紧跟着的loop定义 这个任务的输出内容被接下来的register拿到
注册成一个物件变量起一个名字叫echo_results 接下来第二个任务里
用debug把刚才echo_results变量里的内容输出到屏幕
限制条件
脚本里可以写匹配、限制条件SQL语句也可以写条件 ansible剧本也可以写条件
解决最上面说的第二个问题…… 问题的来源
每个task可以指定主机或主机组
如果task不指定按照剧本整体的主机、主机组 如果最终要匹配的主机或主机组在运行前并不确定
剧本本身并没有再指定其他可用的条件 最后要让剧本的动作更明确做在每组、每个不同的主机 于是
在每个task里单独指定当前任务的限制条件
加一个when模块 判断方式、条件、计算
1.数学符号
……
2.“类似语句”
比如变量是否被声明xxx is defined
3.布尔值
yes/no0/1……类似这种
4.指定的内容变量的值是否包含在条件列表里 比如上面
客户系统的事实里有一个ansible_distribution值
代表的是系统的族系
管理员自己指定了一个兼容列表叫supported_distros
指定了兼容RedHat和Fedora
剧本在执行的时候查看客户机的系统族系这个属性在facts里
如果族系里的值在兼容列表里那就符合条件
然后就会执行这个task 于是
脑洞大开是不是就可以干这么一种事
用系统里不同的段的facts的值做判断一句…… 继续来研究
既然可以搞定每一个每一种条件
是否有办法同时匹配多个、多种条件
也是符合咱基本认知 与 或 再继续
与、或能不能同时使用/套着使用 具体看书的例子……