使用ansible的角色实现批量安装nginx服务
·
任务:使用ansible的角色实现批量安装nginx服务
步骤:
-
创建工作目录
-
创建清单文件
-
创建配置文件
-
创建剧本文件
-
创建角色目录结构
-
实现任务 6.1 挂载仓库 6.2 安装nginx 6.3 编写欢迎页面 6.4 启动nginx 6.5 配置防火墙规则
-
定义首先模板
-
定义处理器
-
完善剧本功能
-
访问测试
多次测试要移除受控端已安装的nginx服务
rm -rf /usr/lib/systemd/system/nginx.service dnf remove nginx -y
#创建工作目录
[root@controller ~]# mkdir nginx_roles
[root@controller ~]# cd nginx_roles/
[root@controller nginx_roles]# mkdir inventory roles
[root@controller nginx_roles]# tree
.
├── inventory
└── roles
2 directories, 0 files
#创建清单文件
[root@controller nginx_roles]# vim inventory/hosts
[root@controller nginx_roles]# cat inventory/hosts
[server]
192.168.220.[134:135]
#创建配置文件
[root@controller nginx_roles]# vim ansible.cfg
[root@controller nginx_roles]# cat ansible.cfg
[defaults]
inventory=inventory/hosts
#创建剧本文件
[root@controller nginx_roles]# touch site.yml
#创建角色目录结构
[root@controller nginx_roles]# cd roles/
[root@controller roles]# ansible-galaxy role init nginx
- Role nginx was created successfully
#实现任务
[root@controller roles]# cd nginx/tasks/
[root@controller tasks]# ls
main.yml
# 挂载仓库
[root@controller tasks]# vim mount_repo.yml
[root@controller tasks]# cat mount_repo.yml
---
- name: mount point
mount:
src: /dev/sr0
path: /mnt
fstype: iso9660
state: present
#安装nginx
[root@controller tasks]# vim install_nginx.yml
[root@controller tasks]# cat install_nginx.yml
---
- name: install nginx
dnf:
name: nginx
state: installed
#编写欢迎页面
[root@controller tasks]# vim index_page.yml
[root@controller tasks]# cat index_page.yml
---
- name: create index html
template:
src: templates/index.j2
dest: /usr/share/nginx/html/index.html
#启动nginx
[root@controller tasks]# vim start_nginx.yml
[root@controller tasks]# cat start_nginx.yml
---
- name: start nginx
service:
name: nginx
state: started
#配置防火墙规则
[root@controller tasks]# vim config_firewalld.yml
[root@controller tasks]# cat config_firewalld.yml
---
- name: config firewalld
firewalld:
prot: 80/tcp
permanent: true
state: enabled
notify: restart firewalld
#
[root@controller tasks]# vim main.yml
[root@controller tasks]# cat main.yml
---
- import_tasks: mount_repo.yml
- import_tasks: install_nginx.yml
- import_tasks: index_page.yml
- import_tasks: start_nginx.yml
- import_tasks: config_firewalld.yml
#定义首先模板
[root@controller tasks]# cd ../
[root@controller nginx]# vim templates/index.j2
[root@controller nginx]# cat templates/index.j2
<html>
<head>
<meta charset="UTF-8">
<title>index.html</title>
</head>
<body>
<h1>{{ index_content }}</h1>
</body>
</html>
[root@controller nginx]# vim vars/main.yml
[root@controller nginx]# cat vars/main.yml
---
index_content: "welcome to nginx!"
##定义处理器
[root@controller nginx]# vim handlers/main.yml
[root@controller nginx]# cat handlers/main.yml
---
# handlers file for nginx
- name: restart firewalld
service:
name: firewalld
state: reloaded
#完善剧本功能
[root@controller nginx]# cd ../../
[root@controller nginx_roles]# vim site.yml
[root@controller nginx_roles]# cat site.yml
---
- name: install nginx
hosts: server
roles:
- nginx
[root@controller nginx_roles]# ansible-playbook site.yml
更多推荐
所有评论(0)