ansible基础-ansible角色的使用
作者:尹正杰
版权声明:原创作品,谢绝转载!否则将追究法律责任。
我们建议把多个节点都会用到的功能将其定义模块,然后谁要用到该模块就直接调用即可!而在ansible中它有一个特有的名称,即角色。
一.角色相关概念
1>.每个角色都是以特定的层级目录结构进行组织
我们知道ansible可以自定义模块,便于自己或他人调用,它也有一个特有的名称叫做角色。每个角色对应的服务可能不太一样,比如mysql,httpd,nginx,memcached。虽然每个角色(模块)的功能不一样,但是他们都以特定的目录结构进行组织,相关说明如下所述:
files:
存放由copy或script模块等调用的文件。
templates:
template模块查找所需要模板文件的目录。
tasks:
用于定义任务,至少应该包含一个名为main.yml的文件(类似于java和go等编译性语言,用于指定程序的入口),其他的文件需要在此文件中通过include进行包含。
handlers:
定义处理器,至少应该包含一个名为main.yml的文件,其他的文件需要在此文件中通过include进行包含。
vars:
定义变量,至少应该包含一个名为main.yml的文件,其他的文件需要在此文件中通过include进行包含。
meta:
定义元数据,至少应该包含一个名为main.yml的文件,定义当前角色的特殊设定及其依赖关系,其他的文件需要在此文件中通过include进行包含。
default:
设定模式变量时使用此目录中的main.yml文件。
2>.playbook调用角色方法
在playbook调用角色方法1: - hosts: web remote_user: root roles: - mysql - memcached - nginx 在playbook调用角色方法2:传递变量给角色 - hosts: web remote_user: root roles: - mysql - memcached - nginx
3>.ansible默认存放路径
[root@node101.yinzhengjie.org.cn ~]# [root@node101.yinzhengjie.org.cn ~]# grep roles_path /etc/ansible/ansible.cfg roles_path = /etc/ansible/roles:/usr/share/ansible/roles [root@node101.yinzhengjie.org.cn ~]# [root@node101.yinzhengjie.org.cn ~]#
二.角色实战案例一
1>.创建初始化目录(所有目录不一定都必须存在,如果用不到对应的功能咱们也可以不创建)
[root@node101.yinzhengjie.org.cn /etc/ansible/roles]# [root@node101.yinzhengjie.org.cn /etc/ansible/roles]# mkdir -pv ./{nginx,tomcat,redis,memcached}/{files,templates,tasks,handlers,vars,meta,default} mkdir: created directory ‘./nginx’ mkdir: created directory ‘./nginx/files’ mkdir: created directory ‘./nginx/templates’ mkdir: created directory ‘./nginx/tasks’ mkdir: created directory ‘./nginx/handlers’ mkdir: created directory ‘./nginx/vars’ mkdir: created directory ‘./nginx/meta’ mkdir: created directory ‘./nginx/default’ mkdir: created directory ‘./tomcat’ mkdir: created directory ‘./tomcat/files’ mkdir: created directory ‘./tomcat/templates’ mkdir: created directory ‘./tomcat/tasks’ mkdir: created directory ‘./tomcat/handlers’ mkdir: created directory ‘./tomcat/vars’ mkdir: created directory ‘./tomcat/meta’ mkdir: created directory ‘./tomcat/default’ mkdir: created directory ‘./redis’ mkdir: created directory ‘./redis/files’ mkdir: created directory ‘./redis/templates’ mkdir: created directory ‘./redis/tasks’ mkdir: created directory ‘./redis/handlers’ mkdir: created directory ‘./redis/vars’ mkdir: created directory ‘./redis/meta’ mkdir: created directory ‘./redis/default’ mkdir: created directory ‘./memcached’ mkdir: created directory ‘./memcached/files’ mkdir: created directory ‘./memcached/templates’ mkdir: created directory ‘./memcached/tasks’ mkdir: created directory ‘./memcached/handlers’ mkdir: created directory ‘./memcached/vars’ mkdir: created directory ‘./memcached/meta’ mkdir: created directory ‘./memcached/default’ [root@node101.yinzhengjie.org.cn /etc/ansible/roles]# [root@node101.yinzhengjie.org.cn /etc/ansible/roles]# tree . . ├── memcached │ ├── default │ ├── files │ ├── handlers │ ├── meta │ ├── tasks │ ├── templates │ └── vars ├── nginx │ ├── default │ ├── files │ ├── handlers │ ├── meta │ ├── tasks │ ├── templates │ └── vars ├── redis │ ├── default │ ├── files │ ├── handlers │ ├── meta │ ├── tasks │ ├── templates │ └── vars └── tomcat ├── default ├── files ├── handlers ├── meta ├── tasks ├── templates └── vars 32 directories, 0 files [root@node101.yinzhengjie.org.cn /etc/ansible/roles]#
2>.编写nginx角色
[root@node101.yinzhengjie.org.cn /etc/ansible/roles]# [root@node101.yinzhengjie.org.cn /etc/ansible/roles]# ll total 0 drwxr-xr-x. 9 root root 97 Mar 9 07:36 memcached drwxr-xr-x. 9 root root 97 Mar 9 07:36 nginx drwxr-xr-x. 9 root root 97 Mar 9 07:36 redis drwxr-xr-x. 9 root root 97 Mar 9 07:36 tomcat [root@node101.yinzhengjie.org.cn /etc/ansible/roles]# [root@node101.yinzhengjie.org.cn /etc/ansible/roles]# tree nginx/ nginx/ ├── default ├── files │ └── index.html ├── handlers │ └── main.yml ├── meta ├── tasks │ └── main.yml ├── templates │ └── server.conf.j2 └── vars └── main.yml 7 directories, 5 files [root@node101.yinzhengjie.org.cn /etc/ansible/roles]# [root@node101.yinzhengjie.org.cn /etc/ansible/roles]# [root@node101.yinzhengjie.org.cn /etc/ansible/roles]#
[root@node101.yinzhengjie.org.cn /etc/ansible/roles]# [root@node101.yinzhengjie.org.cn /etc/ansible/roles]# cat nginx/files/index.html <h1>尹正杰到此一游</h1> [root@node101.yinzhengjie.org.cn /etc/ansible/roles]#
[root@node101.yinzhengjie.org.cn /etc/ansible/roles]# [root@node101.yinzhengjie.org.cn /etc/ansible/roles]# cat nginx/handlers/main.yml - name: reload nginx service: name=nginx state=reloaded [root@node101.yinzhengjie.org.cn /etc/ansible/roles]# [root@node101.yinzhengjie.org.cn /etc/ansible/roles]#
[root@node101.yinzhengjie.org.cn /etc/ansible/roles]# [root@node101.yinzhengjie.org.cn /etc/ansible/roles]# cat nginx/tasks/main.yml - name: install epel-release package yum: name=epel-release state=installed - name: install nginx package yum: name=nginx state=installed - name: create doc root file: path={{ docroot }} state=directory - name: install home page copy: src=index.html dest={{ docroot }}/ - name: install configure file template: src=server.conf.j2 dest=/etc/nginx/conf.d/server.conf notify: reload nginx - name: start nginx service service: name=nginx enabled=true state=started [root@node101.yinzhengjie.org.cn /etc/ansible/roles]# [root@node101.yinzhengjie.org.cn /etc/ansible/roles]#
[root@node101.yinzhengjie.org.cn /etc/ansible/roles]# [root@node101.yinzhengjie.org.cn /etc/ansible/roles]# cat nginx/templates/server.conf.j2 server { listen 7000; server_name {{ ansible_fqdn }} {{ ansible_hostname }}; location / { root {{ docroot }}; index index.jsp index.html; } } [root@node101.yinzhengjie.org.cn /etc/ansible/roles]# [root@node101.yinzhengjie.org.cn /etc/ansible/roles]#
[root@node101.yinzhengjie.org.cn /etc/ansible/roles]# [root@node101.yinzhengjie.org.cn /etc/ansible/roles]# cat nginx/vars/main.yml docroot: /yinzhengjie/data/nginx [root@node101.yinzhengjie.org.cn /etc/ansible/roles]# [root@node101.yinzhengjie.org.cn /etc/ansible/roles]#
3>.编写剧本调用nginx角色
[root@node101.yinzhengjie.org.cn ~/ansible_workshop]# [root@node101.yinzhengjie.org.cn ~/ansible_workshop]# cat nginx.yaml - hosts: all remote_user: root roles: - nginx [root@node101.yinzhengjie.org.cn ~/ansible_workshop]# [root@node101.yinzhengjie.org.cn ~/ansible_workshop]# ansible-playbook --syntax-check nginx.yaml playbook: nginx.yaml [root@node101.yinzhengjie.org.cn ~/ansible_workshop]#
[root@node101.yinzhengjie.org.cn ~/ansible_workshop]# [root@node101.yinzhengjie.org.cn ~/ansible_workshop]# ansible-playbook --check nginx.yaml PLAY [all] ************************************************************************************************************************************************** TASK [Gathering Facts] ************************************************************************************************************************************** ok: [node102.yinzhengjie.org.cn] ok: [node101.yinzhengjie.org.cn] ok: [node103.yinzhengjie.org.cn] TASK [nginx : install epel-release package] ***************************************************************************************************************** ok: [node101.yinzhengjie.org.cn] ok: [node102.yinzhengjie.org.cn] ok: [node103.yinzhengjie.org.cn] TASK [nginx : install nginx package] ************************************************************************************************************************ changed: [node101.yinzhengjie.org.cn] changed: [node102.yinzhengjie.org.cn] changed: [node103.yinzhengjie.org.cn] TASK [nginx : create doc root] ****************************************************************************************************************************** changed: [node101.yinzhengjie.org.cn] changed: [node102.yinzhengjie.org.cn] changed: [node103.yinzhengjie.org.cn] TASK [nginx : install home page] **************************************************************************************************************************** changed: [node103.yinzhengjie.org.cn] changed: [node101.yinzhengjie.org.cn] changed: [node102.yinzhengjie.org.cn] TASK [nginx : install configure file] *********************************************************************************************************************** changed: [node101.yinzhengjie.org.cn] changed: [node102.yinzhengjie.org.cn] changed: [node103.yinzhengjie.org.cn] TASK [nginx : start nginx service] ************************************************************************************************************************** changed: [node103.yinzhengjie.org.cn] changed: [node101.yinzhengjie.org.cn] changed: [node102.yinzhengjie.org.cn] RUNNING HANDLER [nginx : reload nginx] ********************************************************************************************************************** changed: [node101.yinzhengjie.org.cn] changed: [node103.yinzhengjie.org.cn] changed: [node102.yinzhengjie.org.cn] PLAY RECAP ************************************************************************************************************************************************** node101.yinzhengjie.org.cn : ok=8 changed=6 unreachable=0 failed=0 node102.yinzhengjie.org.cn : ok=8 changed=6 unreachable=0 failed=0 node103.yinzhengjie.org.cn : ok=8 changed=6 unreachable=0 failed=0 [root@node101.yinzhengjie.org.cn ~/ansible_workshop]#
[root@node101.yinzhengjie.org.cn ~/ansible_workshop]# [root@node101.yinzhengjie.org.cn ~/ansible_workshop]# ansible-playbook nginx.yaml PLAY [all] ************************************************************************************************************************************************************************ TASK [Gathering Facts] ************************************************************************************************************************************************************ ok: [node101.yinzhengjie.org.cn] ok: [node103.yinzhengjie.org.cn] ok: [node102.yinzhengjie.org.cn] TASK [nginx : install epel-release package] *************************************************************************************************************************************** ok: [node101.yinzhengjie.org.cn] ok: [node103.yinzhengjie.org.cn] ok: [node102.yinzhengjie.org.cn] TASK [nginx : install nginx package] ********************************************************************************************************************************************** ok: [node101.yinzhengjie.org.cn] ok: [node102.yinzhengjie.org.cn] ok: [node103.yinzhengjie.org.cn] TASK [nginx : create doc root] **************************************************************************************************************************************************** ok: [node101.yinzhengjie.org.cn] ok: [node102.yinzhengjie.org.cn] ok: [node103.yinzhengjie.org.cn] TASK [nginx : install home page] ************************************************************************************************************************************************** ok: [node101.yinzhengjie.org.cn] ok: [node102.yinzhengjie.org.cn] ok: [node103.yinzhengjie.org.cn] TASK [nginx : install configure file] ********************************************************************************************************************************************* changed: [node101.yinzhengjie.org.cn] changed: [node102.yinzhengjie.org.cn] changed: [node103.yinzhengjie.org.cn] TASK [nginx : start nginx service] ************************************************************************************************************************************************ ok: [node101.yinzhengjie.org.cn] ok: [node103.yinzhengjie.org.cn] changed: [node102.yinzhengjie.org.cn] RUNNING HANDLER [nginx : reload nginx] ******************************************************************************************************************************************** changed: [node101.yinzhengjie.org.cn] changed: [node102.yinzhengjie.org.cn] changed: [node103.yinzhengjie.org.cn] PLAY RECAP ************************************************************************************************************************************************************************ node101.yinzhengjie.org.cn : ok=8 changed=2 unreachable=0 failed=0 node102.yinzhengjie.org.cn : ok=8 changed=3 unreachable=0 failed=0 node103.yinzhengjie.org.cn : ok=8 changed=2 unreachable=0 failed=0 [root@node101.yinzhengjie.org.cn ~/ansible_workshop]#
[root@node101.yinzhengjie.org.cn ~/ansible_workshop]# [root@node101.yinzhengjie.org.cn ~/ansible_workshop]# [root@node101.yinzhengjie.org.cn ~/ansible_workshop]# ansible all -m shell -a 'ss -ntl | grep 7000' node101.yinzhengjie.org.cn | SUCCESS | rc=0 >> LISTEN 0 128 *:7000 *:* node103.yinzhengjie.org.cn | SUCCESS | rc=0 >> LISTEN 0 128 *:7000 *:* node102.yinzhengjie.org.cn | SUCCESS | rc=0 >> LISTEN 0 128 *:7000 *:* [root@node101.yinzhengjie.org.cn ~/ansible_workshop]# [root@node101.yinzhengjie.org.cn ~/ansible_workshop]# [root@node101.yinzhengjie.org.cn ~/ansible_workshop]# ansible all -m shell -a 'cat /etc/nginx/conf.d/server.conf' node101.yinzhengjie.org.cn | SUCCESS | rc=0 >> server { listen 7000; server_name node101.yinzhengjie.org.cn node101; location / { root /yinzhengjie/data/nginx; index index.jsp index.html; } } node103.yinzhengjie.org.cn | SUCCESS | rc=0 >> server { listen 7000; server_name node103.yinzhengjie.org.cn node103; location / { root /yinzhengjie/data/nginx; index index.jsp index.html; } } node102.yinzhengjie.org.cn | SUCCESS | rc=0 >> server { listen 7000; server_name node102.yinzhengjie.org.cn node102; location / { root /yinzhengjie/data/nginx; index index.jsp index.html; } } [root@node101.yinzhengjie.org.cn ~/ansible_workshop]#
[root@node102.yinzhengjie.org.cn ~]# [root@node102.yinzhengjie.org.cn ~]# curl http://node101.yinzhengjie.org.cn:7000/ <h1>尹正杰到此一游</h1> [root@node102.yinzhengjie.org.cn ~]# [root@node102.yinzhengjie.org.cn ~]# [root@node102.yinzhengjie.org.cn ~]# curl http://node102.yinzhengjie.org.cn:7000/ <h1>尹正杰到此一游</h1> [root@node102.yinzhengjie.org.cn ~]# [root@node102.yinzhengjie.org.cn ~]# curl http://node103.yinzhengjie.org.cn:7000/ <h1>尹正杰到此一游</h1> [root@node102.yinzhengjie.org.cn ~]# [root@node102.yinzhengjie.org.cn ~]#
三.角色实战案例二
1>.备份之前的配置
[root@node101.yinzhengjie.org.cn /etc/ansible/roles]# ll total 0 drwxr-xr-x. 9 root root 97 Mar 9 07:36 memcached drwxr-xr-x. 9 root root 97 Mar 9 07:36 nginx drwxr-xr-x. 9 root root 97 Mar 9 07:36 redis drwxr-xr-x. 9 root root 97 Mar 9 07:36 tomcat [root@node101.yinzhengjie.org.cn /etc/ansible/roles]# [root@node101.yinzhengjie.org.cn /etc/ansible/roles]# [root@node101.yinzhengjie.org.cn /etc/ansible/roles]# cp -a nginx/ /root/ [root@node101.yinzhengjie.org.cn /etc/ansible/roles]#
2>. 编写nginx角色
[root@node101.yinzhengjie.org.cn /etc/ansible/roles/nginx]# [root@node101.yinzhengjie.org.cn /etc/ansible/roles/nginx]# [root@node101.yinzhengjie.org.cn /etc/ansible/roles/nginx]# pwd /etc/ansible/roles/nginx [root@node101.yinzhengjie.org.cn /etc/ansible/roles/nginx]# [root@node101.yinzhengjie.org.cn /etc/ansible/roles/nginx]# ll total 0 drwxr-xr-x. 2 root root 6 Mar 9 07:36 default drwxr-xr-x. 2 root root 23 Mar 9 07:55 files drwxr-xr-x. 2 root root 21 Mar 9 07:54 handlers drwxr-xr-x. 2 root root 6 Mar 9 07:36 meta drwxr-xr-x. 2 root root 21 Mar 9 09:20 tasks drwxr-xr-x. 2 root root 47 Mar 9 09:20 templates drwxr-xr-x. 2 root root 21 Mar 9 08:59 vars [root@node101.yinzhengjie.org.cn /etc/ansible/roles/nginx]# [root@node101.yinzhengjie.org.cn /etc/ansible/roles/nginx]# tree . . ├── default ├── files │ └── index.html ├── handlers │ └── main.yml ├── meta ├── tasks │ └── main.yml ├── templates │ ├── proxy.conf.j2 │ └── server.conf.j2 └── vars └── main.yml 7 directories, 6 files [root@node101.yinzhengjie.org.cn /etc/ansible/roles/nginx]# [root@node101.yinzhengjie.org.cn /etc/ansible/roles/nginx]#
[root@node101.yinzhengjie.org.cn /etc/ansible/roles/nginx]# [root@node101.yinzhengjie.org.cn /etc/ansible/roles/nginx]# cat files/index.html <h1>尹正杰到此一游</h1> [root@node101.yinzhengjie.org.cn /etc/ansible/roles/nginx]# [root@node101.yinzhengjie.org.cn /etc/ansible/roles/nginx]#
[root@node101.yinzhengjie.org.cn /etc/ansible/roles/nginx]# [root@node101.yinzhengjie.org.cn /etc/ansible/roles/nginx]# cat handlers/main.yml - name: reload nginx service: name=nginx state=reloaded [root@node101.yinzhengjie.org.cn /etc/ansible/roles/nginx]# [root@node101.yinzhengjie.org.cn /etc/ansible/roles/nginx]#
[root@node101.yinzhengjie.org.cn /etc/ansible/roles/nginx]# [root@node101.yinzhengjie.org.cn /etc/ansible/roles/nginx]# cat tasks/main.yml - name: install epel-release package yum: name=epel-release state=installed - name: install nginx package yum: name=nginx state=installed - name: create doc root file: path={{ docroot }} state=directory when: servertype == 'web' - name: install home page copy: src=index.html dest={{ docroot }}/ when: servertype == 'web' - name: install web configure file template: src=server.conf.j2 dest=/etc/nginx/conf.d/server.conf when: servertype == 'web' notify: reload nginx - name: install proxy configure file template: src=proxy.conf.j2 dest=/etc/nginx/conf.d/server.conf when: servertype == 'proxy' notify: reload nginx - name: start nginx service service: name=nginx enabled=true state=started [root@node101.yinzhengjie.org.cn /etc/ansible/roles/nginx]#
[root@node101.yinzhengjie.org.cn /etc/ansible/roles/nginx]# [root@node101.yinzhengjie.org.cn /etc/ansible/roles/nginx]# cat templates/proxy.conf.j2 server { listen 7500; server_name {{ ansible_fqdn }} {{ ansible_hostname }}; location / { proxy_pass {{ backendurl }} } } [root@node101.yinzhengjie.org.cn /etc/ansible/roles/nginx]# [root@node101.yinzhengjie.org.cn /etc/ansible/roles/nginx]#
[root@node101.yinzhengjie.org.cn /etc/ansible/roles/nginx]# [root@node101.yinzhengjie.org.cn /etc/ansible/roles/nginx]# cat templates/server.conf.j2 server { listen 7000; server_name {{ ansible_fqdn }} {{ ansible_hostname }}; location / { root {{ docroot }}; index index.jsp index.html; } } [root@node101.yinzhengjie.org.cn /etc/ansible/roles/nginx]# [root@node101.yinzhengjie.org.cn /etc/ansible/roles/nginx]#
[root@node101.yinzhengjie.org.cn /etc/ansible/roles/nginx]# [root@node101.yinzhengjie.org.cn /etc/ansible/roles/nginx]# cat vars/main.yml servertype: web backendurl: 'http:node101.yinzhengjie.org.cn:8080/' docroot: /yinzhengjie/data/nginx [root@node101.yinzhengjie.org.cn /etc/ansible/roles/nginx]#
3>.编写剧本调用nginx角色
[root@node101.yinzhengjie.org.cn ~/ansible_workshop]# [root@node101.yinzhengjie.org.cn ~/ansible_workshop]# cat /etc/ansible/hosts [web] node[101:102].yinzhengjie.org.cn [tomcat] node101.yinzhengjie.org.cn [root@node101.yinzhengjie.org.cn ~/ansible_workshop]# [root@node101.yinzhengjie.org.cn ~/ansible_workshop]# cat nginx-v2.yaml - hosts: tomcat remote_user: root roles: - { role: nginx, servertype=proxy } - hosts: web remote_user: root roles: - nginx [root@node101.yinzhengjie.org.cn ~/ansible_workshop]# [root@node101.yinzhengjie.org.cn ~/ansible_workshop]#
[root@node101.yinzhengjie.org.cn ~/ansible_workshop]# [root@node101.yinzhengjie.org.cn ~/ansible_workshop]# ansible-playbook --check nginx-v2.yaml PLAY [tomcat] ********************************************************************************************************************************************************************* TASK [Gathering Facts] ************************************************************************************************************************************************************ ok: [node101.yinzhengjie.org.cn] TASK [nginx : install epel-release package] *************************************************************************************************************************************** ok: [node101.yinzhengjie.org.cn] TASK [nginx : install nginx package] ********************************************************************************************************************************************** ok: [node101.yinzhengjie.org.cn] TASK [nginx : create doc root] **************************************************************************************************************************************************** ok: [node101.yinzhengjie.org.cn] TASK [nginx : install home page] ************************************************************************************************************************************************** ok: [node101.yinzhengjie.org.cn] TASK [nginx : install web configure file] ***************************************************************************************************************************************** ok: [node101.yinzhengjie.org.cn] TASK [nginx : install proxy configure file] *************************************************************************************************************************************** skipping: [node101.yinzhengjie.org.cn] TASK [nginx : start nginx service] ************************************************************************************************************************************************ ok: [node101.yinzhengjie.org.cn] PLAY [web] ************************************************************************************************************************************************************************ TASK [Gathering Facts] ************************************************************************************************************************************************************ ok: [node101.yinzhengjie.org.cn] ok: [node102.yinzhengjie.org.cn] TASK [nginx : install epel-release package] *************************************************************************************************************************************** ok: [node101.yinzhengjie.org.cn] ok: [node102.yinzhengjie.org.cn] TASK [nginx : install nginx package] ********************************************************************************************************************************************** ok: [node101.yinzhengjie.org.cn] ok: [node102.yinzhengjie.org.cn] TASK [nginx : create doc root] **************************************************************************************************************************************************** ok: [node101.yinzhengjie.org.cn] ok: [node102.yinzhengjie.org.cn] TASK [nginx : install home page] ************************************************************************************************************************************************** ok: [node101.yinzhengjie.org.cn] ok: [node102.yinzhengjie.org.cn] TASK [nginx : install web configure file] ***************************************************************************************************************************************** ok: [node101.yinzhengjie.org.cn] ok: [node102.yinzhengjie.org.cn] TASK [nginx : install proxy configure file] *************************************************************************************************************************************** skipping: [node101.yinzhengjie.org.cn] skipping: [node102.yinzhengjie.org.cn] TASK [nginx : start nginx service] ************************************************************************************************************************************************ ok: [node101.yinzhengjie.org.cn] ok: [node102.yinzhengjie.org.cn] PLAY RECAP ************************************************************************************************************************************************************************ node101.yinzhengjie.org.cn : ok=14 changed=0 unreachable=0 failed=0 node102.yinzhengjie.org.cn : ok=7 changed=0 unreachable=0 failed=0 [root@node101.yinzhengjie.org.cn ~/ansible_workshop]# [root@node101.yinzhengjie.org.cn ~/ansible_workshop]#
[root@node101.yinzhengjie.org.cn ~/ansible_workshop]# [root@node101.yinzhengjie.org.cn ~/ansible_workshop]# ansible-playbook nginx-v2.yaml PLAY [tomcat] ********************************************************************************************************************************************************************* TASK [Gathering Facts] ************************************************************************************************************************************************************ ok: [node101.yinzhengjie.org.cn] TASK [nginx : install epel-release package] *************************************************************************************************************************************** ok: [node101.yinzhengjie.org.cn] TASK [nginx : install nginx package] ********************************************************************************************************************************************** ok: [node101.yinzhengjie.org.cn] TASK [nginx : create doc root] **************************************************************************************************************************************************** ok: [node101.yinzhengjie.org.cn] TASK [nginx : install home page] ************************************************************************************************************************************************** ok: [node101.yinzhengjie.org.cn] TASK [nginx : install web configure file] ***************************************************************************************************************************************** changed: [node101.yinzhengjie.org.cn] TASK [nginx : install proxy configure file] *************************************************************************************************************************************** skipping: [node101.yinzhengjie.org.cn] TASK [nginx : start nginx service] ************************************************************************************************************************************************ ok: [node101.yinzhengjie.org.cn] RUNNING HANDLER [nginx : reload nginx] ******************************************************************************************************************************************** changed: [node101.yinzhengjie.org.cn] PLAY [web] ************************************************************************************************************************************************************************ TASK [Gathering Facts] ************************************************************************************************************************************************************ ok: [node101.yinzhengjie.org.cn] ok: [node102.yinzhengjie.org.cn] TASK [nginx : install epel-release package] *************************************************************************************************************************************** ok: [node101.yinzhengjie.org.cn] ok: [node102.yinzhengjie.org.cn] TASK [nginx : install nginx package] ********************************************************************************************************************************************** ok: [node101.yinzhengjie.org.cn] ok: [node102.yinzhengjie.org.cn] TASK [nginx : create doc root] **************************************************************************************************************************************************** ok: [node101.yinzhengjie.org.cn] ok: [node102.yinzhengjie.org.cn] TASK [nginx : install home page] ************************************************************************************************************************************************** ok: [node101.yinzhengjie.org.cn] ok: [node102.yinzhengjie.org.cn] TASK [nginx : install web configure file] ***************************************************************************************************************************************** ok: [node101.yinzhengjie.org.cn] changed: [node102.yinzhengjie.org.cn] TASK [nginx : install proxy configure file] *************************************************************************************************************************************** skipping: [node101.yinzhengjie.org.cn] skipping: [node102.yinzhengjie.org.cn] TASK [nginx : start nginx service] ************************************************************************************************************************************************ ok: [node101.yinzhengjie.org.cn] ok: [node102.yinzhengjie.org.cn] RUNNING HANDLER [nginx : reload nginx] ******************************************************************************************************************************************** changed: [node102.yinzhengjie.org.cn] PLAY RECAP ************************************************************************************************************************************************************************ node101.yinzhengjie.org.cn : ok=15 changed=2 unreachable=0 failed=0 node102.yinzhengjie.org.cn : ok=8 changed=2 unreachable=0 failed=0 [root@node101.yinzhengjie.org.cn ~/ansible_workshop]# [root@node101.yinzhengjie.org.cn ~/ansible_workshop]#
[root@node101.yinzhengjie.org.cn ~/ansible_workshop]# [root@node101.yinzhengjie.org.cn ~/ansible_workshop]# ansible all -m shell -a 'cat /etc/nginx/conf.d/server.conf' node101.yinzhengjie.org.cn | SUCCESS | rc=0 >> server { listen 7000; server_name node101.yinzhengjie.org.cn node101; location / { root /yinzhengjie/data/nginx; index index.jsp index.html; } } node103.yinzhengjie.org.cn | FAILED | rc=1 >> cat: /etc/nginx/conf.d/server.conf: No such file or directorynon-zero return code node102.yinzhengjie.org.cn | SUCCESS | rc=0 >> server { listen 7000; server_name node102.yinzhengjie.org.cn node102; location / { root /yinzhengjie/data/nginx; index index.jsp index.html; } } [root@node101.yinzhengjie.org.cn ~/ansible_workshop]# [root@node101.yinzhengjie.org.cn ~/ansible_workshop]# [root@node101.yinzhengjie.org.cn ~/ansible_workshop]# cat /etc/ansible/hosts node[101:103].yinzhengjie.org.cn [web] node[101:102].yinzhengjie.org.cn [tomcat] node101.yinzhengjie.org.cn [root@node101.yinzhengjie.org.cn ~/ansible_workshop]# [root@node101.yinzhengjie.org.cn ~/ansible_workshop]#
角色的使用就介绍到这里了,其实我们可以用角色可以干很多我们想要干的事情,比如:设定基于msm的tomcat集群的角色,为tomcat部署应用,每个节点本地使用nginx发现代理,所有节点前端有一个nginx负载均衡器等等之类的!感兴趣的小伙伴可以自行测试~