ansible-galaxy 语法:
进入网站后找到这时标记的地方
把名字复制下来
就可以在你的ansible主机上进行安装剧本了。
安装的剧本默认是存放在家目录的隐藏文件中。
/root/.ansible
当然,本机的galaxy命令也提供在线搜索剧本。
功能:管理加密解密yml文件
可交互执行命令,支持tab补全。
语法:
语法检查
真正执行
Playbook采用YAML语言编写
这里只涉及到playbook相关的语法,更多请参考官网http://www.yaml.org
语法非常严格,请仔细仔细再仔细。
其所有元素均使用"-"打头
通常由多个key与value构成
Ansible 使用 "{{ var }}" 来引用变量. 如果一个值以 "{"开头, YAML 将认为它是一个字典, 所以我们必须引用它, 像这样:
使用引号来包裹任何包含冒号:的value值, 像这样:
hosts 行的内容是一个或多个组或主机的 patterns,以逗号为分隔符。通常是/etc/ansible/hosts定义的主机列表
remote_user 就是远程执行任务的账户名:
任务集
执行过程
一个yml文件里可以设计多个playbook,不过呢,为了更清晰的管理,建议应该独立存放不同任务需求,方便以后调用。
由特定条件触发的操作,满足条件方才执行,否则不执行。
Handlers也是task列表,这些task与前述的tasks并没有本质上的不同,用于当关注的资源发生变化时,才会采取一定的操作
还是拿上个例子的playbook修改下。
指定某条任务执行,用于选择运行playbook中的部分代码。 ansible具有幂等性,因此会自动跳过没有变化的部分,
即便如此,有些代码为测试其确实没有发生变化的时间依然会非常地长。此时,如果确信其没有变化,就可以通过
tags跳过此些代码片断。可以为每个tasks设置tags,这样方便调用。
可以使用多个tags
变量名仅能由字母、数字和下划线组成,且只能以字母开头
与shell编程中的条件判断类似
在task后添加when子句即可使用条件测试;when语句支持Jinja2表达式语法
前面的案例使用了正则来判断主机的系统版本号,这里直接使用when调用系统变量来判断
判断变量是否定义
当有需要重复性执行的任务时,可以使用迭代机制。类似于循环
例子:
等价的写法:
批量循环创建文件夹
这次来了个综合一点的例子,本着为了以后更好的维护变量的设计,这次把变量独立到到个文件中
playbook
结果: