Linux下ansible自动化运维工具(2)

一、实施playbook
本章目标:编写基本的ansible playbook
1.编写和运行playbook

查看指定用户的临时命令
[root@workstation ~]# ansible -m user -a 'name=student uid=1000 state=present' servera.lab.example.com

在这里插入图片描述
2.yaml介绍:
yaml格式通常以yml为扩展名,yaml对于缩进量没有严格要求,但是有两个基本原则
1.处于同一层次结构中同一级别的数据元素必须具有相同的缩进量;
2.如果项目属于其他项目的子项目,其缩进量必须大于父项;
临时命令查看用户的改playbook;
play本身是一个键值对集合,同一play中的键应当使用相同的缩进量’
注意缩进量
在这里插入图片描述

3.安装Apache服务
单独创建目录,
在这里插入图片描述
显示changed=1|0表示没有安装或不是最新版/已经安装yes最新版本
在这里插入图片描述
设置服务开机启动
在这里插入图片描述
在这里插入图片描述
5.提高ansible输出详细程度

ansible-playbook    默认输出不提供详细任务执行信息
-v    显示任务结果
-vv   显示任务结果和任务配置
-vvv  包含关于与受管主机的连接信息
-vvvv 增加连接插件相关的额外详细程度选项(包括受管主机上用于执行脚本的用户及所执行的脚本)
执行playbook前为了保证效果需进行语法验证 (--syntax-check)

在这里插入图片描述
5.1执行空运行

提前预览剧本执行后将会执行那些操作及作出那些改变,不会对受管主机进行任何更改
 [root@workstation demo]# ansible-playbook -C wbserver.yml 

6.安装、启动apache 、配置默认发布页面

 [root@workstation demo]# cat files/index.html (默认发布页面)
hello westos

创建配置文件和清单
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
测试在这里插入图片描述
在这里插入图片描述
七、实施多个play

在这里插入图片描述

[root@workstation ~]# ansible-doc -l 查看所有模块
[root@workstation ~]# ansible-doc yum 查看yum模块
[root@workstation ~]# ansible-doc -s yum  终端内输出yum模块中的各参数用法
yaml注释(两种办法)
#ThisisaYAMLcomment  每行开头添加#
some  data  #This is also a YAMLcomment  指定条件前也可注释
yaml字符串 
thisisastring
'thisisastring'  单引号引用
"thisisastring"   双引号引用

八、多剧本操作练习
实验环境:
1.主机名称:serverb.lab.example.com
在这里插入图片描述
2.主机名称为workstation

[root@workstation ~]# mkdir multi-paly创建目录
[root@workstation multi-paly]# ls建立清单、配置文件和剧本
ansible.cfg  inventory  serverb.yml
[root@workstation multi-paly]# cat ansible.cfg 查看配置文件
[defaults]
inventory = ./inventory
[root@workstation multi-paly]# cat inventory查看清单
[web]
serverb.lab.example.com
[root@workstation multi-paly]# vim serverb.yml 编辑playbook剧本
---  开始
- name: Enable internet service   说明设置的效果(开机启动、网络、服务)
  hosts: web 指定清单主机
  become: yes  提升身份(超级用户)
  tasks:  动作
    - name: latest version of httpd and firewalld install  检测http、防火墙是否安装和是否是最新版本 
      yum:   安装
        name:     
         - httpd       安装http、防火墙
         - firewalld    
        state: latest  最新状态


    - name: Test html page is configured   
      copy:    copy模块复制
        content: "Welcome to westos!\n"  使用content直接指定内容
        dest: /var/www/html/index.html    上传到http默认发布文件下
    
    - name: firewalld enanled and running    检测火墙是否开机启动和是否运行
      service:     服务
        name: firewalld   防火墙
        enabled: true    真的即开启
        state: started   状态开启

    - name: firewalld permits httpd   检测防火墙是否允许http访问
      firewalld:              
        service: http    添加http   
        permanent: true    真的,永久添加
        state: enabled    开机启动
        immediate: yes   立即添加
        
    - name: httpd enabled and running    检测Apache服务是否开机启动和运行中
      service:
        name: httpd   指定服务http
        enabled: true   开机启动true为真
        state: started   状态为开启

- name: Test web server   本机测试
  hosts: localhost  主机名
  become: no  本机不需要身份提升
  tasks: 动作
    - name: connetc web server
      uri:   uri模块获取网络连接
        url: http://serverb.lab.example.com   连接地址
        return_content: yes     返回页面内容
        status_code: 200   获取状态码
...  结束    

在这里插入图片描述
测试:
1.serverb.lab.example.com主机上开启火墙和保证没有http服务
2.主机名称为workstation执行playbook
在这里插入图片描述
添加-v参数显示详细信息
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

发布了46 篇原创文章 · 获赞 6 · 访问量 1340

猜你喜欢

转载自blog.csdn.net/qq_46089299/article/details/105343376