ansible自动化运维(3)——编写ansible的playbook文件(HTTP,zabbix)

1.playbook简介

Playbook与ad-hoc相比,是一种完全不同的运用
playbook是一种简单的配置管理系统与多机器部署系统的基础,且非常适合于复杂应用的部署
playbook中可以编排有序的执行过程,甚至于做到在多组机器间
来回有序的执行特别指定的步骤,并且可以同步或异步的发起任务
使用playbook可以方便的重用这些代码,可以移植到不同的机器上面
playbook才是ansible真正强大之处

2.playbook语法

playbook由YMAL语言编写,以下为playbook常用到的YMAL格式:
(1)文件的第一行应该以"—"三个连字符开始,表明YMAL文件的开始。
(2)在同一行中,#之后的内容表示注释,类似于shell,python和ruby。
(3)YMAL中的列表元素以”-”开头然后紧跟着一个空格,同一个列表中的元素应该保持相同的缩进:
(4)一个字典是由一个简单的 键: 值 的形式组成(这个冒号后面必须是一个空格),字典也可以使用缩进形式来表示

**
在这里插入图片描述
主机与用户

---
- hosts: server2       #指定主机组,可以是一个或多个组,逗号分隔。
  remote_user: root                #指定远程主机执行的用户名
---
- hosts: webservers
  remote_user: root            
  become: yes                		#切换用户运行
  become_user: mysql          	#指定sudo用户为mysql

Tasks 列表

Play的主体部分是task列表,task列表中的各任务按次序逐个在hosts中指定的主机上执行,
即在所有主机上完成第一个任务后再开始第二个任务。如果一个host执行task失败,整个tasks都会回滚。
每一个task必须有一个名称name,这样在运行playbook时,从其输出的任务执行信息中可以很好的辨别出是属于哪一个task的。

tasks:
    - name: install apache		#定义任务名

执行playbook

# ansible-playbook apache.yml 直接执行
# ansible-playbook apache.yml --syntax-check    #检查yaml文件的语法是否正确
# ansible-playbook apache.yml --list-task       #检查tasks任务
# ansible-playbook apache.yml --list-hosts      #检查生效的主机

3.编写playbook实现自动安装服务

(1)由于yml文件语法的要求,我们先编写一个特定的vim,一个tab等于两个空格

可以参考这这两个配置文件
vim /etc/vimrc (vim效果) 
vim /usr/share/vim/vimfiles/template.spec
pwd
vim .vimrc
autocmd FileType yaml setlocal ai ts=2 sw=2 et

在这里插入图片描述在这里插入图片描述
开始编写yml文件

1:安装并开启httpd服务
vim /home/devops/ansible/apache/install.yml

---
- hosts: test   ##定义主机或组
  tasks:        ##定义任务
    - name: install apache  ##输入任务名称,并且使用具体模块来执行具体任务
      yum:                  ##此处位置是具体模块
        name: httpd    ##服务为httpd
        state: present  ##安装

    - name: start apache
      service:
        name: httpd
        state: started   ##开启

在这里插入图片描述
给test组里面的主机server2安装httpd服务并且开启服务
在这里插入图片描述在这里插入图片描述

语法检测:
ansible-playbook apache/install.yml --syntax-check

-C:做测试(并没有真正的跑程序)
ansible-playbook -C apache/install.yml

查看文件的内容
ansible-playbook apache/install.yml --list-hosts

查看文件的任务
ansible-playbook apache/install.yml --list-tasks

在这里插入图片描述

开始运行:
ansible-playbook apache/install.yml

在这里插入图片描述

server2查看:
ps ax | grep  httpd

在这里插入图片描述

2: 编写playbook实现修改配置文件,并且加入触发器
 将本地发布文件copy到server2的默认发布目录下,
开启防火墙,设置防火墙策略,进行访问 

---
- hosts: test
  tasks:
    - name: install apache
      yum:
        name: httpd
        state: present

    - name: start apache
      service:
        name: httpd
        state: started
        enabled: yes   ##加入开机自启 
    ##将本地发布文件copy到server2的默认发布目录下,必须有index.html文件看截图
    - name: create index.html
      copy:
        src: index.html
        dest: /var/www/html/index.html
    ##开启防火墙
    - name: start firewalld
      service:
        name: firewalld
        state: started
        enabled: yes
    ##设置防火墙策略(在策略中设置允许httpd来进行访问) 
    - name: config firewalld
      firewalld:
        service: http
        state: enabled
        permanent: yes   ##永久开启
        immediate: yes   ##立即开启
##本地进行访问
- hosts: localhost
  become: false
  tasks:
    - name: test apache
      uri:
        url: http://172.25.78.2
        return_content: yes   ##返回访问的结果

在这里插入图片描述在这里插入图片描述在这里插入图片描述
注意:此位前面使用doc方式,调用uri模块
在这里插入图片描述
可以成功推
在这里插入图片描述

3:端口变更的访问
(1)
将server2apache的主配置文件scp到本地
cd /home/devops/ansible
scp server2:/etc/httpd/conf/httpd.conf apache/

在这里插入图片描述在这里插入图片描述成功
在这里插入图片描述

cat hosts
cd apache/
mv httpd.conf  httpd.conf.j2 ##模版

在这里插入图片描述

vim httpd.conf.j2
42 Listen {
  { http_port }}  ##使用变量模式

在这里插入图片描述

vim apache/install.yml 
---
- hosts: test
  tasks:
    - name: install apache
      yum:
        name: httpd
        state: present

    - name: config apache
      template:   ##此模块可以解析下面的变量
        src: httpd.conf.j2
        dest: /etc/httpd/conf/httpd.conf
      notify: restart apache   ##触发器

    - name: start apache
      service:
        name:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值