文章目录
- playbook
- playbook的核心元素
- playbook的运行方式
- playbook的使用
- template模板
playbook
playbook 称为剧本,如果有多条命令需要执行,我们可以写一个剧本,然后执行这个剧本
playbook 必须命名为 .yaml或 .yml,剧本严格遵循yaml语法
yaml语法
大小写敏感
使用缩进表示层级关系
缩进时不允许使用Tal键,只允许使用空格
缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
注释使用 #,从这个字符一直到行尾,都会被解析器忽略
playbook的核心元素
hosts : playbook配置文件作用的主机
tasks: 任务列表
variables: 变量
templates: 包含模板语法的文本文件
handlers: 由特定条件触发的任务
roles: 用于层次性、结构化地组织playbook,roles 能够根据层次型结构自动装载变量文件、tasks以及handlers等
playbook的运行方式
ansible-playbook --check 只检测可能会发生的改变,但不真执行操作
ansible-playbook --list-hosts 列出运行任务的主机
ansible-playbook --syntax-check playbook.yaml 语法检测
ansible-playbook -t TAGS_NAME playbook.yaml 只执行TAGS_NAME任务
ansible-playbook playbook.yaml 运行
playbook的使用
注意:文件的命令 .yaml;文件内容的格式:缩进、空格
示例:vim ansible_playbook_1.yaml
- hosts: webser
remote_user: root
tasks:
- name: upload file
copy: src=/etc/passwd dest=/tmp/passwd_tmp
- name: ip get
shell: ip a
register: shell_result
- debug:
var: shell_result.stdout_lines
- hosts: nginx
tasks:
- name: shell tasks
shell: cat /etc/passwd
参数解释
- hosts: webser #指定webser客户机
remote_user: root #指定root用户
tasks: #任务 可以有多个
- name: upload file #命令的名字
copy: src=/etc/passwd dest=/tmp/passwd_tmp #copy模块
- name: ip get
shell: ip a #shell模块
register: shell_result #register用于接收变量,shell_result就是变量
- debug: #将shell_result的执行结果显示在屏幕上
var: shell_result.stdout_lines
- hosts: nginx #指定nginx客户机
tasks:
- name: shell tasks
shell: cat /etc/passwd
运行:ansible-playbook ansible_playbook_1.yaml
template模板
根据一定的条件灵活的设置要复制文件中的部分关键内容,支持条件判断、循环、逻辑运算、比较等内容。
使用了template文件名要以 .j2结尾
示例:复制 name.j2 文件到远程主机,文本中的name为变量,后续由自己指定
vim name.j2
i am {{ name }}
编写剧本:vim temp_test.yaml
- hosts: webser
tasks:
- name: name test
template: src=/lianxi/name.j2 dest=/tmp/name
1、-e 指定 name 变量为 zhangsan
运行:ansible-playbook temp_test.yaml -e "name=zhangsan"
去远程主机查看
2、在 /etc/ansible/hosts 文件里面配置,指定 name 变量的取值
vim /etc/ansible/hosts
运行:ansible-playbook temp_test.yaml -e "name=zhangsan"
去远程主机查看