Ansible之playbooks

playbook是一个或多个“paly”组成的列表。play的主要功能在于将事先并归为一组的主机扮成事先通过ansible中task定义好的角色,从根本上将,所谓的task就是调用ansible的一个module。将多个play组织的一个playbook中就可以让它们连同起来按事先安排的机制同唱一台大戏。

下面是一个简单的示例

/etc/ansible/playbooks/nginx.yml

分析

1、定义了执行的远程主机是 webservers组,这个组定义主机有(192.168.88.2,192.168.88.3)
2、定义了变量,这个变量可以运用到我们模板文件中(nginx2.conf)
3、定义了远程主机执行任务的是用户root
      remote_usery也可用于各task中,支持通过sudo的方式在远程主机上执行任务,其可用于play全局后某任务;此外,设置可以在sudo时使用sudo_user指定sudo时切换的用户
     - hosts: webnodes
           remote_user: heboan
           tasks:
               - name: test connection
                  ping:
                  remote_user: heboan
                  sudo: yes

4、任务列表:定义了5个任务
      ①create directory /data/www
      ②copy index.html
      ③install nginx is at the latest version
      ④start nginx
      ⑤write the nginx config file
      其中任务⑤是替换配置文件,我们都知道nginx配置文件变更需要重启才会生效,所以这里关联了一个[restart nginx]的handlers
5、因为有关联操作,所以我们需要定义handlers

模板文件(/etc/ansible/templates/nginx/nginx2.conf)

注意(第14行我忘记了分号结尾,需要补上)

分析:

我们这个模板用到了我们在nginx.yml中定义的变量

运行剧本

包含文件,鼓励复用

当多个playbook涉及复用的任务列表时,可以将复用的内容剥离出来,写到独立的文档当中最后在需要的地方include进来即可。示例如下:

【tasks/foo.yml】
---
# possibly saved as tasks/foo.yml
- name: placeholder foo
  command: /bin/foo
- name: placeholder bar
  command: /bin/bar
然后就可以在使用的playbook中include进来,如:
tasks:
- include: tasks/foo.yml

  

时间: 2024-10-10 06:13:36

Ansible之playbooks的相关文章

自动化运维工具Ansible之Playbooks循环语句

在使用ansible做自动化运维的时候,免不了的要重复执行某些操作,如:添加几个用户,创建几个MySQL用户并为之赋予权限,操作某个目录下所有文件等等.好在playbooks支持循环语句,可以使得某些需求很容易而且很规范的实现. with_items是playbooks中最基本也是最常用的循环语句. - name: add several users   user: name={{ item }} state=present groups=wheel   with_items:      - t

自动化运维工具Ansible之Playbooks变量的使用

在平时运维工作中有时候需要根据不同的远程节点或者针对不同的IP的系统做不同的配置部署.如,Ansible可以根据不同的IP地址来对各个节点上的配置文件做不同的处理,这里就需要用到变量. 可以在playbooks文件中直接定义变量: - hosts: webservers   vars:     http_port: 80 定义了一个变量名为http_port的变量,值为80. 通过文件包含和角色定义变量 [[email protected] ~]# cat /etc/ansible/roles/

Ansible之Playbooks的when语句

在使用ansible做自动化运维的时候,大多数情况下都执行某些任务的时候都需要依赖某个变量的值或者是上一个任务的执行结果.如,根据facts信息中的系统版本相关的信息来确定使用哪种包管理器安装软件.Ansible提供when语句,可以控制任务的执行流程. 一个很简单的when语句的例子: 1 2 3 4     tasks:       - name: "shutdown Debian flavored systems"         command: /sbin/shutdown 

自动化运维工具Ansible之Playbooks的roles和include

当需要对多个远程节点,做很多操作的时候,如果将所有的内容都书写到一个playbooks中,这就会产生一个很大的文件,而且里面的某些内容也很难复用.此时不得不考虑怎么样分隔及组织相关的文件. 最基本的,可以将任务列表单独分隔到一个小文件里,然后在tasks中包含该文件即可.同样的handlers其实也是一个任务列表(里面指定的任务都需要有一个全局唯一的名称),所以也可以在handlers中包含单独定义好的handlers任务文件. playbooks也可以包含其他playbooks文件. play

Ansible Playbooks学习

Ansible的Playbooks是Ansible用于配置,部署应用的结构化语言.Ansible的模块就好比shell命令,那么playbooks就好比shell脚本,在脚本中指定怎么使用哪些命令再加上一些判断语句等等. Playbooks使用YAML文件来表示执行步骤. --- - hosts: webservers   vars:     http_port: 80     max_clients: 200   remote_user: root   tasks:   - name: ens

ansible的playbook配置及template模板的使用

前言: 学习下ansible的playbooks的状态配置管理,说来puppet saltstack都有类似的叫法,只是ansible的叫法更犀利,我当时一看playbook还以为是花花公子的playboy.要使用ansible就要深入学习playbook配置及模板. 注:到底是playbook还是playbooks.... 先把官网的简单几个语法给说明下. #这个是你选择的主机 - hosts: webservers #这个是变量   vars:     http_port: 80     m

ansible批量管理远程服务器

使用ansible批量管理远程服务器 背景 本地需要管理远程的一批服务器,主要执行以下任务: 1) 将本地的文件复制到远端所有服务器:  2) 需要在远程服务器中执行一个个命令: 远端服务器路径并非完全一致,一般访问通过环境变量中定义的变量路径访问:  比如在.bashrc中定义$app_path=/opt/app/bin 最终选择ansible,使用这个自动化运维工具可以满足我的需求:  下面介绍下对于我这种场景需要使用的ansible的主要模块:  关于ansible是什么以及安装配置请自行

Ansible + Vagrant + Expressjs

据某大牛说,Ansible比chef.puppet都好使.学习一下怎么样用ansible provisioning 一个vagrant管理的虚拟机,用来启动expressjs的服务器.github链接:https://github.com/kiwiwin/ansible-nodejs-demo 创建一个呆呆的expressjs工程 $ express nodejs-ansible $ cd nodejs-ansible $ npm install 验证服务器可以work $ npm start

使用ansible批量管理远程服务器

使用ansible批量管理远程服务器 背景 本地需要管理远程的一批服务器,主要执行以下任务: 1) 将本地的文件复制到远端所有服务器: 2) 需要在远程服务器中执行一个个命令: 远端服务器路径并非完全一致,一般访问通过环境变量中定义的变量路径访问: 比如在.bashrc中定义$app_path=/opt/app/bin 最终选择ansible,使用这个自动化运维工具可以满足我的需求: 下面介绍下对于我这种场景需要使用的ansible的主要模块: 关于ansible是什么以及安装配置请自行百度: