Linux企业级——Ansible-playbook的简介及应用

116 篇文章 0 订阅
114 篇文章 0 订阅

Linux企业级——Ansible-playbook的简介及应用

1.playbook(剧本)的介绍

1.1 简介

playbook是 一个不同于使用Ansible命令行执行方式的模式,其功能更强大灵活。简单来说,playbook是一个非常简单的配置管理和多主机部署系统,不同于任何已经存在的模式,可作为一个适合部署复杂应用程序的基础。Playbook可以定制配置,可以按照指定的操作步骤有序执行,支持同步和异步方式。值得注意的是playbook是通过YAML格式来进行描述定义的。

1.2 核心元素

Tasks:任务,由模板定义的操作列表
Variables:变量
Templates:模板,即使用模板语法的文件
Handlers:处理器 ,当某条件满足时,触发执行的操作
Roles:角色

1.3 主要组成部分的介绍
1.3.1 hosts和users

在playbook中的每一个play都可以选择在哪些服务器和以什么用户完成,hosts一行可以是一个主机组、主机、多个主机,中间以冒号分隔,可使用通配模式。

1.3.2 Tasks(任务)

1.Play的主体部分是tasks列表,tasks列表中的各任务按次序逐个在hosts中指定的主机上执行,即在所有主机上完成第一个任务后再开始第二个任务。在运行playbook时(从上到下执行),如果一个host执行tasks失败,整个tasks都会回滚,修正playbook中的错误,然后重新执行即可。Tasks的目的是使用指定的参数执行模块,而在模块参数中可以使用变量,模块执行时幂等的,这意味着多次执行是安全的,因为其结果一致。
2.每一个task必须有一个名称name,这样在运行playbook时,从其输出的任务执行信息中可以很好的辨别出是属于哪一个task的。
3.定义一个task,常见的格式:”module: options” 例如:yum: name=httpd
4.ansible的自带模块中,command模块和shell模块无需使用key=value格式

1.3.3 Handlers(触发器)

1.handlers也是一些task的列表,和一般的task并没有什么区别。

2.是由通知者进行的notify,如果没有被notify,则Handlers不会执行,假如被notify了,则Handlers被执行

3.不管有多少个通知者进行了notify,等到play中的所有task执行完成之后,handlers也只会被执行一次

1.3.4 Templates(模板)

Jinja是基于Python的模板引擎。template类是Jinja的另一个重要组件,可以看作一个编译过的模块文件,用来生产目标文本,传递Python的变量给模板去替换模板中的标记。

2.playbook的实际应用

实验环境:
虚拟机名称ip版本角色
server1172.25.66.17.5ansible
server2172.25.66.27.5远程主机hosts
server3172.25.66.37.5远程主机hosts
前期准备:在这里插入图片描述
vim .vimrc		#编辑.vimrc文件,设定缩进
autocmd FileType yaml setlocal ai ts=2 sw=2 et		#设定Tab为两个空格
2.1 安装apache服务
2.1.1 编写inventory主机文件
vim /home/devops/ansible/hosts		#编辑组文件
[localhost]
172.25.66.1

[test]
172.25.66.2

[db]
172.25.66.3

[webserver:children]
test
db

[webserver:vars]
http_port=80

在这里插入图片描述

2.1.2 配置文件
在server2安装httpd服务:
yum install httpd -y 		

在这里插入图片描述

从server2给server1发送httpd.conf文件:
scp /etc/httpd/conf/httpd.conf devops@server1:/home/devops/ansible/apache

在这里插入图片描述

添加默认发布文件index.html:
vim index.html

在这里插入图片描述

在这里插入图片描述

2.1.3 创建playbook文件install.yml
mkdir /home/devops/ansible/apache 	 #创建一个目录,将所有文件放到一起
cd apache		#进入apache目录
vim install.yml  	#编辑yml文件
---
- hosts: test
  vars:    #定义变量,只有组文件中的test组主机可使用
    - http_port:  80		#端口为80
  tasks:	#定义任务
    - name: install apache 	 #安装apache
      yum:
        name: httpd
        state:  present
    - name: config apache  	#配置apache
      template:
        src:  /home/devops/ansible/apache/httpd.conf.j2   #j2模板
        dest: /etc/httpd/conf/httpd.conf
      notify: restart apache		#重启apache触发器

    - name: start apache  #开启apache服务
      service:
        name: httpd
        state:  started
        
    - name: create index.html   #添加默认发布文件
      copy:
        src:  /home/devops/ansible/apache/index.html
        dest: /var/www/html/index.html

    - name: start firewalld 	 #开启防火墙
      service:
        name: firewalld
        state:  started

    - name: config firewalld   #防火墙配置,添加服务
      firewalld:
        service: http
        state: enabled
        permanent: yes
        immediate: yes
  handlers:   #触发器
    - name: restart apache		#重启apache服务
      service:
        name: httpd
        state:  restarted

- hosts: localhost  #测试
  vars:	
    - http_port: 80  #重新定义变量
  become: false
  tasks:
    - name:  test apache
      uri:
        url: http://172.25.66.2:{{ http_port }}
        return_content: yes
2.1.4 修改httpd.conf.j2中的监听端口

在这里插入图片描述

2.1.5 执行playbook : ansible-playbook apache/install.yml

在这里插入图片描述

2.1.6 测试

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值