文章目录
一、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 #指定远程主机执行的用户名