ansible之playbook功能简述

Posted 马哥Linux运维

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ansible之playbook功能简述相关的知识,希望对你有一定的参考价值。

playbooks剧本简介
playbooks是ansible更为强大的配置管理组件,实现基于文本文件编排执行的多个任务,且多次重复执行。其是使用YAML(Yet Another Markup Language),类似于半结构化语言,声明式配置,可读性较高。易于与脚本语言交互
核心组件
Tasks :任务
Variables : 变量
ansible_ssh_port : 指定ssh端口
ansible_ssh_user : 指定ssh用户
ansible_ssh_pass : 指定ssh用户登录认证密码,明文密码
ansible_sudo_pass : 指明sudo时候的密码
[webserver]
172.16.36.70 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass=zhenping.me
inventory参数:(用于hosts定义的主机后面,多个使用空格分隔)
template : 模板
Handles : 处理器
Roles : 角色,用于调度不同的playbooks
YAML语法格格式
任何数据结构都用缩进进来标识,可以嵌套
每一行是一个键值数据key:value,使用冒号分隔,若想在一行标识需要使用{}和,将多个kv分隔开
列表使用-标识
示例:
- hosts: webserver
 remote_user: root
 tasks:
   -  name: install nginx
      yum: name=nginx state=present
   -  name: start nginx
      service: name=nginx state=started enabled=true
   -  name: install php-fpm
      yum: name=php-fpm state=present
   -  name: start php-fpm
      service: name=php-fpm state=started enabled=true
  vars
  handlers
-  hosts: dbserver
  remote_user: root
  tasks:
    -  name: install mysql
       yum: name=mysql state=present
playbook的变量
变量命名方式
字母、数字和下划线组成,仅能以字母开头
变量的各类
facts
由远程主机发回的主机特有的属性信息,这些信息被保存在ansible变量中,无须声明,可直接调用
自定义变量
~]# ansible-playbook test.yml -extra-vars “hosts=www user=zhenping”
通过命令行传递
通过roles传递
主机变量
定义在inventory中的主机之后的变量,直接传递给单个主机的变量
[webserver]
172.16.36.70 username=zhenping pass=zhenping
172.16.36.71
主机组变量
定义在inventory中的组上的变量
[webserver]
172.16.36.70
172.16.36.60
[webserver:vars]
var1=value
var2=value
playbook调用变量的示例
-  hosts: webserver
  remote_user: root
  vars:
    user: user2
    pass: 123321
  tasks:
      - name: add user
        user: name={{ user }} state=present
      - name: set password
        shell: /bin/echo {{ pass }} | passwd --stdin {{ user }}
手动运行playbook脚本时,传递变量(手动传递时,优先级要高于脚本中的变量)
ansible-playbook script.yml --extra-vars "username=ubunt"
ansible-playbook script.yml -e VARS
playbook的条件测试
在某task后面添加when子句,即可实现条件测试功能,when语句支持jinja2语法
####当主机的操作系统为redhat系列操作系统时,才执行yum安装

- hosts : webserver

 remote_user : root

 tasks :

    - name: yum install keepalived

      yum: name=keepalived state=present

      when: ansible_os_family == "ReaHat"

    - name: say hello

      shell: /bin/echo "hello world"
playbook的迭代
在task中调用内置的Item变量,在某task后面使用with_items语句来定义元素列表
- hosts: webserver
 remote_user: root
 tasks:
   - name: user add
     user: name={{ item }} state=present
     with_items:
        - testuser1
        - testuser2
        - testuser3
        - testuser4

- hosts: webserver

 remote_user: root

 tasks:

 - name: user add

   user: name={{ item.name }} state=present group={{ item.groups }}

   with_items:

   - { name: 'tom2', groups: 'tom' }

   - { name: 'tom2', groups: 'tom2' }
playbook—handlers: 处理器、触发器
只有在其关注的条件满足时,才会被触发执行的任务
示例:只有原配置文件被修改了,才会重新加载服务
- hosts: webserver
 remote_user: root
 tasks:
 - name: yum install nginx
   yum: name=nginx state=present
 - name: start nginx
   service: name=nginx state=started enabled=true
 - name: copy configuration file
   copy: src=/etc/nginx/nginx.conf dest=/etc/nginx/nginx.conf
   notify: restart nginx
 handlers:
 - name: restart nginx
   service: name=nginx state=reloaded
原文作者:魏镇坪
马哥教育
马哥教育历经近10年发展,已成为面向企业级资深运维工程师、架构师的专业集训营式高端就业Linux培训学院。凭借多年良好口碑,其已经成为业内知名互联网公司重要人才战略合作伙伴,获得了百度、腾讯、阿里、大众点评、51CTO、唯品会、京东、中移动、新浪、红帽等互联网巨头的合作支持。毕业学员平均薪资达10K以上,累计受益人员达百万+。
ansible之playbook功能简述
详询咨询QQ:
课程顾问-云豆:1661815153
课程顾问-豌豆:1660809109
课程顾问-土豆:2813150558
课程顾问-糖豆:371238871
课程顾问-仙豆:875259688

马哥教育
微信号:magedu-Linux


以上是关于ansible之playbook功能简述的主要内容,如果未能解决你的问题,请参考以下文章

Ansible自动化运维之Playbook详解及体验

Playbooks简介

ansible-playbook剧本

Ansible自动化运维工具Ansible的playbook基本用法

1. ansible-playbook 变量定义与引用

3 ansible-playbook 条件语句-外部变量使用