官网的网站设计公司,沈阳网站搜索排名,流媒体视频网站开发,珠海专业网站制作公司roles用于层次性#xff0c;结构化地组织playbook#xff0c;roles能够根据层次型结构自动装载变量文件#xff0c;tasks以及handlers等。要使用只要载playbook中使用include指令引入即可。
#xff08;roles就是通过分别将变量#xff0c;文件#xff0c;任务#xff…roles用于层次性结构化地组织playbookroles能够根据层次型结构自动装载变量文件tasks以及handlers等。要使用只要载playbook中使用include指令引入即可。
roles就是通过分别将变量文件任务模板及处理器防置于单独的目录中。用要用于代码复用
角色就是palybook里面按照模块分离出来放到roles目录
roles内各目录含义解释
files用来存放有copy模块或script模块调用的文件。
temlates用来存放jinjia2模块template模块会自动在此目录中寻找jinjia2模块文件
tasks此目录因该包含一个main.yml文件用于定义此角色的任务的任务列表此文件可以使用include包含其他位于此目录的task文件。
roles的目录结构 #http mysql和php相当于playbook中的每个play主题
//roles 内各目录含义解释 ●files 用来存放由 copy 模块或 script 模块调用的文件。
●templates 用来存放 jinjia2 模板template 模块会自动在此目录中寻找 jinjia2 模板文件。
●tasks 此目录应当包含一个 main.yml 文件用于定义此角色的任务列表此文件可以使用 include 包含其它的位于此目录的 task 文件。
●handlers 此目录应当包含一个 main.yml 文件用于定义此角色中触发条件时执行的动作。
●vars 此目录应当包含一个 main.yml 文件用于定义此角色用到的变量。
●defaults 此目录应当包含一个 main.yml 文件用于为当前角色设定默认变量。 这些变量具有所有可用变量中最低的优先级并且可以很容易地被任何其他变量覆盖。所以生产中我们一般不在这里定义变量●meta 此目录应当包含一个 main.yml 文件用于定义此角色的元数据信息及其依赖关系。
在一个 playbook 中使用 roles 的步骤 1创建以 roles 命名的目录 mkdir /etc/ansible/roles/ -p #yum装完默认就有
2创建全局变量目录可选 mkdir /etc/ansible/group_vars/ -p touch /etc/ansible/group_vars/all #文件名自己定义引用的时候注意
3在 roles 目录中分别创建以各角色名称命名的目录如 httpd、mysql mkdir /etc/ansible/roles/httpd mkdir /etc/ansible/roles/mysql
4在每个角色命名的目录中分别创建files、handlers、tasks、templates、meta、defaults和vars目录用不到的目录可以创建为空目录也可以不创建 mkdir /etc/ansible/roles/httpd/{files,templates,tasks,handlers,vars,defaults,meta} mkdir /etc/ansible/roles/mysql/{files,templates,tasks,handlers,vars,defaults,meta}
5在每个角色的 handlers、tasks、meta、defaults、vars 目录下创建 main.yml 文件千万不能自定义文件名 touch /etc/ansible/roles/httpd/{defaults,vars,tasks,meta,handlers}/main.yml touch /etc/ansible/roles/mysql/{defaults,vars,tasks,meta,handlers}/main.yml
6修改 site.yml 文件针对不同主机去调用不同的角色 vim /etc/ansible/site.yml --- - hosts: webservers remote_user: root roles: - httpd - hosts: dbservers remote_user: root roles: - mysql 7运行 ansible-playbook cd /etc/ansible ansible-playbook site.yml 示例 mkdir /etc/ansible/roles/httpd/{files,templates,tasks,handlers,vars,defaults,meta} -p mkdir /etc/ansible/roles/mysql/{files,templates,tasks,handlers,vars,defaults,meta} -p mkdir /etc/ansible/roles/php/{files,templates,tasks,handlers,vars,defaults,meta} -p
touch /etc/ansible/roles/httpd/{defaults,vars,tasks,meta,handlers}/main.yml touch /etc/ansible/roles/mysql/{defaults,vars,tasks,meta,handlers}/main.yml touch /etc/ansible/roles/php/{defaults,vars,tasks,meta,handlers}/main.yml
------编写httpd模块------ 写一个简单的tasks/main.yml vim /etc/ansible/roles/httpd/tasks/main.yml - name: install apache yum: name{{pkg}} statelatest - name: start apache service: enabledtrue name{{svc}} statestarted //定义变量可以定义在全局变量中也可以定义在roles角色变量中一般定义在角色变量中 vim /etc/ansible/roles/httpd/vars/main.yml pkg: httpd svc: httpd
-------编写mysql模块------- vim /etc/ansible/roles/mysql/tasks/main.yml - name: install mysql yum: name{{pkg}} statelatest - name: start mysql service: enabledtrue name{{svc}} statestarted vim /etc/ansible/roles/mysql/vars/main.yml pkg: - mariadb - mariadb-server svc: mariadb
-------编写php模块----- vim /etc/ansible/roles/php/tasks/main.yml - name: install php yum: name{{pkg}} statelatest - name: start php-fpm service: enabledtrue name{{svc}} statestarted
vim /etc/ansible/roles/php/vars/main.yml pkg: - php - php-fpm svc: php-fpm
-----编写roles示例----- vim /etc/ansible/site.yml --- - hosts: webservers remote_user: root roles: - httpd - mysql - php cd /etc/ansible ansible-playbook site.yml