9,ansible9

Ansible角色 roles:
[root@centos7 ~]# tree demo2/
demo2/
├── fooservers.yml
├── hosts
├── roles
│   ├── common
│   │   ├── defaults
│   │   ├── files
│   │   ├── handlers
│   │   ├── meta
│   │   ├── tasks
│   │   ├── templates
│   │   └── vars
│   └── webservers
│       ├── files
│       ├── handlers
│       ├── tasks
│       ├── templates
│       └── vars
├── site.yml
└── webservers.yml

15 directories, 4 files
[root@centos7 ~]# 


tasks		- 包含角色要执行的主要任务列表
handlers	- 包含角色使用的处理程序
defaults	- 角色默认的变量
vars		- 角色其他的变量
files		- 角色部署时用到的文件
templates	- 角色部署时用到的模板
meta		- 角色定义的一些元数据








[root@centos7 ~]# cd demo/
[root@centos7 demo]# 
[root@centos7 demo]# 
[root@centos7 demo]# 
[root@centos7 demo]# ll
total 8
-rw-r--r--. 1 root root 161 Nov  9 21:13 hosts
drwxr-xr-x. 5 root root  44 Nov  9 21:08 roles
-rw-r--r--. 1 root root  87 Nov  9 21:14 site.yml
[root@centos7 demo]# 
[root@centos7 demo]# 
[root@centos7 demo]# 
[root@centos7 demo]# tree .
.
├── hosts
├── roles
│   ├── common
│   │   ├── files
│   │   ├── handlers
│   │   ├── tasks
│   │   │   └── main.yml
│   │   └── templates
│   ├── nginx
│   │   ├── files
│   │   ├── handlers
│   │   ├── tasks
│   │   │   └── main.yml
│   │   └── templates
│   └── php
│       ├── files
│       ├── handlers
│       ├── tasks
│       │   └── main.yml
│       └── templates
└── site.yml

16 directories, 5 files
[root@centos7 demo]# 
[root@centos7 demo]# 
[root@centos7 demo]# ll
total 8
-rw-r--r--. 1 root root 161 Nov  9 21:13 hosts
drwxr-xr-x. 5 root root  44 Nov  9 21:08 roles
-rw-r--r--. 1 root root  87 Nov  9 21:14 site.yml
[root@centos7 demo]# 
[root@centos7 demo]# cat roles/common/tasks/main.yml 
- name: common task test
  debug: msg="common task test"
[root@centos7 demo]# 
[root@centos7 demo]# 
[root@centos7 demo]# cat roles/nginx/tasks/main.yml 
- name: nginx task test
  debug: msg="nginx task test"
[root@centos7 demo]# 
[root@centos7 demo]# 
[root@centos7 demo]# 
[root@centos7 demo]# cat roles/php/tasks/main.yml 
- name: php task test
  debug: msg="php task test"
[root@centos7 demo]# 
[root@centos7 demo]# ansible-playbook site.yml  --syntax-check

playbook: site.yml
[root@centos7 demo]# 
[root@centos7 demo]# ansible-playbook site.yml  -i hosts 

PLAY [webservers] ********************************************************************************************************************************************************************************

TASK [common task test] **************************************************************************************************************************************************************************
ok: [192.168.0.12] => {
    "msg": "common task test"
}
ok: [192.168.0.13] => {
    "msg": "common task test"
}

TASK [nginx task test] ***************************************************************************************************************************************************************************
ok: [192.168.0.12] => {
    "msg": "nginx task test"
}
ok: [192.168.0.13] => {
    "msg": "nginx task test"
}

TASK [php task test] *****************************************************************************************************************************************************************************
ok: [192.168.0.12] => {
    "msg": "php task test"
}
ok: [192.168.0.13] => {
    "msg": "php task test"
}

PLAY RECAP ***************************************************************************************************************************************************************************************
192.168.0.12               : ok=3    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
192.168.0.13               : ok=3    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

[root@centos7 demo]# 


Roles基本使用:
角色的变量的使用:
方法一:
[root@centos7 ~]# tree demo
demo
├── hosts
├── roles
│   ├── common
│   │   ├── files
│   │   ├── handlers
│   │   ├── tasks
│   │   │   └── main.yml
│   │   └── templates
│   ├── nginx
│   │   ├── files
│   │   ├── handlers
│   │   ├── tasks
│   │   │   └── main.yml
│   │   └── templates
│   └── php
│       ├── files
│       ├── handlers
│       ├── tasks
│       │   └── main.yml
│       └── templates
└── site.yml

16 directories, 5 files
[root@centos7 ~]# 
[root@centos7 ~]# cat demo/roles/nginx/tasks/main.yml 
- name: nginx task test
  debug: msg="nginx task test --> {{dir}} -->{{app_port}}"
[root@centos7 ~]# 
[root@centos7 ~]# cat demo/roles/php/tasks/main.yml 
- name: php task test
  debug: msg="php task test --> {{dir}} -->{{app_port}}"
[root@centos7 ~]# 
[root@centos7 ~]# cat demo/site.yml 
---
- hosts: webservers
  gather_facts: no
  roles:
    - role: common
    - role: nginx
      vars:
        dir: /opt/a
        app_port: 80
    - role: php
      vars:
        dir: /opt/b
        app_port: 81
[root@centos7 ~]# 
[root@centos7 ~]# ansible-playbook demo/site.yml --syntax-check

playbook: demo/site.yml
[root@centos7 ~]# 
[root@centos7 ~]# ansible-playbook demo/site.yml

PLAY [webservers] ********************************************************************************************************************************************************************************

TASK [common task test] **************************************************************************************************************************************************************************
ok: [192.168.0.12] => {
    "msg": "common task test"
}
ok: [192.168.0.13] => {
    "msg": "common task test"
}

TASK [nginx task test] ***************************************************************************************************************************************************************************
ok: [192.168.0.12] => {
    "msg": "nginx task test --> /opt/a -->80"
}
ok: [192.168.0.13] => {
    "msg": "nginx task test --> /opt/a -->80"
}

TASK [php task test] *****************************************************************************************************************************************************************************
ok: [192.168.0.12] => {
    "msg": "php task test --> /opt/b -->81"
}
ok: [192.168.0.13] => {
    "msg": "php task test --> /opt/b -->81"
}

PLAY RECAP ***************************************************************************************************************************************************************************************
192.168.0.12               : ok=3    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
192.168.0.13               : ok=3    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

[root@centos7 ~]# 



方法二:
在demo/下创建group_vars目录,在该目录下创建文件,如果该文件名为webservers
则该文件中的变量是给hosts文件中webservers主机组的主机使用的,如果该文件名为all,则所有的主机都可以使用。
[root@centos7 demo]# ll
total 8
drwxr-xr-x. 2 root root  17 Nov  9 21:56 group_vars
-rw-r--r--. 1 root root 161 Nov  9 21:13 hosts
drwxr-xr-x. 5 root root  44 Nov  9 21:08 roles
-rw-r--r--. 1 root root 211 Nov  9 21:48 site.yml
[root@centos7 demo]# 
[root@centos7 demo]# 
[root@centos7 demo]# 
[root@centos7 demo]# tree group_vars/
group_vars/
└── all

0 directories, 1 file
[root@centos7 demo]# 

  

posted @ 2020-11-19 00:14  pwcc  阅读(91)  评论(0)    收藏  举报