实验环境
ansible主机:192.168.1.19
受管主机:192.168.1.19(rhel8_no1.test.com) 192.168.1.39(rhel7_no1.test.com)
1. 编写和运行playbook
yaml 格式通常以 yml 为扩展名,yaml 对于缩进量没有严格要求,但是有两个基本原则:
1.处于同一层次结构中同一级别的数据元素必须具有相同的缩进量
2.如果项目属于其他项目的子项,其缩进量必须大于父项
示例:
①:vim user.yml
编写一个简单playbook,检测rhel8_no1.test.com主机是否存在uid为student用户
②:ansible-playbook user.yml
##运行playbook
编写与执行playbook时的相关命令:
ansible-doc -l #列出所有模块
ansible-doc yum #列出 yum 的用法和示例
ansible-doc -s yum #终端中输出 yum 模块中各参数的用法
ansible-playbook --syntax-check user.yml ##语法验证
ansible-playbook -C user.yml ##空执行;预览执行效果,实际没有在受管主机执行任务
提高输出详细程度:
ansible-playbook 默认输出不提供详细任务执行信息。-v 参数提供,共四个级别:
- -v #显示任务结果
- -vv #显示任务结果和任务配置
- -vvv #包含关于与受管主机的连接信息
- -vvvv #增加连接插件相关的额外详细程度选项(包括受管主机上用于执行脚本的用户及所执行的脚本)
安装、配置默认发布页并启动 apache:
①:vim index.html
##编写发布页面
②:vim inventory
##编写主机清单
③:vim site.yml
##编写playbook ,对webservers主机组的所有主机进行安装、配置默认发布页并启动 apache
④:ansible-playbook site.yml
##运行playbook
⑤:在浏览器访问受管主机的apache发布页面进行测试
2. 实施多个 play
模板:
---
- name: first play
hosts: servera.example.com
tasks:
- name: first task
yum:
name: httpd
status: present
- name: second task
service:
name: httpd
enabled: true
- name: second play
hosts: serverb.example.com
tasks:
- name: first task
service:
name: mariadb
enabled: true
...
示例:
对受管主机进行安装apache操作,并配置防火墙策略与默认发布页面,使其能够被访问,同时在本地主机对发布页面进行测试
---
- name: Enable internet services
hosts: rhel8_no1.test.com
become: yes ## 权限提升,以root身份执行
tasks:
- name: latest version of httpd and firewalld installd
yum:
name:
- httpd
- firewalld ##安装apache,firewalld
state: latest
- name: configure index.html
copy:
content: "welcome to ansinble page !!!" ##修改受管主机的默认发布页面
dest: /var/www/html/index.html
- name: firewalld enabled and running
service:
name: firewalld
enabled: true ##开启防火墙并设置开机自启
state: started
- name: firewalld permits access to httpd service
firewalld:
service:http
permanent: true
state: enabled ## 在防火墙永久开放http服务
immediate: yes
- name: httpd enabled and running
service:
name: httpd ##开启并设定开机自启httpd服务
enabled: true
state: started
- name : test webservers in localhost
hosts: localhost ##在本机测试远程受管主机的apache发布页面
become: no
tasks:
- name: connect to intranet web server
uri:
url: http://192.168.1.19
return_content: yes
status_code: 200