示例:
//首先创建一个用于存放palybook的目录,并在目录中创建以.yml结尾的文件 [root@ansible ~]# mkdir playbook && cd playbook && touch myplay.yml [root@ansible playbook]# ls myplay.yml //编写playbook [root@ansible playbook]# vim myplay.yml --- //开始标记 - name: control postfix service //任务描述(可选值,建议写) hosts: 192.168.86.132 //要在那台受管主机上执行 tasks: //任务内容 - name: stop postfix service //任务描述(可选值,建议写) service: //任务要使用的模块 name: postfix //参数 state: stopped //参数 enabled: no //参数注意:在执行playbook时会按照任务编写的顺序执行(从上往下)
tasks(多项任务)属性作为playbook中的一部分,其作用是按顺序列出要在受管主机上运行的任务。列表中各项任务本身是一个键值对集合。absible-playbook命令可用于运行playbook。该命令在控制节点上执行,要运行的playbook的名称则作为参数传递。
[root@ansible playbook]# ansible-playbook myplay.yml PLAY [control postfix service] ******************************************************************************************************************************************* TASK [Gathering Facts] *************************************************************************************************************************************************** ok: [192.168.86.132] TASK [stop postfix service] ********************************************************************************************************************************************** changed: [192.168.86.132] PLAY RECAP *************************************************************************************************************************************************************** 192.168.86.132 : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 //详解 ok:表示完成的任务 changed:表示改变的 unreachable:表示不可读的任务 failed:表示失败的任务 skipped:表示跳过的任务 ignored:表示忽略的任务 在playbook运行时,屏幕中会显示每个play和任务的name键的值。(Gathering Facts任务是一项特别的任务,setup模块通常在play启动时自动运行这项任务。)对于含有多个play和任务的playbook,设置name属性后可以更加轻松地监控playbook执行的进展。Playbook中的任务是幂等的,而且能够安全地多次运行playbook。如果目标受管主机已处于正确的状态,则不应进行任何更改。如果再次运行这个playbook,所有任务都会以状态OK传递,且不报告任何更改。ansible-playbook命令提供的默认输出不提供详细的任务执行信息。ansible-playbook -v命令提供了额外的信息,总共有四个级别。
-v #显示任务结果
-vv #任务结果和任务配置都会显示
-vvv #包含关于与受管主机连接的信息
-vvvv #增加了连接插件相关的额外详细程序选项,包括受管主机上用于执行脚本的用户以及所执行的脚本
示例:
--- - hosts: 192.168.86.132 tasks: - name: useradd xx user: name: xx state: present - hosts: 192.168.86.132 remote_user: xx become: yes tasks: - name: 1.1.1.1 in /etc/hosts lineinfile: path: /etc/hosts line: '1.1.1.1 www.123.com' state: present注意:如果要使用特权升级,还有在sudo配置文件中添加相应的权限委派,如果sudo文件设置了切换用户时不需要输入密码,则可以直接执行playbook,如果没有设置,则在执行playbook时需要加-K选项来输入密码,之后才能正常运行
获取帮助文档的方式有两种:
查阅官方在线文档
查看Ansible本地帮助文档
ansible-doc -l命令可以查看模块名称列表以及其功能的概要 [root@ansible playbook]# ansible-doc -l 使用ansible-doc [module name]命令来显示模块的详细文档 [root@ansible playbook]# ansible-doc user ansible-doc命令还提供-s选项,它会生成示例输出,可以充当如何在playbook在使用特定模块的示范。 [root@ansible playbook]# ansible-doc -s user注:应避免使用command、shell和raw模块,因为它们可以取代任意命令,因此使用这些模块时很容易写出非幂等的playbook。
应避免内联块格式,因为其可读性较低。
应该避免使用此语法,因为其可读性较低
我们应避免简写形式,而使用普通形式。