Linux之ansible的角色基本使用

Posted 江湖有缘

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux之ansible的角色基本使用相关的知识,希望对你有一定的参考价值。

Linux之ansible的角色基本使用

一、测试ansible的连通性

[root@192 ~]# ansible all -m ping
192.168.200.135 | SUCCESS => 
    "ansible_facts": 
        "discovered_interpreter_python": "/usr/libexec/platform-python"
    , 
    "changed": false, 
    "ping": "pong"

192.168.200.136 | SUCCESS => 
    "ansible_facts": 
        "discovered_interpreter_python": "/usr/libexec/platform-python"
    , 
    "changed": false, 
    "ping": "pong"

192.168.200.133 | SUCCESS => 
    "ansible_facts": 
        "discovered_interpreter_python": "/usr/libexec/platform-python"
    , 
    "changed": false, 
    "ping": "pong"


二、创建角色的各级目录

1.新建角色目录

 mkdir -p /ansible/roles
mkdir -p /ansible/roles/webserver

2.新增webserver的下各级目录

[root@192 ~]# cd /ansible/roles/webserver/
[root@192 webserver]# 
[root@192 webserver]# mkdir files
[root@192 webserver]# mkdir handlers
[root@192 webserver]# mkdir meta
[root@192 webserver]# mkdir tasks
[root@192 webserver]# mkdir teamplates
[root@192 webserver]# mkdir vars
[root@192 webserver]# 

3.各级目录的解释

role的基本构成——
◆files: 用于存放一些非模板文件的文件,如https证书等。
tempaltes:用于存放角色相关的Jinja2模板文件,当使用角色相关的模板时,如未明确指定模板路径,
则默认使用此目录中的模板
◆tasks: 角色所要执行的所有任务文件都存放于此,包含一个主文件main.yml,可以在主文件中通过
include的方式引|入其他任务文件
◆handlers: 用于定义角色中需要调用的handlers, 包含-一个主配置文件main.yml,可通过include引入
其他的handlers文件。
◆vars: 用于定义此角色用到的变量,包含一 个主文件main.yml
◆meta:用于存储角色的元数据信息,这些元数据用于描述角色的相关属性,包括作者,角色的主要作用,
角色的依赖关系等。默认这些信息会写入到当前目录下的main.ym|文件中
◆defaults: 除了vars目录,defaults 目录也用于定义此角色用到的变量,与vars不同的是, defaults中定
义的变量的优先级最低。

三、创建httpd相关文件

1.创建/ansible/roles/webserver/tasks下相关文件

[root@192 webserver]# cat tasks/main.yml 
---
- name: create apache group
  group: name=apache system=yes gid=80
- name: create apache user
  user: name=apache system=yes shell=/sbin/nologin home=/var/www/ uid=80 group=apache


- name: install httpd package
  yum: name=httpd

- name: config file
  copy: src=httpd.conf dest=/etc/httpd/conf/ backup=yes
  notify: restart

- name: index.html
  copy: src=index.html dest=/var/www/html/

- name: start service
  service: name=httpd state=started enabled=yes

2.创建 /ansible/roles/webserver/handlers/main.yml

[root@192 tasks]# cat /ansible/roles/webserver/handlers/main.yml 
- name: restart
  service: name=httpd state=restarted

3.创建 /ansible/roles/webserver/files下文件

[root@192 webserver]# cat files/index.html 
<h1>  Welcome to http website </h1>
[root@192 webserver]# cp /etc/httpd/conf/httpd.conf files/httpd.conf
[root@192 webserver]# 

四、调用角色

[root@192 webserver]# cat /ansible/httpd.yml 
---
# httpd role
- hosts: webserver
  name: install httpd
  remote_user: root

  roles:
     -  webserver

五、目录结构

[root@192 tasks]# tree /ansible/
/ansible/
├── httpd.yml
└── role
    └── webserver
        ├── files
        │   ├── httpd.conf
        │   └── index.html
        ├── handlers
        │   └── main.yml
        ├── meta
        ├── tasks
        │   └── main.yml
        ├── teamplates
        ├── vars
        └── vim

六、运行yaml

[root@192 ansible]# ansible-playbook -C httpd.yml 

PLAY [install httpd] *********************************************************************************************************************************************************************

TASK [Gathering Facts] *******************************************************************************************************************************************************************
ok: [192.168.200.133]
ok: [192.168.200.135]
ok: [192.168.200.136]

TASK [webserver : create apache group] ***************************************************************************************************************************************************
changed: [192.168.200.135]
changed: [192.168.200.136]
changed: [192.168.200.133]

TASK [webserver : create apache user] ****************************************************************************************************************************************************
changed: [192.168.200.133]
changed: [192.168.200.136]
changed: [192.168.200.135]

TASK [webserver : install httpd package] *************************************************************************************************************************************************
changed: [192.168.200.133]
changed: [192.168.200.135]
changed: [192.168.200.136]

TASK [webserver : config file] ***********************************************************************************************************************************************************
changed: [192.168.200.135]
changed: [192.168.200.136]
changed: [192.168.200.133]

TASK [webserver : index.html] ************************************************************************************************************************************************************
changed: [192.168.200.133]
changed: [192.168.200.135]
changed: [192.168.200.136]

TASK [webserver : start service] *******************************************************************************************************************************Linux九阴真经之九阴白骨爪残卷5(ansible用法二之template及roles 角色)

Linux系统之Ansible的基本介绍

Ansible之Roles角色

Ansible 之 roles使用

Linux九阴真经之九阴白骨爪残卷5(ansible用法二之Playbook和YAML语法)

Ansible自动化部署之ROLES