前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Ansible之Role角色

Ansible之Role角色

作者头像
用户8639654
修改2021-08-18 14:28:10
3410
修改2021-08-18 14:28:10
举报
文章被收录于专栏:云计算运维云计算运维

Role角色

roles则是在ansible中,playbooks的目录组织结构。而模块化之后,成为roles的组织结构,易读,代码可重用,层次清晰。

实战目标:通过role远程部署nginx并配置

代码语言:javascript
复制
 两台机器配置本地解析
 [root@ansible-server ~]# vim /etc/hosts
 192.168.1.9    ansible-server
 192.168.1.13   ansible-web4
 [root@ansible-web4 ~]# vim /etc/hosts
 192.168.1.9    ansible-server
 192.168.1.13   ansible-web4
 添加主机组
 [root@ansible-server ansible]# pwd
 /etc/ansible
 [root@ansible-server ansible]# vim hosts
 [webservers4]
 ansible-web4
 配置免密登录:
 [root@ansible-server ~]# ssh-copy-id -i 192.168.1.13

1.目录结构:

代码语言:javascript
复制
目录顺序:
 role_name/     ---角色名称=目录
     files/:存储一些可以用copy调用的静态文件。
     tasks/: 存储任务的目录,此目录中至少应该有一个名为main.yml的文件,用于定义各task;其它的文件需要由main.yml进行“包含”调用; 
     handlers/:此目录中至少应该有一个名为main.yml的文件,用于定义各handler;其它的文件需要由(与notify:名字相同,方便notify通知执行下一条命令)通过main.yml进行“包含”调用; 
     vars/:此目录中至少应该有一个名为main.yml的文件,用于定义各variable;其它的文件需要由main.yml进行“包含”调用; 
     templates/:存储由template模块调用的模板文本; (也可以调用变量)
     site.yml:定义哪个主机应用哪个角色
 =========================================================================================
 1.准备目录结构
 [root@ansible-server ~]# cd /etc/ansible/roles/  #role为自带目录,如果不存在可以创建
 [root@ansible-server roles]# mkdir nginx/{files,handlers,tasks,templates,vars} -p
 2.创建文件:
 [root@ansible-server roles]# touch site.yml nginx/{handlers,tasks,vars}/main.yml
 [root@ansible-server roles]# yum install -y tree

代码语言:javascript
复制
 1.创建nginx的测试文件
 [root@ansible-server roles]# echo 1234 > nginx/files/index.html
 2.安装nginx并配置模板
 [root@ansible-server roles]# yum install -y nginx && cp /etc/nginx/nginx.conf nginx/templates/nginx.conf.j2

templates模板: 用的是jinja2的语法

代码语言:javascript
复制
 3.编写任务
 [root@ansible-server roles]# vim nginx/tasks/main.yml
 ---
 - name: install epel
   yum: name=epel-release state=latest
 - name: install nginx
   yum: name=nginx state=latest
 - name: copy nginx.conf templte
   template: src=nginx.conf.j2 dest=/etc/nginx/nginx.conf
 - name: copy index.html
   copy: src=index.html dest=/usr/share/nginx/html/index.html
   notify: start nginx
代码语言:javascript
复制
 4.准备配置文件
 [root@ansible-server roles]# vim nginx/templates/nginx.conf.j2
 修改成如下内容。自定义变量
代码语言:javascript
复制
 5.编写变量
 [root@ansible-server roles]# vim nginx/vars/main.yml  #添加如下内容
 worker_connections: 2
 6.编写handlers
 [root@ansible-server roles]# vim nginx/handlers/main.yml #编写如下内容
 ---
 - name: start nginx  #和notify的名字必须一样
   service: name=nginx state=started
 7.编写剧本
 [root@ansible-server roles]# vim site.yml
 ---
 - hosts: webservers4
   user: root
   roles:
    - nginx
代码语言:javascript
复制
 检测语法
 [root@ansible-server roles]# ansible-playbook site.yml --syntax-check
 playbook: site.yml
 执行剧本:
 [root@ansible-server roles]# ansible-playbook site.yml

查看:

代码语言:javascript
复制
 [root@ansible-web4 ~]# netstat -lntp 
 Active Internet connections (only servers)
 Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
 tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      3102/nginx: master  
 tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      926/sshd            
 tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1007/master         
 tcp6       0      0 :::80                   :::*                    LISTEN      3102/nginx: master  
 tcp6       0      0 :::22                   :::*                    LISTEN      926/sshd            
 tcp6       0      0 ::1:25                  :::*                    LISTEN      1007/master         
 [root@ansible-web4 ~]# cat /etc/nginx/nginx.conf | grep pro
 #worker_processes auto;
 worker_processes 2;

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Role角色
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档