目录
在Ansible中,roles是一种组织和复用任务和变量的方式。Roles是一种可重用的模块化结构,用于将相关的任务、变量和处理逻辑组合在一起,以便在不同的剧本(playbook)中重复使用。
通过使用roles,可以将复杂的任务分解成更小的、可管理的部分,并使剧本更具可读性和可维护性。Roles还可以促进代码的复用,因为可以将角色在不同的剧本中重复使用。
一个role通常由以下组成:
1. 任务(tasks):包含要执行的操作步骤。这些任务可以是与特定角色相关的任何操作,例如安装软件、配置文件、启动服务等。
2. 变量(vars):存储角色所需的变量。这些变量可以在角色的任务中使用,以根据不同的需求进行自定义。
3. 文件(files):包含角色所需的文件。这些文件可以是配置文件、脚本文件等。
4. 模板(templates):包含用于生成配置文件等的模板文件。模板文件通常包含一些可自定义的变量,以便在生成文件时根据需要进行替换。
5. 处理器(handlers):定义角色相关的处理程序,用于在特定事件发生时触发操作。例如,在配置文件更改后重新启动服务。
通过将相关的任务、变量和文件组织在一起,roles提供了一种结构化的方式来管理和组织复杂的配置和部署任务。它们使剧本更易于编写、理解和维护,并促进了在不同的剧本中重用和分享配置和部署逻辑。
- roles/
- ├── role_name/ # role的名称
- │ ├── defaults/ # 存放变量默认值的目录
- │ │ └── main.yml # 变量默认值文件
- │ ├── tasks/ # 存放任务文件的目录
- │ │ └── main.yml # 任务文件
- │ ├── templates/ # 存放模板文件的目录
- │ │ └── template.j2 # 模板文件
- │ ├── vars/ # 存放特定角色变量的目录
- │ │ └── main.yml # 特定角色变量文件
- │ ├── handlers/ # 存放处理器文件的目录
- │ │ └── main.yml # 处理器文件
- │ ├── files/ # 存放文件的目录
- │ │ └── file.txt # 文件
- │ ├── meta/ # 存放描述文件的目录
- │ │ └── main.yml # 描述文件
- │ └── README.md # role的说明文件
- └── playbook.yml # 包含roles的Playbook文件
实验环境:
192.168.115.148 : 安装ansible、部署LAMP
192.168.115.149 : 部署LAMP
192.168.115.151 : 部署LAMP
- cd /etc/ansible/roles/
- mkdir -p {httpd,mysql,php}/{files,tasks,handlers,templates,vars,meta}
- touch {httpd,mysql,php}/{tasks,handlers,vars,meta}/main.yml
- tree
- ######################################################################
- [root@localhost roles]# tree
- .
- ├── http
- │ ├── files
- │ ├── handlers
- │ ├── meta
- │ ├── tasks
- │ ├── templates
- │ └── vars
- ├── mysql
- │ ├── files
- │ ├── handlers
- │ ├── meta
- │ ├── tasks
- │ ├── templates
- │ └── vars
- └── php
- ├── files
- ├── handlers
- ├── meta
- ├── tasks
- ├── templates
- └── vars
- vim /etc/index.php
- phpinfo();
- ?>
- vim /etc/anseble/roles/http/tasks/mian/yml
- ---
- - name: 安装httpd
- yum: name=httpd state=present
- - name: 分发php测试页面
- copy: src=/index.php dest=/var/www/html/index.php
- - name: 启动httpd、设为开机自启
- service: name=httpd state=started enabled=yes
-
-
- vim /etc/ansible/roles/http/hardlers/mian.yml
- ---
- - name: restart httpd
- shell: systemctl restart httpd
- vim /etc/ansible/roles/mysql/tasks/main.yml
- ---
- - name: 安装mysql
- shell: yum -y install mariadb mariadb-server
- - name: 启动mariadb,并设为开机自启
- service: name=mariadb state=started enabled=yes
5、编写php角色的main.yml文件
- vim /etc/ansible/roles/php/tasks/main.yml
- ---
- - name: 安装php及依赖包
- yum: name=php,php-gd,php-ldap,php-odbc,php-pear,php-xml,php-xmlrpc,php-mbstring,php-snmp,php-soap,curl,curl-devel,php-bcmath,php-mysql state=present
- notify: restart httpd
-
-
- vim /etc/ansible/roles/php/hardlers/mian.yml
- ---
- - name: restart httpd
- shell: systemctl restart httpd
- vim /etc/ansible/lamp.yml
- ---
- - hosts: group
- remote_user: root
- roles:
- - http
- - mysql
- - php
ansible-playbook /etc/ansible/lapm.yml
执行结果




