前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ansible之playbook功能简述

ansible之playbook功能简述

作者头像
小小科
发布2018-05-04 14:43:53
1.6K0
发布2018-05-04 14:43:53
举报
文章被收录于专栏:北京马哥教育北京马哥教育

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

原文作者:魏镇坪

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2016-09-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 马哥Linux运维 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档