自动化运维工具-ansible入门(二)playbook

3. 实施 playbook#########

本章目标:编写基本的 ansible playbook

3.1 编写和运行 playbook

3.1.1 查看指定用户的临时命令

‘yaml 格式通常以 yml 为扩展名,yaml 对于缩进量没有严格要求,但是有两个基本原则’
‘1.处于同一层次结构中同一级别的数据元素必须具有相同的缩进量’
‘2.如果项目属于其他项目的子项,其缩进量必须大于父项’

 ansible -m user -a "name=student uid=1000state=present" servera.lab.example.com

在这里插入图片描述
改写为 playbook

[root@workstation ~]# cat user.yml

在这里插入图片描述

---                                     开头三个破折号,文档的开始标记
- name: Configure User            可写可不写,但是建议使用

...                      结尾三个省略号,结束标记(通常省略)

play 本身是一个键.值对集合,同一 play 中的键应当使用相同的缩进量
hosts 就是一个键, 后面的内容就是值。这是一个嵌套的集合。

playbook 执行:
在这里插入图片描述

3.1.2 安装 apache

新建一个目录方便操作

mkdir /demo
vim webserver.yml

在这里插入图片描述在这里插入图片描述
在这里插入图片描述
可见已经安装上了httpd服务。

3.1.3 确保 httpd 服务开机启动

vim service.yml

在这里插入图片描述
在这里插入图片描述
效果:
在这里插入图片描述

3.1.4提高输出详细程度

ansible-playbook 默认输出不提供详细任务执行信息。-v 参数提供,共四个级别:

  1. -v             #显示任务结果
  2. -vv            #显示任务结果和任务配置
  3. -vvv            #包含关于与受管主机的连接信息
  4. -vvvv           #增加连接插件相关的额外详细程度选项(包括受管主机上用于执行脚本             的用户及所 执行的脚本)

#执行 playbook 前最好进行语法验证
在这里插入图片描述
#无语法错误
更改一下playbook:
在这里插入图片描述

在这里插入图片描述
有语法错误,会提示错误位置。

3.1.5执行空运行,只是预览结果

我们先移除71主机上的httpd服务:
在这里插入图片描述
然后执行playbook;
ansible-playbook -C webserver.yml
在这里插入图片描述
在这里插入图片描述
还是没有安装。可以看出。
‘空运行会报告执行这个 playbook 将会发生什么,但不会改变目标主机’

3.1.6安装、配置默认发布页并启动 apache

 vim site.yml

在这里插入图片描述

检测语法

ansible-playbook --syntax-check site.yml

在这里插入图片描述
没有问题。
#创建配置文件和清单
在这里插入图片描述
#建立默认发布页面
cat files/index.html
在这里插入图片描述
执行playbook:
在这里插入图片描述
在这里插入图片描述
服务安装并且启用。
在这里插入图片描述
在这里插入图片描述
发布页面更改成功。

#测试
curl 获取远程浏览器内容。
在这里插入图片描述

3.2 实施多个 play

模板:
在这里插入图片描述
ansible-doc -l              #列出所有模块
在这里插入图片描述
ansible-doc yum            #列出 yum 的用法和示例
在这里插入图片描述
ansible-doc -s yum            #终端中输出 yum 模块中各参数的用法
在这里插入图片描述

3.3 PLAYBOOK yaml语法变化

  1. yaml 的注释
    在这里插入图片描述
  2. yaml 字符串
    直接输入
    this is a string
    单引号
    ‘this is a string’
    多引号
    “this is a string”

#练习
不关闭火墙更改远程主机页面并访问:

在这里插入图片描述

 vim webserver.yml
---
- name: Enable internet service
  hosts: web
  become: yes
  tasks:
          - name: apache and firewalld installed   # 检测firewalld和httpd是否为最新版  
            yum:
                    name:
                            - httpd
                            - firewalld
                    state: latest          

          - name: Configure index.html    # 配置默认发布页面
            copy:
                    content: "welcome to westos!\n"
                    dest: /var/www/html/index.html
                    
          - name: firewalld enabled and runing    # 检测firewalld是否开机自启并启用
            service:
                    name: firewalld
                    enabled: true
                    state: started
                    
          - name: firewald primits http           # 检测firewalld是否添加http服务
            firewalld:
                    service: http
                    permanent: true
                    state: enabled
                    immediate: yes
                    
          - name: httpd enabled and runing            # 检测httpd服务是否自启并运行
            service:
                    name: httpd
                    enabled: true
                    state: started
                    
- name: test webserver					本地主机测试访问
  hosts: localhost
  become: no
  tasks:
          - name: connect web server
            uri:
                    url: http://rhel71.com
                    return_content: yes
                    status_code: 200

#检测语法
在这里插入图片描述
#运行

ansible-playbook -v webserver.yml

在这里插入图片描述
可以看到返回了内容 welcome to westos
和状态码 200

3.4 管理变量和事实

将 playbook 中的某些值使用变量代替,从而简化 playbook 的编写

3.4.1 管理变量

ansible 变量简介

变量可能包含下面这些值:
要创建的用户、
要安装的软件包、
要重启的服务、
要删除的文件、
要从互联网检索的文档

命名变量

变量名称必须以字母开头,并且只能含有字母、数字和下划线
错误        正确
web server    web_server
westos.file    remote_file
1file         file1

定义变量

三个范围级别
全局范围:从命令行或 ansible 配置设置的变量
play 范围:在 play 和相关结构中设置的变量
主机范围:由清单、事实收集或注册的任务,在主机组和个别主机上设置的变量
‘如果多个级别上定义了相同名称的变量,优先采用级别最高的变量,窄范围优先于广范围’

3.4.2 playbook 中的变量

在 playbook 中定义变量

1.常见方式:在 playbook 开头的 vars 块中:
在这里插入图片描述
2.在外部文件定义 playbook 变量
在这里插入图片描述

cat user.yml

在这里插入图片描述

在 playbook 中使用变量

将变量名称放在大括号内即可
在这里插入图片描述
‘注意:当变量用作开始一个值的第一元素时,必须使用引号’

发布了50 篇原创文章 · 获赞 18 · 访问量 3780

猜你喜欢

转载自blog.csdn.net/thermal_life/article/details/105308669