文章目录

  • 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

查找ansible剧本文件 ansible执行剧本_ansible

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"

查找ansible剧本文件 ansible执行剧本_ansible_02

去远程主机查看

查找ansible剧本文件 ansible执行剧本_vim_03

2、在 /etc/ansible/hosts 文件里面配置,指定 name 变量的取值

vim /etc/ansible/hosts

查找ansible剧本文件 ansible执行剧本_运维_04

运行:ansible-playbook temp_test.yaml -e "name=zhangsan"

查找ansible剧本文件 ansible执行剧本_vim_05

去远程主机查看

查找ansible剧本文件 ansible执行剧本_linux_06

查找ansible剧本文件 ansible执行剧本_vim_07