任务:使用ansible的角色实现批量安装nginx服务

步骤:

  1. 创建工作目录

  2. 创建清单文件

  3. 创建配置文件

  4. 创建剧本文件

  5. 创建角色目录结构

  6. 实现任务 6.1 挂载仓库 6.2 安装nginx 6.3 编写欢迎页面 6.4 启动nginx 6.5 配置防火墙规则

  7. 定义首先模板

  8. 定义处理器

  9. 完善剧本功能

  10. 访问测试

    多次测试要移除受控端已安装的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 
Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐