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 参数提供,共四个级别:
- -v #显示任务结果
- -vv #显示任务结果和任务配置
- -vvv #包含关于与受管主机的连接信息
- -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语法变化
- yaml 的注释
- 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