变量传递
我们这里有两个任务,第二任务必要得到第一个任务后的结果才能触发给第二个任务。
我们写这样一个脚本,
register vars(获取变量)
我们用shell模块获取一个主机名。hostname
register: info
我们的shell不是去执行一个hostname 这样的一条语句嘛
它执行完成后会吧这个值赋值给我们的info这个变量(赋值给info这么的一个变量)
这里使用到的是register这个模板,register就有这么一个功能,把你执行完成的值赋值给info
我们再使用一个name来标识显示这样的一个变量;
我们这里使用一个debug,来输出我们的信息,我们来打印一个info
来看看我们的脚本
输出的结果如下
这里打印了我们这么多的内容,哪些是我们想要的啊,只有cmd里面的是我们想要的,
这里像不像我们的字典,左边的键右边的是值。
那么我们怎么调用这个值啊看看
这里我们再info后面加上stdout直接调用这个值,将其输出。如下
脚本如下:
修改脚本后,执行后我们可以看到是不是我们想要的主机的名被打印出来啊。
循环基础
情景设定:假如我们要安装二十个软件,想想我们是不是要写这样的语句写二十编,如下图:
写这样的二十条,是非常不合理的。那么我们可以使用一个循环来把这个问题解决了。
我们这里可以想想再python里面会怎么做?
如下图:
这里我们就不管你是二十个还是三十个,还有一千个,我们都可以一个循环跑完。
但是在ansible不是这样的简单的循环,有ansible自己的一个循环语法。它和python的语法有点不一样,我们的剧本它是一个yaml的一个语法,是yml的语法就得用yml的方式来解决这个问题。
我们这里写一个loops.yml的脚本。如下图
这里item是一个固定写法,我们这里先记住。
with_items是一个模板,这个模板的主要功能就是循环迭代我们下面的变量,在这里的关键字表示迭代的是一个列表。列表里面的每一个变量叫做items。我们都学过C或者Python。那么我们翻译一下这个循环。
for item in with_items:
printf item
大致就是这么一个意思
那么我们来执行一下这个循环。
自己修改一下这个脚本。这个脚本上面有两个常规的习惯错误,第一个发现并改正的同学,请记录在留言区域。并给老师讲。
好了,这个就是我们的初见循环的讲解。
祝大家学习愉快,
感谢CSDN学习平台。