ansible playbook 详解

上篇文章介绍了 ansible 的安装配置及实例:http://msiyuetian.blog.51cto.com/8637744/1748143

下面这篇文章主要介绍 ansible 的 playbook 详解,playbook 就是相当于把模块或函数写入到配置文件里面,然后我们执行该配置文件来达到远程运维自动化的目的。

一、playbook的简单使用



1、创建文件实例

1)编辑配置文件

[[email protected] ~]# cd /etc/ansible/

[[email protected] ansible]# vim test.yml                             //固定后缀为yml,一定要注意空格


---

- hosts: testhost

user: root

tasks:

- name: playbook_test

shell: touch /tmp/playbook.txt

注意:

hosts参数指定了对哪些主机进行参作;

user参数指定了使用什么用户登录远程主机操作;

tasks指定了一个任务,其下面的name参数同样是对任务的描述,在执行过程中会打印出来。

2)执行配置文件

[[email protected] ansible]# ansible-playbook test.yml

3)远程机查看

2、创建用户实例

1)编辑配置文件

[[email protected] ansible]# vim create_user.yml

---

- name: create_user

hosts: testhost

user: root

gather_facts: false

vars:

- user: "msiyuetian"

tasks:

- name: create user

user: name="{{ user }}"

注意:

name参数对该playbook实现的功能做一个概述,后面执行过程中,会打印 name变量的值 ,可以省略;
gather_facts参数指定了在以下任务部分执行前,是否先执行setup模块获取主机相关信息,这在后面的task会使用到setup获取的信息时用到;
vars参数指定了变量,这里指字一个user变量,其值为test ,需要注意的是,变量值一定要用引号引住;
user提定了调用user模块,name是user模块里的一个参数,而增加的用户名字调用了上面user变量的值。

2)执行配置文件

[[email protected] ansible]# ansible-playbook create_user.yml

3)远程机查看

二、playbook循环



实例:修改 /tmp/ 目录下的 1.txt 和 2.txt 文件属性

1)新建实验文件

# touch /tmp/{1.txt,2.txt}            //在 testhost 组中的所有主机上操作

2)编辑配置文件

[[email protected] ansible]# vim loop.yml


---

- hosts: testhost

user: root

tasks:

- name: change mode for files

file: path=/tmp/{{ item }} mode=600 owner=root group=root

with_items:

- 1.txt

- 2.txt

3)执行配置文件

[[email protected] ansible]# ansible-playbook loop.yml

4)远程查看效果

注意:可看到权限为 600,主和组都为root。

三、playbook条件判断



条件判断一般用于针对不同版本的系统,比如对centos、ubuntu 等系统进行不同的操作命令。

1)编辑配置文件

[[email protected] ansible]# vim when.yml

---

- hosts: testhost

user: root

gather_facts: True

tasks:

- name: use when

shell: touch /tmp/when.txt

when: facter_ipaddress == "192.168.0.110"

注意:只有当参数 facter_ipaddress 为 192.168.0.110 时才在该机器上新建指定文件;意思就是只对 testhost 组中特定的主机进行操作,忽略组内其他的主机。我们可以通过下面命令查看各个参数的值:

[[email protected] ansible]# ansible testhost -m setup

2)执行配置文件

[[email protected] ansible]# ansible-playbook when.yml

3)远程查看效果

[[email protected] ~]# ll /tmp/

四、playbook handlers



当我们执行 tasks 后,服务器发生变化之后我们要执行一些操作。比如我们修改了某个服务的配置文件,需要重启下服务。实例如下:

1)编辑配置文件

[[email protected] ansible]# vim handlers.yml


---

- name: handlers test

hosts: testhost

user: root

tasks:

- name: test copy

copy: src=/etc/passwd dest=/tmp/handlers.txt

notify: test handlers

handlers:

- name: test handlers

shell: echo "msiyuetian.blog.51cto.com" >> /tmp/handlers.txt

说明:只有 copy 模块真正执行后,才会去调用下面的 handlers 相关的操作,追加内容。也就是说如果 src 和 dest 内容是一样的,并不会去执行 handlers 里面的 shell 相关命令。所以这种比较适合配置文件发生更改后,需要重启服务的操作。

2)执行配置文件

[[email protected] ansible]# ansible-playbook handlers.yml

3)远程查看效果

[[email protected] ~]# cat /tmp/handlers.txt

可查看到 copy 文件成功,同时也执行了 handlers 的相关命令,追加了新的信息。

时间: 2024-12-13 16:03:42

ansible playbook 详解的相关文章

轻量级自动化运维工具ansible之二:playbook详解

在介绍playbook之前,我们先了解一下YAML语言,因为playbook是用YAML语言编写的 一.YAML 1.YAML是一种可读性高的用来表达资料序列的语言,其语法和其他高阶语言类似,并且可以简单表达清单.散列表.标量等数据结构.所有的yaml文件都以"---"开头表示开始一个document,所有的列表元素以"-"开头,键值对用":",后面的空格是必须的下面是一个示例: ---   #打头符可省略 - name: John Smith

ansible深入理解和操作——02(主机清单,yml语法,playbook详解+操作)

本章内容:一.inventory主机清单二.yml语法三.playbook详解+操作 inventory主机清单 ansible默认的主机清单是/etc/ansible/hosts文件 主机清单可以手动设置,也可以通过Dynamic Inventory动态生成 一般主机名使用FQDN vi /etc/ansible/hosts [webserver] #方括号设置组名 www1.example.org #定义被监控主机,这边可以是主机名也可以是IP地址,主机名需要修改/etc/hosts文件 w

ansible的主机清单,yml语法,playbook详解+操作

本章内容:一.inventory主机清单二.yml语法三.playbook详解+操作 inventory主机清单 ansible默认的主机清单是/etc/ansible/hosts文件 主机清单可以手动设置,也可以通过Dynamic Inventory动态生成 一般主机名使用FQDN vi /etc/ansible/hosts [webserver] #方括号设置组名 www1.example.org #定义被监控主机,这边可以是主机名也可以是IP地址,主机名需要修改/etc/hosts文件 w

Ansible自动化运维学习之五:Ansible配置文件详解与调优

一.常用参数详解本文对 https://blog.51cto.com/8355320/2471354 的参数配置进行了扩充.Ansible默认配置文件为/etc/ansible/ansible.cfg,配置文件中可以对ansible进行各项参数的调整,包括并发线程.用户.模块路径.配置优化等,常用参数如下: [defaults] inventory = /etc/ansible/hosts 被控端IP信息列表: library = /usr/share/my_modules/ Ansible默认

Ansible 配置文件详解

# config file for ansible -- http://ansible.com/ # ============================================== # nearly all parameters can be overridden in ansible-playbook  # or with command line flags. ansible will read ANSIBLE_CONFIG, # ansible.cfg in the curr

Ansible之Playbook详解、案例

playbook-剧本 介绍 playbooks是 一个不同于使用Ansible命令行执行方式的模式,其功能更强大灵活.简单来说,playbook是一个非常简单的配置管理和多主机部署系统,不同于任何已经存在的模式,可作为一个适合部署复杂应用程序的基础.Playbook可以定制配置,可以按照指定的操作步骤有序执行,支持同步和异步方式.值得注意的是playbook是通过YAML格式来进行描述定义的.? 核心元素 Tasks:任务,由模板定义的操作列表Variables:变量Templates:模板,

ansible中的playbook详解

首先简单说明一下playbook,playbook是什么呢?根本上说playbook和shell脚本没有任何的区别,playbook就像shell一样,也是把一堆的命令组合起来,然后加入对应条件判断等等,在shell脚本中是一条一条的命令,而在playbook中是一个一个的task任务构成,每个task任务可以看做shell中的一条命令:shell脚本一般只是在当前服务器上执行,而playbook则是在不止一个服务器上执行,因此playbook需要在其中指定运行该playbook的服务器名. p

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

Handlers介绍: Handlers也是一些task的列表,和一般的task并没有什么区别.是由通知者进行的notify,如果没有被notify,则Handlers不会执行,假如被notify了,则Handlers被执行: 不管有多少个通知者进行了notify,等到play中的所有task执行完成之后,handlers也只会被执行一次 "notify"这个action可用于在每个play的最后被触发,这样可以避免多次有改变发生时每次都执行指定的操作,取而代之,仅在所有的变化发生完成

自动化运维工具Ansible部署详解与基本使用

一.基础简介 1.Ansible简介 Ansible是一款基于Python开发的自动化运维工具,主要是实现批量系统配置.批量程序部署.批量运行命令.批量执行任务等等诸多功能.Ansible是一款灵活的开源工具,能够很大程度简化运维中的配置管理与流程控制方式,它利用推送方式对客户系统加以配置,这样所有工作都可在主服务器端完成.Asible是基于模块工作的,其本身没有批量部署的能力,总之只要明白Ansible是一款运维自动化的神器就好了~! 2.功能特性 ######################