Ansible Roles目录编排-nginx角色

roles就是通过分别将变量、文件、任务、模板及处理器放置于单独的目录中,并可以便捷地include它们的一种机制。角色一般用于基于主机构建服务的场景中,但也可以是用于构建守护进程等场景中。
运维复杂的场景:建议使用 roles,代码复用度高。
roles:多个角色的集合, 可以将多个的role,分别放至roles目录下的独立子目录中<人话:就是将playbook中使用的变量、文件、任务、模板及处理器进行拆分,放入单独的目录中,编写出来不同作用的playbook称之为不同的角色,其实也是基于“项目”管理的理念。>
1.例如下面这个安装nginx的playbook,用到了tasks,handlers,template。因此在ansible目录下创建角色为nginx的文件夹并将playbook中用到的(tasks,handlers,template),文件夹也进行创建。

mkdir roles/nginx/{tasks,handlers,templates} -p


2.接下来开始拆分playbook。
<从tasks从开始拆,将安装nginx这个任务复制到vim ./roles/nginx/tasks/install_nginx.yml ,已经建立的tasks文件夹并通过vim创建install_nginx.yml 文件下(这个是相对路径,相对于ansible)>

vim ./roles/nginx/tasks/install_nginx.yml


<第二个任务依旧放在tasks下并起名。>

vim ./roles/nginx/tasks/nginx_conf.yml

 <第二个任务使用了tempalte将模板拷贝到远程主机,因此需要将模板文件放入templates目录下>

cp ./templates/nginx.conf.j2 ./roles/nginx/templates/

  <第三个任务一九放入tasks下并起名>

vim ./roles/nginx/tasks/start_nginx.yml


3.开始拆分handlers,handlers的两个任务因为是相互配合并且同时调用,所以任务放同一个文件中并且命名为main.yml< notify被触发会根据这个main.yml找到handlers设置的任务>

vim ./roles/nginx/handlers/main.yml



 4.任务、模板、变量等文件放置好相应的目录后,在tasks文件下创建一个main.yml文件(固定格式,提供一个执行任务的总入口按照文件编排的顺序执行任务。)开始编排任务的启动顺序。

vim ./roles/nginx/tasks/main.yml


 5.在roles同级的目录中创建一个角色文件以此来调用nginx角色。

vim ./nginx_role.yml


<填写两个内容,一个是执行任务的对象、一个是调用的角色>

 

 

 6.启动角色文件,执行任务~

<通过COMMAND模块使用linux命令查询结果,显示成功~>

[root@ansible ansible]# ansible webservers -a 'systemctl status nginx'
10.0.0.30 | CHANGED | rc=0 >>
● nginx.service - The nginx HTTP and reverse proxy server
   Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)
   Active: active (running) (thawing) since Tue 2021-06-01 20:05:25 CST; 4min 9s ago
  Process: 2787 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS)
  Process: 2784 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS)
  Process: 2782 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS)
 Main PID: 2788 (nginx)
    Tasks: 5 (limit: 11219)
   Memory: 8.2M
   CGroup: /system.slice/nginx.service
           ├─2788 nginx: master process /usr/sbin/nginx
           ├─2789 nginx: worker process
           ├─2790 nginx: worker process
           ├─2791 nginx: worker process
           └─2792 nginx: worker process

Jun 01 20:05:25 firewall systemd[1]: nginx.service: Succeeded.
Jun 01 20:05:25 firewall systemd[1]: Stopped The nginx HTTP and reverse proxy server.
Jun 01 20:05:25 firewall systemd[1]: Starting The nginx HTTP and reverse proxy server...
Jun 01 20:05:25 firewall nginx[2784]: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
Jun 01 20:05:25 firewall nginx[2784]: nginx: configuration file /etc/nginx/nginx.conf test is successful
Jun 01 20:05:25 firewall systemd[1]: Started The nginx HTTP and reverse proxy server.
10.0.0.20 | CHANGED | rc=0 >>
● nginx.service - The nginx HTTP and reverse proxy server
   Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)
   Active: active (running) (thawing) since Tue 2021-06-01 20:05:25 CST; 4min 9s ago
  Process: 3058 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS)
  Process: 3056 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS)
  Process: 3054 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS)
 Main PID: 3059 (nginx)
    Tasks: 5 (limit: 11221)
   Memory: 8.4M
   CGroup: /system.slice/nginx.service
           ├─3059 nginx: master process /usr/sbin/nginx
           ├─3060 nginx: worker process
           ├─3061 nginx: worker process
           ├─3062 nginx: worker process
           └─3063 nginx: worker process

Jun 01 20:05:25 CentOS8.3.qingchen.org systemd[1]: nginx.service: Succeeded.
Jun 01 20:05:25 CentOS8.3.qingchen.org systemd[1]: Stopped The nginx HTTP and reverse proxy server.
Jun 01 20:05:25 CentOS8.3.qingchen.org systemd[1]: Starting The nginx HTTP and reverse proxy server...
Jun 01 20:05:25 CentOS8.3.qingchen.org nginx[3056]: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
Jun 01 20:05:25 CentOS8.3.qingchen.org nginx[3056]: nginx: configuration file /etc/nginx/nginx.conf test is successful
Jun 01 20:05:25 CentOS8.3.qingchen.org systemd[1]: Started The nginx HTTP and reverse proxy server.

 

 

 

 

 

 

总结:
1)以上所做的实验只是简单的搭建环境、nginx所需的xxxhtml文件也并未拷贝过去。
2)template模块支持src文件(后缀为j2)使用变量修改,修改文件可以调用setup模块提供的变量,也可在playbook中通过vars定义变量,在playboot中定义,启动playbook文件时可在命令行通过 - e 参数进行变量灵活修改,如此一来即可通过修改playbook变量的值、从而作用到配置文件使用变量的值。
3)roles以层级结构的方式管理playbook ,角色下所创建的文件夹应是格式playbook核心组件的名称、存放任务、变量、模板以yml为后缀。
存放多个单独任务的文件夹例如:tasks则应该建立main.yml 文件对各任务进行编排。
同时存放多个任务的文件夹例如:handlers可将容纳多个任务的文件直接修改成main.yml

 

 




 

posted on 2021-06-01 18:10  1251618589  阅读(13)  评论(0编辑  收藏  举报

导航