playbook基本命令和tasks
playbook
一个playbook中有多个play,
一个play下有多个task.
一个tasks不能有多个同模块(会覆盖),多个同模块应使用loop循环.
playbook提高运行效率
在playbook中设置gather_facts: False
来提高playbook效率.
playbook基本命令
- 语法检查 --syntax-check
- 只检查 -C
- 列出运行任务的主机 --list-hosts
- 列出tag --list-tags
- 列出task --list-tasks
- 只针对主机列表中的主机执行 --limit
- 详细显示
- v 会列出task的结果
- vv 会列出task的结果和配置文件(生产环境用的最多的)
- vvv 把(ssh)连接的信息和被管理主机都列出来
- vvvv 会把插件,被管理主机上使用的用户,运行的脚本都列出来
playbook指定主机运行
可以限定主机运行剧本
# 只针对serverc主机运行test.yml
ansible-playbook --limit= serverc test.yml
playbook的注意点
playbook是一个yaml文件,文件不可以使用tab,只能使用空格.
编写playbook时要注意,多个play要平级,多个task要平级.
如果平级,缩进要一样.
层级结构: play>task>module
配置vim的yaml格式
参考: https://kknews.cc/code/gr4n8x8.html
配置在vim中按下tab自动转换成2个空格
# 创建vimrc
vim ~/.vimrc
# 插入yaml配置
## ai = auto indent 自动退格对齐
## ts=tabstop,即一个tab的宽带设定为2个空格
## sw=shiftwidth,即退格对齐以两个空格为准
## et=expandtab,将tab转换位空格
autocmd FileType yaml setlocal ai ts=2 sw=2 et
# 配置完下次会直接生效
检查文件中是否有tab
cat命令的-A参数可以查看文件是否含有tab
cat 文件名 -A
多paly及play使用额外属性示例
当一个play文件对多个主机执行操作不同tasks时,可以在同一文件中创建多个play。
不同的play也可以使用不同的user
---
- name: play1示例user1用户对主机a安装httpd
hosts: servera
remote_user: user1 # paly1使用远程用户user1操作
become: yes # 允许提权
become_method: sudo # 提权方法是sudo
become_user: admin # 提权到admin用户
tasks:
- name: 安装httpd
yum:
name: httpd
- name: play2示例使用user2用户对主机b安装apache2
hosts: serverb
remote_user: user2 # paly2使用user2
tasks:
- name: 安装apache2
yum:
name: apache2
多tasks示例
多tasks要使用block
查看yml中的tasks列表
[student@workstation tasks]$ ansible-playbook inpalybook.yml --list-tasks
playbook: inpalybook.yml
play #1 (servers): 安装web服务器 TAGS: []
tasks:
安装httpdpkg TAGS: []
开启httpd服务 TAGS: []