Bootstrap

自动化运维工具Ansible------Playbook剧本详解

一、Playbook

playbook(剧本),通过task调用ansible模块把多个play组合在playbook中运行。

Playbook由以下几部分组成:
Tasks:任务(调用模块完成相关操作)
Variables:变量
Templates:模板
Roles:角色
Handlers:处理器(满足某个条件时,执行的操作)

Playbook通过YAML进行定义,YAML是一种非标记语言,用来写配置文件,十分简便且强大,注意换行需要空两格,-和:后面空一格。

yaml语法规则:
1、大小写敏感
2、使用缩进表示层级关系
3、缩进时不允许使用tab键,只允许使用空格
4、缩进的空格数不重要,相同层级的元素左侧对齐即可
hosts 定义节点
remote_user 以xx用户身份登陆
tasks 任务
become:yes 切换用户
become_user: xx 切换到xx用户
- name: 为执行的操作起名

二、Inventory

Ansible默认的主机清单是/etc/ansible/hosts文件,Inventory是Ansible管理主机的配置文件,存放在/etc/ansible/hosts中。

1.主机变量

[web1]
www1.mq.com
www2.mq.com

2.组变量

[servers:vars]

3.组嵌套

[web1]
www1.mq.com
www2.mq.com	

[web2]
www3.mq.com
www4.mq.com

[webservers]
web1
web2

inventor 变量参数

ansible_ssh_host 要连接的远程主机名与想设定的主机的别名不同,通过此变量设置
ansible_ssh_port ss 不是默认的端口号,通过此变量设置
ansible_ssh_user ssh用户名
ansible_ssh_pass ssh密码
ansible_ssh_private_key_file ssh使用的私钥文件,适用于有多个密钥,不想使用SSH代理的情况
ansible_ssh_common_args 此设置附加到sftp,scp和ssh的缺省命令行
ansible_sftp_extra_args 此设置附加到默认sftp命令行
ansible_scp_extra_args 此设置附加到默认scp命令行
ansible_ssh_extra_args 此设置附加到默认ssh命令行
ansible_ssh_pipelining 确定是否使用SSH管道
ansible_shell_type 目标系统的shell类型,默认情况下,命令的执行使用sh语法,可设置为csh或fish
ansible_python_interpreter 目标主机python路径,适用的情况:系统中有多个python,或命令路径不是“/usr/bin/python”
ansible_*_interpreter *可以是ruby或perl或其他语言的解释器,作用和ansible_python_interpreter类似
ansible_shell_executable 设置ansible控制器将在目标机器上使用的shell,覆盖ansible.cfg中的配置,默认为/bin/sh

三、Playbook实例

#基本语法
ansible-playbook xxx.yaml --syntax-check   	     #检查yaml文件语法是否正确
ansible-playbook xxx.yaml --list-task     		 #检查tasks任务
ansible-playbook xxx.yaml --list-hosts     		 #检查生效主机
ansible-playbook xxx.yaml --start-at-task='xxx'  #指定从某个task开始运行

- hosts: web         #指定主机组,可以是一个或多个组
remote_user: root 	 #指定远程主机执行的用户名

1、给任务定义远程执行用户

;