一、实施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参数显示详细信息